How it works?
Coddyの「プリム法 - グラフアルゴリズム」コースのレッスン 3/9。
各頂点に対して、ブール値の inTree を保持します。頂点0のみがツリーに含まれた状態から開始します。フロンティアとは、端点の一方のみがツリー内にあるすべてのエッジのことで、crossing edge(交差エッジ)と呼ばれます。
ステップ・バイ・ステップのプロセス:
- すべての交差エッジの中から、重みが最小のものを選択します。
- その外側の端点をツリーに追加し、その重みを合計に加算します。
- ツリーにすべての
n個の頂点が含まれるまで繰り返します(これにはn - 1本のエッジが必要です)。
ある時点で交差エッジが存在しないにもかかわらず、外側に頂点が残っている場合、そのグラフは非連結です。
例 エッジ [0,1,1, 1,2,2, 2,3,3, 0,3,4] の場合:0から開始して0-1(1)を選択し、次に1-2(2)、次に2-3(3)を選択します。合計は 6 です。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
プリム法 - グラフアルゴリズムのすべてのレッスン
2The Algorithm
How it works?Pseudo CodeImplementation (Part 1)Implementation (Part 2)