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

公式集、全トピックの解法の要点、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重なりの最も少ない活動を先に選び、両立する活動で繰り返す
  3. C最も早く始まる活動を選ぶ
  4. D最も早く終わる活動を選び、両立する活動で繰り返す
2.アルゴリズムと計算量むずかしい

1 回のインクリメントで多くのビットが反転することがあるとして、2 進カウンタのインクリメントのならしコストは何ですか?

  1. Aインクリメント 1 回あたり O(n)
  2. Bインクリメント 1 回あたり O(1)
  3. Cインクリメント 1 回あたり O(n log n)
  4. Dインクリメント 1 回あたり O(log n)
3.データ構造ふつう

AVL 木と赤黒木が保証するものは何ですか。

  1. A2 つの子を持つノードが存在しないこと
  2. B再平衡化による O(log n) の高さ
  3. Cどの場合でも定数時間での探索
  4. Dキーが挿入順に格納されること
4.データ構造むずかしい

セグメント木は一般的に何に使われますか。

  1. A各接頭辞を別々の木のノードに格納することで、文字列をアルファベット順にソートする
  2. Bグラフの辺を格納する
  3. C区間クエリ(区間和など)と更新を O(log n) で処理する
  4. Dスタックを実装する
5.グラフ理論ふつう

連結グラフに 17 個の頂点と 24 本の辺があります。全域木にするには、辺を何本k取り除く必要がありますか?

|V| = 17|E| = 24
k =
6.グラフ理論むずかしい
14131161312114ABCDEF

ダイクストラ法を使って、重み付きグラフで A から F までの最短経路の長さd(F)を求めてください。

始点:A終点:F
d(F) =

3溶液

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

答え: D · 最も早く終わる活動を選び、両立する活動で繰り返す

これが答えになる理由

最も早い終了時刻を選ぶことは交換論法によって最適であると証明できます。他の規則には反例があります。

答え

D · 最も早く終わる活動を選び、両立する活動で繰り返す
2.アルゴリズムと計算量

答え: B · インクリメント 1 回あたり O(1)

これが答えになる理由

n 回のインクリメントでビット i は約 n / 2ⁱ 回反転するので、合計は 2n 回未満の反転となり、平均は 1 回あたり O(1) です。

答え

B · インクリメント 1 回あたり O(1)
3.データ構造

答え: B · 再平衡化による O(log n) の高さ

これが答えになる理由

自己平衡木は高さを対数オーダーに保つため、探索・挿入・削除は最悪の場合でも O(log n) です。

答え

B · 再平衡化による O(log n) の高さ
4.データ構造

答え: C · 区間クエリ(区間和など)と更新を O(log n) で処理する

これが答えになる理由

セグメント木は区間ごとの集約値を格納し、区間クエリと一点更新を O(log n) 時間で行えます。

答え

C · 区間クエリ(区間和など)と更新を O(log n) で処理する
5.グラフ理論

答え: k = 8

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

全域木の辺

17 − 1 = 16

取り除く辺

k = 24 − 16 = 8

答え

k = 8
6.グラフ理論

答え: d(F) = 29

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

ダイクストラ法をラウンドごとに

各行:確定した頂点、その最終距離、距離が改善される隣接頂点。

A (0): B: 14
B (14): C: 27, D: 25, E: 28
D (25): F: 37
C (27)
E (28): F: 29
F (29)

最短経路

A → B → E → F
d(F) = 29

答え

d(F) = 29

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