http://homepage.cs.uiowa.edu/~hzhang/c31/ch09-probs.pdf私は有向グラフのDFSに取り組んでいます、どのようにエッジを指さずにノードに到達するのですか?
問題は上記のPDFの9.2です。私はそれがノードから離れて指された辺しか持たないので、ノードEにどのように到達するのか混乱しています。ノードEに何も指されていません。 私は助けに感謝します。
http://homepage.cs.uiowa.edu/~hzhang/c31/ch09-probs.pdf私は有向グラフのDFSに取り組んでいます、どのようにエッジを指さずにノードに到達するのですか?
問題は上記のPDFの9.2です。私はそれがノードから離れて指された辺しか持たないので、ノードEにどのように到達するのか混乱しています。ノードEに何も指されていません。 私は助けに感謝します。
すべてのノードをDFSでトラバースする場合は、各ノードごとに反復し、ノードがアクセスされているかどうかを確認し、そのノードを使用してDFSを開始する必要があります。
procedure DFS(G,v):
label v as discovered
for all edges from v to w in G.adjacentEdges(v) do
if vertex w is not labeled as discovered then
recursively call DFS(G,w)
procedure traverse_by_DFS(G):
for v in G:
if v is dicovered:
continue
DFS(G, v)
これはおもしろい質問です。あなたはノードAから始める必要があるので、ノードEを押すことはありません。これは真のルートではない開始ノードが与えられた場合の効果です。結果として、完全なトラバーサルが得られます。
だから、私の木のエッジは、その後、私はE> Aの私の最後のツリーエッジを取得するにはDFS(G、E)への再帰呼び出しになるだろう、> B> F> D> Cを行くだろうか? DFSの最初の呼び出しの後、私はe以外のすべての頂点に遭遇しました。 –
@ KyleDenHartog週に接続されたグラフ内のすべてのノードをトラバースする場合は、すべてのノードを反復してアクセスするかどうかをチェックする必要があります。参照はあります。https://www.csd.uoc.gr/~hy583/reviewed_notes/dfs_dags.pdf –
@KyleDenHartog DFSを使用すると、強いグラフになっているかどうかを確認できます。例のように、ノードeにはエッジがありません。他のノードから開始すると、1つのDFS内で永久にノードeにアクセスすることはありません。 –