3

DFSとBFSの実装では、CLRSの作者はグレー、ブラック、ホワイトの各頂点ごとに3色を区別します。私は黒と白がノードが訪問されたかどうかを示していることを理解しています。なぜ灰色を必要としますか?DFSでグレー色を、CLRSでBFSを実装する目的は何ですか?

私の推測ではサイクルを検出することになりますが、黒色のサイクルを検出することは可能ですか?&白(つまり、グレーなし)?

答えて

5

主な理由は、読者が概念をよりよく理解できるようにすることです。しかし、実際にはグレーのノードを使用するいくつかのアルゴリズムがあります。たとえば、有向グラフのサイクルを見つけるためにはグレーノードが必要です。ブラックのネイバーはサイクルを示しておらず、グレーの近隣はサイクルを作成しています。

A->B, B->C, A->C 

A->CCが黒であるにもかかわらずサイクルを作成できません。

関連する問題