データ構造とアルゴリズム:直前対策パック

公式集、全トピックの解法の要点、6 問の演習問題。完全な解答は巻末にあります。

新しい問題科目に戻る

印刷ウィンドウで「PDF として保存」を選ぶと、コピーを端末に保存できます。

1公式と解法

グラフ理論

握手補題
Σ deg(v) = 2|E|
完全グラフ
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
正則グラフ
|E| = n·k/2
木と森
|E| = n − 1, |E| = n − c
木の葉
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
オイラー
閉路:すべての次数が偶数; 路:奇数次数がちょうど 2 つ
Kn のハミルトン閉路
(n − 1)!/2
ダイクストラ法の更新
d(v) = min(d(v), d(u) + w(u, v))
長さ L の歩道
(Mᴸ)ij

解き方

  1. 各頂点の次数を書き出します。次数の総和は辺の数の 2 倍になります。
  2. オイラーの問題では、グラフが連結であることを確かめ、奇数次数の頂点を数えます。
  3. 木では、辺が n − 1 本であることと握手補題を使います。
  4. ダイクストラ法では、暫定距離の表をつくり、毎回、未確定の頂点のうち最小のものを確定します。
  5. 最小全域木では、辺を重みの順に並べ、閉路をつくる辺を飛ばす方法(クラスカル法)か、始点から 1 本の木を成長させる方法(プリム法)を使います。

2演習問題

1.アルゴリズムと計算量ふつう

プリム法は最小全域木をどのように構築しますか?

  1. A閉路がなくなるまで最も高い辺を取り除く
  2. B幅優先探索を実行し、BFS 木を残す
  3. C開始頂点から 1 本の木を成長させ、木から出る最も安い辺を加える
  4. Dすべての辺を重みでソートし、森の中で閉路をつくる場合を除いて 1 本ずつ加える
2.アルゴリズムと計算量むずかしい

問題が NP 完全(NP-complete)であるのは、次のどの場合ですか?

  1. A多項式時間で解ける
  2. BNP に属し、すべての NP 問題が多項式時間でその問題に帰着できる
  3. C解くことが不可能である
  4. D停止問題のように、NP に属さないがすべての NP 問題より難しい
3.データ構造ふつう

ダイクストラ法が次に処理する頂点を選ぶために使う抽象データ型はどれですか。

  1. A順序のない集合
  2. B最小優先度付きキュー
  3. CFIFO キュー
  4. Dスタック
4.データ構造むずかしい

根が 50、左部分木が 30(子は 20, 40)、右部分木が 70(子は 60, 80)の BST で、通りがけ順の後続ノードを使って根を削除します。新しい根になるキーはどれですか。

  1. A70
  2. B80
  3. C40
  4. D60
5.グラフ理論ふつう

木に 次数 3 の頂点が 2 個, 次数 5 の頂点が 3 個 があり、ほかのすべての頂点は葉(次数 1)です。葉は何枚Lありますか?

2 × deg 33 × deg 5
L =
6.グラフ理論むずかしい
141691810171ABCDE

重み付きグラフの最小全域木の重みの合計 W を求めてください。

|V| = 5|E| = 7
W =

3溶液

1.アルゴリズムと計算量

答え: C · 開始頂点から 1 本の木を成長させ、木から出る最も安い辺を加える

これが答えになる理由

木をまたぐ辺の優先度付きキューを用いるプリム法は、二分ヒープを使うと O(E log V) で動作します。

答え

C · 開始頂点から 1 本の木を成長させ、木から出る最も安い辺を加える
2.アルゴリズムと計算量

答え: B · NP に属し、すべての NP 問題が多項式時間でその問題に帰着できる

これが答えになる理由

NP 完全問題は NP の中で最も難しい問題であり、そのうち一つでも多項式時間アルゴリズムがあれば、NP 全体に対して多項式時間アルゴリズムが得られます。

答え

B · NP に属し、すべての NP 問題が多項式時間でその問題に帰着できる
3.データ構造

答え: B · 最小優先度付きキュー

これが答えになる理由

最小優先度付きキュー(通常は二分ヒープ)は、未訪問の頂点のうち距離が最小のものを効率よく返します。

答え

B · 最小優先度付きキュー
4.データ構造

答え: D · 60

これが答えになる理由

右部分木の最も左のノードは 60 なので、60 が 50 と置き換わり、元の位置からは取り除かれます。先行ノードを使えば 40 になります。

答え

D · 60
5.グラフ理論

答え: L = 13

オイラー、ハミルトン、木:連結グラフは、すべての頂点の次数が偶数のときオイラー閉路(すべての辺を 1 回ずつ通って始点に戻る)をもち、ちょうど 2 つの頂点の次数が奇数のとき、閉路でないオイラー路をもちます。その路は、一方の奇数次数の頂点から他方へ通ります。ハミルトン閉路はすべての頂点を 1 回ずつ訪れ、Kn には (n − 1)!/2 個あります。n 個の頂点をもつ木には n − 1 本の辺があり、m 本の辺をもつ連結グラフは、m − n + 1 本の辺を取り除いても全域木が残ります。

木の握手補題

L + 21 = 2(L + 5) − 2
L = 13

答え

L = 13

近道:次数 d ≥ 3 の頂点について L = 2 + Σ (d − 2) です。

6.グラフ理論

答え: W = 41

最短経路と全域木:ダイクストラ法は毎ラウンド 1 つの頂点を確定します:暫定距離が最小の未確定の頂点です。その距離は最終となり、各隣接頂点 v は d(v) = min(d(v), d(u) + w(u, v)) と更新されます。クラスカル法は、辺を軽い順に取り、閉路をつくる辺を飛ばして最小全域木をつくります。プリム法は、始点から 1 本の木を成長させ、その木から出る最も軽い辺を常に加えます。n 個の頂点の全域木には n − 1 本の辺があります。

クラスカル法

BE (1): 取る
BC (9): 取る
CE (10): 飛ばす(閉路ができる)
AB (14): 取る
AC (16): 飛ばす(閉路ができる)
DE (17): 取る

重みの合計

W = 1 + 9 + 14 + 17 = 41

答え

W = 41

ExamProblems · examproblems.com/courses/data-structures-and-algorithms