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

公式集、全トピックの解法の要点、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 回反復するループを 1 つ実行し、その後別に n 回反復するループをもう 1 つ実行します。時間計算量は何ですか?

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

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

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

同じ長さの連結リストを走査するより、配列を走査する方が実際にはずっと速いことが多いのはなぜですか。

  1. A配列では値を比較する命令が少なくて済むから
  2. B配列の走査は全体で O(1)、連結リストの走査は O(n) だから
  3. C配列の要素は連続しているので、CPU キャッシュを有効に使えるから
  4. D連結リストは常に要素をディスクに格納するから
4.データ構造むずかしい

ダブルハッシュ法が主に軽減する線形探査法の問題はどれですか。

  1. Aキーの値を読み取る O(n) のコスト
  2. B使用中のスロットが長く連なる一次クラスタリング
  3. Cキーをテーブルに格納する必要があること
  4. Dハッシュ関数が必要であること
5.グラフ理論ふつう

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

3 × deg 3
L =
6.グラフ理論むずかしい
ABCDEF

B を始点かつ終点とする、長さ 2 の閉じた歩道はいくつありますか? 歩道では頂点や辺を繰り返してもかまいません。その数を N とします。

M = 隣接行列L = 2
N =

3溶液

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

答え: C · O(n)

これが答えになる理由

n + n = 2n で、定数倍は取り除かれるので、この関数は O(n) です。

答え

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

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

これが答えになる理由

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

答え

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

答え: C · 配列の要素は連続しているので、CPU キャッシュを有効に使えるから

これが答えになる理由

連続したメモリは参照の局所性がよい一方、連結されたノードはばらばらに配置されていることがあり、多くのキャッシュミスを引き起こします。

答え

C · 配列の要素は連続しているので、CPU キャッシュを有効に使えるから
4.データ構造

答え: B · 使用中のスロットが長く連なる一次クラスタリング

これが答えになる理由

線形探査法は 1 ずつ進むので、使用中の連なりが大きくなって合体します。ダブルハッシュ法は 2 つ目のハッシュを刻み幅に使うので、異なるキーは異なる系列を探査します。

答え

B · 使用中のスロットが長く連なる一次クラスタリング
5.グラフ理論

答え: L = 5

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

木の握手補題

L + 9 = 2(L + 3) − 2
L = 5

答え

L = 5

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

6.グラフ理論

答え: N = 3

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

隣接行列

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

共通の隣接頂点

(M²)BB = 1·1 + 0·0 + 1·1 + 1·1 + 0·0 + 0·0 = 3

答え

N = 3

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