【さいしょうぜんいきぎ】

最小全域木 とは?

公開:
💡 「全員つなげて、コスト最小」を実現するグラフの最適解!
📌 このページのポイント
最小全域木 → 最小コストで全頂点を接続 重み付きグラフ A B C D E 4 2 6 3 5 1 3 辺の合計コスト → 24 最小全域木(MST) A B C D E 2 1 3 3 合計コスト → 9 4辺で全5頂点を最小コストで接続
最小全域木のイメージ → 重み付きグラフから最小コストの接続を選択
ひよこ ひよこ
最小全域木って何を最小にするの?
ペンギン先生 ペンギン先生
グラフのすべての頂点をつなぐ辺の「重みの合計」を最小にするんだ。たとえば5つの街を道路でつなぐとき、全部の街に行けるようにしつつ建設費が一番安くなるルートを見つけるイメージだよ
ひよこ ひよこ
どうやって見つけるの?
ペンギン先生 ペンギン先生
有名なアルゴリズムが2つあるよ。クラスカル法は辺をコストの安い順に見て、閉路ができなければ採用していく方法。プリム法は1つの頂点から始めて、隣接する一番安い辺を選んで木を広げていく方法だよ
ひよこ ひよこ
安い順に選ぶだけで本当に最小になるの?
ペンギン先生 ペンギン先生
これが「貪欲法(グリーディ)で最適解が得られる」という稀有な性質なんだ。カット定理という数学的な裏付けがあって、局所的に最良の選択を繰り返すだけで全体最適が保証されるよ
ひよこ ひよこ
実際にはどんなところで使われてるの?
ペンギン先生 ペンギン先生
ネットワーク敷設(LAN配線やインターネットのバックボーン設計)、電力網の設計、あとは画像処理のセグメンテーションやクラスタリングにも使われてるよ
ひよこ ひよこ
クラスカル法とプリム法、どっちを使えばいいの?
ペンギン先生 ペンギン先生
辺が少ない疎グラフならクラスカル法、辺が多い密グラフならプリム法が効率的だよ。クラスカル法はUnion-Find(素集合データ構造)と組み合わせるのが定番で、計算量はO(E log E)。プリム法は優先度付きキューを使ってO(E log V)になるんだね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「最小全域木」って出てきたら「全部つないで一番安い接続方法を見つけるアルゴリズム」と思えればだいたいOK!
📖 おまけ:英語の意味
「Minimum Spanning Tree(MST)」 = 最小全域木
💬 Spanning(全域)はグラフの全頂点をカバーするという意味で、Tree(木)は閉路のない連結グラフのことだよ
← 用語集にもどる