Data-structures-algorithms-kruskals-spanning-tree-algorithm

提供:Dev Guides
移動先:案内検索

クラスカルのスパニングツリーアルゴリズム

最小コストのスパニングツリーを見つけるためのクラスカルのアルゴリズムは、貪欲なアプローチを使用します。 このアルゴリズムは、グラフをフォレストとして扱い、グラフが持つすべてのノードを個別のツリーとして扱います。 ツリーは、使用可能なすべてのオプションの中で最もコストが低く、MSTプロパティに違反しない場合にのみ、別のツリーに接続します。

クラスカルのアルゴリズムを理解するために、次の例を考えてみましょう-

MSTグラフ

手順1-すべてのループと並列エッジを削除する

指定されたグラフからすべてのループと平行エッジを削除します。

ループ付きMSTグラフ

平行なエッジの場合、関連するコストが最も少ないエッジを保持し、他のすべてを削除します。

ループのないMSTグラフ

ステップ2-重みの昇順ですべてのエッジを配置します

次のステップでは、エッジとウェイトのセットを作成し、それらをウェイト(コスト)の昇順で配置します。

MST昇順ウェイト

ステップ3-重みが最小のエッジを追加します

次に、重みが最小のグラフからエッジを追加し始めます。 全体を通して、スパニングプロパティが損なわれていないことを確認し続けます。 1つのエッジを追加することにより、スパニングツリープロパティが保持されない場合、グラフにエッジを含めないことを検討します。

MSTグラフステップ1

最小コストは2で、関係するエッジはB、DおよびD、Tです。 それらを追加します。 それらを追加してもスパニングツリーのプロパティに違反しないため、次のエッジ選択に進みます。

次のコストは3で、関連するエッジはA、CおよびC、Dです。 私たちはそれらを再び追加します-

MSTグラフステップ2

表の次のコストは4です。これを追加すると、グラフに回路が作成されることがわかります。 −

MSTグラフステップ3

無視します。 このプロセスでは、回路を作成するすべてのエッジを無視/回避します。

MSTグラフステップ4

コスト5および6のエッジも回路を作成することがわかります。 それらを無視して先に進みます。

MSTグラフステップ5

追加するノードは1つだけです。 7と8の2つの最小コストエッジの間に、コスト7のエッジを追加します。

MST Kruskalsアルゴリズム

エッジS、Aを追加することにより、グラフのすべてのノードが含まれ、最小コストのスパニングツリーが作成されました。