メインコンテンツへ
アルゴリズムとプログラミング最小全域木

クラスカル法(Kruskal's Algorithm)による最小全域木の構築手順として正しいものはどれか。

ア.任意の1頂点から出発し、最も近い未訪問の頂点を選択しながら全頂点を連結する。
イ.全辺をコストの昇順でソートし、閉路を形成しない辺を順に選択して全頂点を連結する。正解
ウ.全頂点間の最短経路を求め、その中から全頂点を連結できる辺を選択する。
エ.再帰的にグラフを分割し、各部分グラフの最小コスト辺を選択して統合する。

解説

クラスカル法は「安い材料から使う材料節約型の大工」。橋を最安値順に架けていき、島が繋がってしまう橋は飛ばすというグリーディ戦略です。

なぜ イ が正解か

クラスカル法のアルゴリズム: ① 全辺をコストの小さい順にソート ② 辺を順に取り出す ③ その辺を追加すると閉路ができる → 捨てる 閉路ができない → 最小全域木に追加 ④ V-1本(Vは頂点数)の辺が選ばれたら完成 閉路の検出にはUnion-Find(素集合データ構造)を使います。グリーディ法の代表例で、「局所最適な選択が全体最適をもたらす」アルゴリズムです。

なぜ ア は間違いか

任意の1頂点から出発し、最も近い未訪問頂点を貪欲に選択するのは「プリム法(Prim's Algorithm)」の説明です。プリム法もクラスカル法も最小全域木を求めますが、アプローチが異なります(プリム:頂点中心、クラスカル:辺中心)。

なぜ ウ は間違いか

全頂点間の最短経路を求めるのはフロイド・ワーシャル法(Floyd-Warshall)やダイクストラ法です。最小全域木と最短経路は別の問題——最小全域木は「すべてを接続する最安ネットワーク」であり、最短経路は「2点間の最短ルート」です。

なぜ エ は間違いか

再帰的にグラフを分割して統合するのは分割統治法による手法(例:最近点対問題など)の説明です。クラスカル法はグラフ全体の辺を一元管理するグリーディアプローチで、分割統治ではありません。

出典: AI生成問題(学習用)