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

公式集、全トピックの解法の要点、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.アルゴリズムと計算量ふつう

n 要素の配列を一度ソートし、その後 k 回の所属判定クエリに二分探索で答えます。全体のコストは何ですか?

  1. AO(n + k)
  2. BO(nk)
  3. CO(n log n + k log n)
  4. DO(k n log n)
2.アルゴリズムと計算量むずかしい

どんな入力に対してもクイックソートの期待(expected)実行時間を O(n log n) にする手法はどれですか?

  1. Aピボットを一様ランダムに選ぶ
  2. B左側にのみ再帰を使う
  3. C常に先頭の要素を選ぶ
  4. Dクイックソートを実行する前に入力をソートする
3.データ構造ふつう

深さ優先探索(反復版)で使われるデータ構造はどれですか。

  1. Aスタック
  2. Bハッシュテーブルのみ
  3. Cキュー
  4. Dヒープ
4.データ構造むずかしい

キー 5, 3, 8, 1 をこの順に、空の配列ベースの二分最小ヒープに挿入します。最終的な配列はどれですか。

  1. A[1, 3, 8, 5]
  2. B[3, 1, 8, 5]
  3. C[1, 5, 8, 3]
  4. D[1, 3, 5, 8]
5.グラフ理論ふつう
ABCDEFGオイラー閉路オイラー路あり、閉路なしどちらでもない

この連結グラフには、オイラー閉路、閉路でないオイラー路、またはどちらもないのうち、どれがありますか? 答えをクリックしてください。

|V| = 7|E| = 9
  1. 1オイラー閉路
  2. 2オイラー路あり、閉路なし
  3. 3どちらでもない
6.グラフ理論むずかしい
ABCDE

B から C への長さ 3 の歩道はいくつありますか? 歩道では頂点や辺を繰り返してもかまいません。その数を N とします。

M = 隣接行列L = 3
N =

3溶液

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

答え: C · O(n log n + k log n)

これが答えになる理由

ソートのコストは O(n log n)、各クエリは O(log n) です。k が大きいとき、これは k 回の線形走査(O(nk))より優れています。

答え

C · O(n log n + k log n)
2.アルゴリズムと計算量

答え: A · ピボットを一様ランダムに選ぶ

これが答えになる理由

ランダムなピボットを使うと、すべての入力に対して期待実行時間は O(n log n) になります。悪いケースは依然として存在しますが、起こる確率は非常に低くなります。

答え

A · ピボットを一様ランダムに選ぶ
3.データ構造

答え: A · スタック

これが答えになる理由

DFS はできるだけ深く探索するため、自然にスタック(または再帰の呼び出しスタック)を使います。BFS はキューを使います。

答え

A · スタック
4.データ構造

答え: A · [1, 3, 8, 5]

これが答えになる理由

5, 3, 8 の後、配列は [3, 5, 8] です。1 はインデックス 3 に入り、親の 5 と、次に 3 と交換されて [1, 3, 8, 5] になります。

答え

A · [1, 3, 8, 5]
5.グラフ理論

答え: どちらでもない

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

次数

deg(A) = 1, deg(B) = 4, deg(C) = 3, deg(D) = 3, deg(E) = 3, deg(F) = 1, deg(G) = 3

奇数次数の頂点

A, C, D, E, F, G → 6
どちらでもない

答え

どちらでもない
6.グラフ理論

答え: N = 7

次数:頂点の次数は、その頂点に接する辺の数です。どの辺にも端が 2 つあるので、次数の和は辺の数の 2 倍になります:Σ deg(v) = 2|E|(握手補題)。したがって、奇数次数の頂点の数は偶数です。Kn には n(n − 1)/2 本の辺があり、n 個の頂点をもつ k 正則グラフには nk/2 本、n 個の頂点をもつ木には n − 1 本の辺があります。

隣接行列

A: 0 1 1 0 0
B: 1 0 1 1 1
C: 1 1 0 0 1
D: 0 1 0 0 1
E: 0 1 1 1 0

もう 1 歩

(M³)BC = 1·1 + 4·1 + 2·0 + 1·0 + 2·1 = 7

答え

N = 7

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