名古屋工業大学 工学研究科 情報工学専攻 2018年度 計算機ソフトウェア(データ構造とアルゴリズム)
标签:
Author
GPT-5.6 Sol, 祭音Myyura
Description
次の (1)、(2) の問いに答えよ。
(1)
とする。以下に示す関数の漸近的評価 (a) から (f) について、 が当てはまるものをすべて選べ。
なお、原問では (c) だけが と印字されているが、 は問題中で定義されていない。
(2)
次は、線形探査を用いた開番地法(オープンアドレス法)に基づくハッシュ表の構成および探索のための疑似コードである。
store(x) {
v <- x mod m;
while (H[v] != 0) v <- (v + 1) mod m;
H[v] <- x;
}
search(x) {
v <- x mod m;
while (true) {
if ( a ) return "見つからない";
if ( b ) return "見つかった";
v <- (v + 1) mod m;
}
}
配列 はハッシュ表に対応するサイズ の配列であり、各要素は で初期化されているものとする。store(x) を実行することで正整数 がハッシュ表に格納され、search(x) は実行時点のハッシュ表が を含むか否かを答える。格納するデータは正の整数であり、その個数は を超えないものとする。次の問いに答えよ。
- (ア) サイズ の空のハッシュ表に
store(x)を実行して新たな値 を格納するとき、store(x)の実行時間を漸近的記法(オーダ記法)で表せ。 - (イ) 次の状態のハッシュ表 に
store(6)、store(15)、store(13)をこの順に実行した。実行後のハッシュ表の状態を図示せよ。
| 添字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 30 | 0 | 2 | 3 | 0 | 20 | 0 | 7 | 0 | 0 | 25 | 10 | 12 | 27 | 14 |
- (ウ)
search(x)の疑似コード中の空欄 a、b にそれぞれ当てはまる適切な条件式を答えよ。
Kai
(1)
原問の (c) に現れる は未定義である。ここでは文脈上の誤植とみなし、(c) を と解釈する。
各選択肢を比較する。
また、 は より速く、 より遅く増加する。したがって、成立するものは
である。ただし、印字どおり を別の変数と読むならば、 と の関係が与えられていないため (c) の真偽は判定できない。
(2)
(ア)
空表では なので、while の反復は生じない。よって実行時間は
である(より厳密には )。
(イ)
store(6): なので、添字 6 に格納する。store(15):添字 は使用済みで、次の添字 が空なので、添字 1 に格納する。store(13):添字 は使用済みで、添字 が空なので、添字 4 に格納する。
したがって、実行後は次のとおりである。
| 添字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 30 | 15 | 2 | 3 | 13 | 20 | 6 | 7 | 0 | 0 | 25 | 10 | 12 | 27 | 14 |
(ウ)
空要素に到達すれば、それより先に は存在しない。一方、現在の要素が なら探索成功である。よって
となる。
検算
一時プログラムで線形探査を逐次実行し、挿入位置が順に 、最終表が
[30, 15, 2, 3, 13, 20, 6, 7, 0, 0, 25, 10, 12, 27, 14]
となること、および格納済みの各値と未格納値に対して search の条件が正しく働くことを確認した。