Pseudo Code
Coddyの「深さ優先探索 - グラフアルゴリズム」コースのレッスン 4/9。
buildAdjacency(n, edges):
adj = n empty lists
for each pair (u, v) in edges:
adj[u].add(v)
adj[v].add(u) # undirected
sort every adj[i] ascending
dfs(n, edges, start):
build adjacency
visited = all false
stack = [start]
order = []
while stack not empty:
node = stack.pop()
if visited[node]: continue
visited[node] = true
order.add(node)
for nb in adj[node] from last to first:
if not visited[nb]: stack.push(nb)
return order- 隣接リストは、フラットなエッジ配列を、各頂点ごとにソートされた隣接ノードのリストに変換します。
- 隣接ノードを最後から最初への順でプッシュすることで、スタックが最小の隣接ノードを最初に返すようになり、訪問順序が決定論的になります。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
深さ優先探索 - グラフアルゴリズムのすべてのレッスン
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)