Pseudo Code
Coddyの「クラスカル法 - グラフアルゴリズム」コースのレッスン 4/9。
kruskal(n, edges):
parent[i] = i for all i # 各頂点を独自の集合とする
total = 0
repeat until all edges considered:
pick the unused edge (u, v, w) with the smallest w
ru = find(u); rv = find(v)
if ru != rv: # サイクルなし
parent[ru] = rv # 結合 (union)
total += w
return total
find(x):
while parent[x] != x: x = parent[x]
return x- 各ラウンドで最小の未使用のエッジを選択する(最小選択)ことで、別途ソートを行う必要がなくなります。
- find はルートまで遡ります。union は一方のルートをもう一方のルートに代入するだけの操作です。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
クラスカル法 - グラフアルゴリズムのすべてのレッスン
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)