Menu
Coddy logo textTech

Pseudo Code

Coddyの「トポロジカルソート - グラフアルゴリズム」コースのレッスン 4/9。

topologicalSort(n, edges):
   build directed adjacency; compute indeg[v] for all v
   order = []
   repeat n times:
      pick = smallest v with indeg[v] == 0 (none left -> stop)
      mark pick as used (indeg[pick] = -1)
      order.add(pick)
      for nb in adj[pick]:
         indeg[nb] -= 1
   return order
  • indeg[v] は入次数をカウントします。u -> v というエッジのみが indeg[v] に加算されます。
  • 頂点 0..n-1 をスキャンし、入次数が 0 である最初の頂点を選択することで、各ステップで最小の選択肢が得られるため、順序は一意に決まります。
  • indeg[pick] = -1 と設定することは、頂点がすでに配置済みであることをマークする簡単な方法です。

自分で試してみよう

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

quiz icon腕試し

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

トポロジカルソート - グラフアルゴリズムのすべてのレッスン