Menu
Coddy logo textTech

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
  • 隣接リストは、フラットなエッジ配列を、各頂点ごとにソートされた隣接ノードのリストに変換します。
  • 隣接ノードを最後から最初への順でプッシュすることで、スタックが最小の隣接ノードを最初に返すようになり、訪問順序が決定論的になります。

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

深さ優先探索 - グラフアルゴリズムのすべてのレッスン