基本情報技術者試験「グラフアルゴリズム」の問題
5頂点A〜Eの連結な無向グラフがあり、辺と重みはA-B:1、A-C:2、B-C:2、C-D:3、B-D:4、D-E:5、C-E:6である。クラスカル法で求めた最小全域木に含まれる辺の重みの合計はいくらか。
ア重みの合計は8である
イ合計11になる
ウ合計14と求まる
エ合計は18である
正解
イ.合計11になる
クラスカル法は重みの昇順に辺を選び、閉路を作る辺は捨てる。A-B(1)、A-C(2)を採用、B-C(2)はA・B・Cが連結済みで閉路となり除外、C-D(3)を採用、B-D(4)は閉路で除外、D-E(5)を採用して全頂点が連結。合計1+2+3+5=11で正しい。
?選択肢ごとの解説
ア ×合計8はD-E(5)を加え忘れEを孤立させた値で、全頂点を連結する全域木の条件(辺数=頂点数-1=4本)を満たさない。
イ ○クラスカル法は重みの昇順に辺を選び、閉路を作る辺は捨てる。A-B(1)、A-C(2)を採用、B-C(2)はA・B・Cが連結済みで閉路となり除外、C-D(3)を採用、B-D(4)は閉路で除外、D-E(5)を採用して全頂点が連結。合計1+2+3+5=11で正しい。
ウ ×合計14は閉路となるB-C(2)やB-D(4)を誤って採用し最小の辺を取り違えた誤りである。
エ ×合計18は重みの大きい辺(C-E:6など)まで含めて全域木の最小性を無視した誤りである。
✎くわしく
最小全域木は全頂点を最小の重み合計で連結する木で、辺数は頂点数-1=4本。クラスカル法は『昇順に選び閉路を避ける』貪欲法で、閉路判定にはUnion-Find(素集合)を用いる。プリム法は頂点を起点に成長させる別手法だが結果は同じになる。
✓本番での押さえどころ
試験のコツ
クラスカルは『軽い辺から、閉路になる辺は飛ばす、辺が頂点数-1本になったら終了』を手順化する。
覚え方
クラスカルは『安い橋から架けるが、すでに繋がった島同士はもう橋を架けない(閉路回避)』と覚える。
よくある誤り
同じ重みの辺(本問のB-C=2)を無条件に採用して閉路を作る誤り、または辺を頂点数-1本そろえ忘れる誤りが多い。
アルゴリズムとプログラミングの他の問題
次の擬似言語で表される手続 sumOdd を、引数として要素数 5 の整数型の配列 {12, 125, 1008,…次の擬似言語は、整数型の配列 arr に対して隣接交換を行う手続の一部であり、外側ループの 1 回目(1…次の擬似言語は昇順に整列された配列 arr に対する二分探索の手続である。arr = {2, 4, 6, 8, 10,…次の擬似言語で表される再帰手続 f を、引数 n = 20 で呼び出したとき、戻り値として返される値はどれか。
```…単方向連結リストの各ノードはメンバ val(整数)と next(次ノードへの参照。なければ NULL)をもつ。先頭ノード…スタックに対する push(積む)と…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-a3-0142