Depth First Searchの擬似コードは、私の特定の問題にどのように関係しているか完全に混乱しています。私は、有向グラフが強く接続されているかどうかを判断しようとしています。DictでのPython Depth First Search
Iは、2列(最初のソースを表し、第二の宛先を表す)とエッジの重みを表す任意数の辞書がある場合:
{'Austin': {'Houston': 300}, 'SanFrancisco': {'Albany': 1000}, 'NewYorkCity': { 'SanDiego': True }}
どのようにの要素のいくつかを実装することができるがDFS?私は頂点「オースティン」から始めることができ、「ヒューストン」は別の頂点であることを知っています。私は私が私のスタートとして「オースティン」を渡すことができていることがわかります
function graph_DFS(start):
# Input: start vertex
S = new Stack()
# Mark start as visited
S.push(start)
while S is not empty:
node = S.pop()
# Do something? (e.g. print)
for neighbor in node’s adjacent nodes:
if neighbor not visited:
# Mark neighbor as visited
S.push(neighbor)
:しかし、私は、この擬似コードを持っているように、このいずれかがPythonコード
にどのように動作するか表示されません。しかし、どのように私は「オースティン」を訪問するように設定し、どのノードが「オースティン」に隣接しているかをどのように見ていますか?
さらに、このアルゴリズムを使用して、グラフが強く接続されている場合にtrueまたはfalseを返すことができますか?
私は擬似コードからコードへのこの転送を見ているだけで本当に苦労しています。助けをお待ちしています。
データ構造は、頂点から複数の辺を持つことができないため、一般的なグラフを実装するには不適切です。 dict値は宛先の_lists_でなければなりません。 – DyZ