最小全域木:クラスカル法とプリム法

すべての点を、道路の総延長が最小になるように結ぼう。クラスカル法は短い道路から順に調べ、閉路を作るものは採用しない。プリム法はAから一つのネットワークを育て、そこから外へ出る最短の道路を選び続ける。どちらも一手ずつ進めることができ、各道路を採用または見送る理由がその場で示される。点をドラッグすると、木もすぐに組み直される。

インタラクティブシミュレーションを読み込んでいます...

レッスン

理論 — 最小全域木:クラスカル法とプリム法

点集合の全域木とは、どの二点間にも経路があり、閉路を含まない道路の集合である。点がn個なら、道路は必ずn − 1本になる。最小全域木は、道路の総延長が最小の全域木である。カットは点を二群に分ける。道路の両端が別の群にあるとき、その道路はカットを横切るという。シュタイナー木では、もとの点以外に分岐点を置くこともできる。

各記号の意味

n
点の数
w(u, v)
uからvへ引いた直線道路の長さ(km)
S
カットの片側にある点の集合。プリム法では、それまでに構成されたネットワーク
前提
道路は直線で、費用はその長さに等しいものとし、任意の二点を道路で結べるとする。等しい距離が一つもなければ、最小全域木はただ一つに定まる。三角形や正方形のように距離が等しい場合は、同じ最小長の木が複数存在し、二つのアルゴリズムが異なる木を選ぶこともある。

今いる場所から近い道ではなく、カットを横切る最短の道 🖖

十二の村を選び、クラスカル法を一手ずつ進めよう。66本の道路候補を短い順に調べるので、K–Lの13.89 kmはすぐに採用される。C–DとB–Cは、赤い経路ですでに両端が結ばれているため不採用となる。プリム法に切り替えると、Aから一つのネットワークが広がっていく。道路を選ぶ順序は変わり、K–Lは最後になるが、同じ二本を不採用とし、最終的には同じ11本、同じ199.04 kmに到達する。両者の根拠は共通している。カット性質だ。点を好きな二群に分けたとき、その間を結ぶ最短の道路は、どの二本の道路も同じ長さでなければ最小全域木に含まれる。その道路を除いた木を考えると、両端を結ぶ木上の経路は、どこかでカットをより長い道路によって横切らなければならない。二本を入れ替えれば、木の総延長は短くなる。プリム法では、各ステップで網掛けされたネットワークがこのようなカットの片側に当たる。次に最近傍法を選ぼう。これはプリム法の反復から、探す範囲をネットワーク全体ではなく直前に着いた村だけに変えた方法である。三手目ではD–Fの17.96 kmを選ぶが、カットを横切るA–Cは17.67 kmしかない。その後もA–Cを七回見送り、最終的な長さは10.76%余分になる。この問題を最初に解いたオタカル・ボルーフカは、南モラヴィアの電力網を念頭に1926年、「相互の距離が異なる」点について結果を述べた。これはまさに同じ条件であり、この条件のもとではクラスカル法とプリム法の答えは一致する。

全体が最短のネットワークでも、町どうしの移動は短いとは限らない 🖖

湖を囲む町を選ぼう。十の町が湖の周りに並び、木は湖岸道路から一区間だけを除いた形になる。除かれるのは、JとAの間にある最も広い切れ目だ。この二つの町は直線なら25.89 kmしか離れていないが、木に沿うと128.30 km、直線距離の4.96倍になる。一方から他方へ行く経路が、ネットワークをほぼ一周するものしかないためだ。紫色の破線がこの組を示す。どの町を動かしても、新たに最大の遠回りとなる組が求められる。最小全域木が最小にするのは道路の総延長であり、任意の二つの町を結ぶ経路の長さは保証しない。25.89 kmの道路も建設すれば、AからJへは直行できる。それだけの道路を追加する価値があるかは、移動経路を考える最短経路問題である。続きはダイクストラ法のページで扱う。

分岐点を許したときの短縮率には、未解決の上限がある 🖖

三つの町を選ぼう。町どうしは40 km離れているので、全域木の長さは80.00 kmになる。中央に分岐点を置き、三本の道路を120°で交わらせると、69.28 kmで結べる。短縮率は13.40%、すなわち1 − √3/2である。正方形の四つの町では、二つの分岐点によって8.93%短くなる。三角形に戻り、CをAとBの側へ動かしてみよう。Cの角が120°を超えると分岐点はCに重なり、それ以上は分岐点を置いても短くならない。最適な分岐点を求めるのがシュタイナー木問題である。1968年、エドガー・ギルバートとヘンリー・ポラックは、正三角形が短縮率の最大例であり、平面上のどの点集合についてもシュタイナー木が最小全域木の√3/2未満にはならないと予想した。ドゥとファンは1990年に証明を発表した。しかし2010年、インナミら四人は、その証明の要となる段階が成り立たないことを示す根拠を発表した。2002年から証明の不備を指摘していたイワノフとトゥジリンも、2012年にこの予想は未解決だと記している。2025年に刊行されたシュタイナー木の未解決問題集にも、なお未解決問題として掲載されている。三角形の13.40%を超えて短縮できる点配置が存在するかどうかは、まだ分かっていない。

全プロセスの詳細解説

  1. 正方形に置く二つの分岐点 4 ステップ

    分岐点はどこに置けばよいか。道路の長さはいくらになるか。 正方形の四つの町を選ぼう。一辺40 kmの正方形の頂点に町があり、全域木は120.00 km、分岐点を使うと109.28 kmになる。この長さを厳密に求め、多くの人が最初に思いつく、中心を通るX字形とも比べてみよう。

    この問題をツールで開く

    1. 最短ネットワークの分岐点で三本の道路が交わるなら、道路どうしの角は120°になる。そうでなければ、各道路に沿って分岐点から外向きに取った三本の単位ベクトルの和は0にならず、その和の向きへ分岐点を動かすことで総延長を短くできる。

    2. 二つの分岐点を正方形の中心を通る直線上に置き、それぞれに近い二つの頂点を受け持たせ、その間を中央の道路で結ぶ。各支線は中央の道路と120°で交わるので、中央の道路を含む直線とは60°をなす。支線が横向きに進む距離は一辺の半分、20 kmだから、その長さは20/sin 60°である。中央の道路の向きには20/tan 60°だけ進む。

    3. 四本の支線と、40 kmから二本の支線が中央方向に進む分を差し引いた長さの中央道路。

    4. X字形では、各頂点から中心まで、対角線の半分に当たる20√2 kmの道路を四本引く。

    解答

    40(1 + √3) = 109.28 km。各分岐点は、受け持つ側の辺から11.55 km内側にある。X字形は113.14 km。 X字形は全域木より短いが、道路が120°ではなく90°で交わるため、二つの分岐点を使う形には及ばない。この長さを実現するネットワークは二つあり、ページに示したものと、それを90°回転させたものである。短縮率は1 − (1 + √3)/3 = 8.93%で、三角形の13.40%より小さい。

学習の道すじ

アルゴリズムが正しい理由

参考文献 (3)