最小全域木:PrimとKruskalのアルゴリズム
最小全域木、カットの性質、PrimとKruskalのアルゴリズムによるMSTの発見方法を理解します。貪欲アプローチと時間計算量を比較します。
Advanced Topics
詳細な説明
最小全域木(MST)
連結グラフの全域木は、すべての頂点を含み、最小限の辺(V-1本)でサイクルを含まない部分グラフです。最小全域木は合計辺重みが最小の全域木です。
性質
- V個のノードのMSTは正確にV-1本の辺を持つ
- 複数の辺が同じ重みを共有する場合、MSTは一意ではない
- カットの性質により、任意のカットを横切る最軽量の辺がMSTに属する
Kruskalのアルゴリズム
- すべての辺を重みの昇順にソート
- Union-Findデータ構造を初期化
- 各辺(ソート順)について:異なる成分ならMSTに追加、同じ成分ならスキップ
- V-1本の辺が追加されたら停止
時間: ソートによりO(E log E)
Primのアルゴリズム
- 任意のノードから開始し、MSTセットに追加
- MSTノードと非MSTノードを接続するすべての辺から最軽量を選択
- 選択した辺とノードをMSTに追加
- すべてのノードがMSTに含まれるまで繰り返す
時間: 優先度キューでO((V+E) log V)
ユースケース
ネットワーク設計ではすべてのノードを接続する総コストを最小化するためにMSTを使用します。機械学習のクラスター分析ではMSTを使用して自然なグループ分けを識別します。巡回セールスマン問題などのNP困難問題の近似アルゴリズムはMSTを出発点として使用します。