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

最小全域木 とは?

💡 「全員つなげて、コスト最小」を実現するグラフの最適解!
📌 このページのポイント
最小全域木 → 最小コストで全頂点を接続 重み付きグラフ 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(木)は閉路のない連結グラフのことだよ
← 用語集にもどる