技能一覧 › 大学数学 グラフ理論

最小全域木(クラスカル法・プリム法)

木の辺数が であることと、カット性質(カットを横切る最小の重みの辺は最小全域木に含まれる)を使える。クラスカル法やプリム法で、重みつき連結グラフの最小全域木の重みを求められる

前提

この技能までの道筋(6 技能)
算数中学高校大学大学院

読み込み中…

右端(太枠)がこの技能です。左へドラッグすると、さらに前の前提をさかのぼれます。技能を押すと、そこまでの道筋が光ります。

一覧で見る(前提が先)
  1. 樹形図で数え上げる (算数 場合の数)
  2. 積の法則と和の法則 (算数 場合の数)
  3. 和の法則・積の法則と樹形図 (数学A 場合の数と確率)
  4. 順列・円順列・重複順列 (数学A 場合の数と確率)
  5. 組合せ (数学A 場合の数と確率)
  6. グラフの次数と握手補題 (大学数学 グラフ理論)

説明

重みつきの連結グラフでは、すべての頂点をつなぎ閉路を含まない辺の集まりを全域木といいます。この技能では、全域木のうち重みの合計が最小のもの(最小全域木)を求めます。送電網や通信網を最も安くつなぐ問題などで使います。クラスカル法では「軽い辺から順に、閉路ができない限り採用する」、プリム法では「1 頂点から木を広げ、毎回いちばん軽い辺で 1 頂点ずつ取り込む」という手順で求めます。

なぜそうしてよいのか

まず用語を決めます。同じ頂点を 2 度通らずに辺でたどる道を路といい、辺を 3 本以上使って始点に戻る道(始点以外の頂点は重複しない)を閉路といいます。どの 2 頂点も路で結べるグラフを連結といい、連結で閉路をもたないグラフを木といいます。グラフ の辺の一部を選んで のすべての頂点を含む木にしたものが全域木です。頂点 個の木の辺はちょうど 本です。頂点が 2 個以上の木で最も長い路をとると、その端点 の次数は 1 です(路の外へ辺が出ていれば路を延ばせ、路の上の頂点へ辺が出ていれば閉路ができるからです)。 とその辺を除いても、残りの 2 頂点を結ぶ路は次数 1 の を途中で通れないので連結のままで、辺を減らしただけなので閉路もできず、木のままです。これを繰り返すと頂点 1 個・辺 1 本ずつ減り、最後は頂点 1 個・辺 0 本になるので、辺数 です。また、木の 2 頂点を結ぶ路は 1 本しかありません(2 本あれば、それらが分かれてから再び合流するまでの部分で閉路ができるからです)。

次にカット性質です。 を空でない 2 つの部分 と に分けたものをカットといい、両端が別々の側にある辺を「カットを横切る辺」といいます。カット性質とは次の主張です。「辺の集合 がある最小全域木に含まれ、 のどの辺もカットを横切らないとする。カットを横切る辺のうち重みが最小の辺を ()とすると、 を含む最小全域木も存在する。」理由: を含む最小全域木 が を含めばそれで終わりです。含まないとき、 に を加えると、できる閉路は と 内の - 路を合わせたものに限られ、その路は 1 本しかないので、閉路はちょうど 1 つ です。 内の - 路は から へ移るので、カットを横切る辺 を含みます。 は の辺なので とは異なり、カットを横切るので には属しません。 に を加えて を除いたものを とします。 の両端は の残りの部分でつながるので は連結で、唯一の閉路 が を失って壊れるので閉路もなく、 は全域木です。重みは だけ変わるので増えず、 も最小全域木で、しかも を含みます。

これで二つの方法が正しいことを帰納法で示せます。主張は「採用済みの辺の集合 は、いつでもある最小全域木に含まれる」です。はじめ は空で、連結グラフは閉路の辺を 1 本ずつ除けば全域木をもち、全域木は有限個なので最小全域木があり、主張は成り立ちます。クラスカル法で を採用するとき、 を含む塊( の辺でつながった頂点の集まり)を とします。 の辺は塊の内部にあるので、カットを横切りません。 より前に見た辺は、採用されて に入ったか、そのとき同じ塊の中にあって捨てられたかのどちらかです。塊は合わさって大きくなるだけなので、どちらも今のカットを横切りません。後で見る辺の重みは 以上なので、 はカットを横切る最小辺であり、カット性質から採用後も主張が保たれます。プリム法では、育てている木の頂点集合を とすれば同じ議論がそのまま使えます。最後に は閉路をもたず、すべての頂点をつなぐ全域木になります(つながっていない塊が残っていれば、それらを結ぶ辺が見られたときに採用されていたはずです)。 も、 を含む最小全域木も辺は 本なので、両者は一致し、 が最小全域木です。

手順

  1. グラフが連結であることを確かめ、頂点数 から、採用すべき辺の本数 を求める。

  2. (クラスカル法)辺を重みの小さい順に並べる。重みが等しい辺の順はどちらが先でもよい。

  3. 並べた順に辺を見る。両端がまだ別々の塊にあれば採用し(2 つの塊が 1 つになる)、すでに同じ塊にあれば閉路ができるので捨てる。

  4. 採用した辺が 本になったら終了し、その重みの合計を最小全域木の重みとする。

  5. (別法:プリム法)1 頂点だけの集合 から始める。 と を結ぶすべての辺のうち最も軽いものを採用し、その端点を に加える。これを になるまで繰り返す。

例題

頂点集合 、辺と重みが である重みつき連結グラフの最小全域木の重みを求めよ。

例題の解答

手順 1: なので、採用する辺は 本である。
手順 2:辺を重みの小さい順に並べると となる。
手順 3:順に見ていく。
- : は別々の塊なので採用する。塊は になる。
- :採用する。塊は になる。
- :採用する。塊は になる。
- :両端がともに にあり、閉路 ができるので捨てる。
- :2 つの塊を結ぶので採用する。塊は になる。
手順 4:採用した辺は の 4 本で、 本に達したので終了する。重みの合計は である。
(確認:手順 5 のプリム法で から始めると、 から 、 から 、 から 、 から が採用され、合計は同じく になる。)

答え:

よくある誤り

この説明は AI が書き、別の AI が例題を独立に解いて答えを確かめ、説明を一歩ずつ査読しました。

入口の問題

この技能を使う問題

この技能の次に学べること