演習2-6

各枝に正の重みが与えられたグラフがある.このグラフ上の全点を張る木の中で,枝の重みの総和が最小なものを「最小木」とよぶ.この最小木は「クラスカル法」と名づけられている以下のアルゴリズムで求められることが知られている.

クラスカル法
ステップ1
(初期化)
集合Eを与えられたグラフの枝集合とし,集合Tを空集合とおく.
ステップ2 集合Eが空集合になるまで以下の(*1)〜(*2)の操作を順に繰り返す.
  (*1)集合Eで重み最小の枝をひとつ選ぶ.選ばれた枝をeとする.集合Eから枝eを除く.
(*2)枝eを集合Tに加えた時に,集合Tに閉路が存在しない時,集合Tに枝eを加える.集合Tに閉路が存在する時は何もしない.
ステップ3 現在得られている集合Tが最小木になっている.(終了)

次の問いに答えよ.

(1) 図1で与えられたグラフの最小木を求めなさい.答えは,グラフを図示し,最小木を構成する枝を太線にすることで示しなさい.

図1 グラフ

(2) 与えられたグラフの点数がn個,枝数がm本である時,最小木を求める問題の入力サイズを求めよ.
(3) クラスカル法をできる限り効率よく実行したい.どのような点に工夫を加えると効率よく実行できるか.工夫を加えるべき箇所を挙げ,その方法を説明せよ.
(4) 上記で提案した工夫を加えた上でクラスカル法を実行した際の,クラスカル法の最悪計算量を評価せよ.ただし,評価結果は漸近計算量で表現せよ.
(5) n=1,000,000(点数が百万),m=3,000,000(枝数が三百万)のサイズのグラフ上で最小木をクラスカル法で求める.1秒に1億回演算可能なコンピュータを用いて導出を試みた場合,おおよそどの程度の時間で最小木を導くか求めなさい.なお,必要ならlog102=0.3010とみなし利用してよい.

2001年度生産管理論中間試験問題3より,作成:根本俊男(文教大学情報学部経営情報学科,nemoto@shonan.bunkyo.ac.jp)