再帰的DFSでは、ノードをWHITE
,GRAY
およびBLACK
のように塗りつぶして、サイクルを検出することができます(here)。DFSの反復バージョンを使用して有向グラフのサイクルを検出する方法はありますか?
DFS検索中にGRAY
ノードが検出された場合、サイクルが存在します。
質問:DFSのこの反復バージョンでノードをGRAY
とBLACK
と表示するのはいつですか? DFS
で
1 procedure DFS-iterative(G,v):
2 let S be a stack
3 S.push(v)
4 while S is not empty
5 v = S.pop()
6 if v is not labeled as discovered:
7 label v as discovered
8 for all edges from v to w in G.adjacentEdges(v) do
9 S.push(w)