後期試験 ・ 2015 年 1 月 30 日 1 時限実施 ・ ページ
授業 科目 |
データ構造とアルゴリズム | 学生番号 | 学科 | 学年 | 組 | 番 | フリ ガナ |
評点 | ||||||||
氏名 | ||||||||||||||||
担当者 | DÜRST, Martin J. |
次の計算量を小さい順に並びなおしなさい。「⊂」または「=」で小さい場合と同等な場合を区別しなさい。
(例: O(1)=O(2)⊂O(nn))
O(1.001n),
O(1000 log log n),
O(n log n),
O(n1.1),
O(n !),
O(1.0001n),
O(log7 n),
O(logn n),
O(log nn),
O(nn),
O(n ! !),
O(n1.7),
O(2015n),
O(501000),
O(n),
O(log (n3))
O(501000) = O(logn n) ⊂ O(1000 log log n) ⊂ O(log7 n) = O(log (n3)) ⊂ O(n) = O(2015n) ⊂ O(n log n) = O(log nn) ⊂ O(n1.1) ⊂ O(n1.7) ⊂ O(1.0001n) ⊂ O(1.001n) ⊂ O(n !) ⊂ O(nn) ⊂ O(n ! !)
アルゴリズムの表現方法の一つとして自然言語の文書があります。その利点と問題点を他の表現方法と比べながら詳細に説明しなさい。
利点: プログラム言語などに比べて、一般人にも分かりやすい可能性がある。
形式が自由なので、何でも自由に必要な精度で表せる。
図と比べると、保存、編集、交換 (例えば電子メールなど) が余裕である。
問題点: 自然言語の選択により、その言語が分かる人にしか通じない。
疑似コードやプログラム言語も色々あるが、自然言語のほどの幅ではない。
曖昧性も大きな問題だ。
ハッシュ表のチェイン法の用途と構造を図を使って詳細に説明しなさい。
ハッシュ関数によってデータ項目のハッシュ表内の場所が決まるが、
完全なハッシュ関数を作るのは多くの場合不可能なので、
激突 (複数のデータ項目が同じ場所に割り振られる) が起こります。
チェイン法はそのための一つの対策である。データ項目をハッシュ表に直接
格納するのではなく、ハッシュ表の各場所 (ビンと呼ばれる)
から連結リスト (いわゆるチェーン) を連結してデータ項目を格納する方法。
チェーン内では線形探索を使うが、占有率がある一定 (例: 5) 以下に
保たれている場合、操作 (探索、挿入、削除) は平均で一定時間で可能。
[図省略]
後期試験 ・ 2015 年 1 月 30 日 1 時限実施 ・ ページ
配列 array
(長さ len
) の中のデータ項目を選択ソートで整列するアルゴリズムを疑似コードで書きなさい。
algorithm selection_sort inputs: array (length len), output: array (sorted) for i from 0 to length-2 do small_pos ← i for k from i to length-1 do if array[k]<array[small_pos] small_pos ← k end_if end_for temp ← array[i] array[i] ← array[small_pos] array[small_pos] ← temp end_for end
ページの大きさが 1024バイト、キーの大きさが 8バイト、キーを抜く一項目あたりのデータの大きさが 120バイト、ページ番号の大きさが 8バイト、最低占有率が 0.5で、データ項目の数が 215の B+木で次の値を計算しなさい。
葉のページの最大項目数: 8 葉のページの最低項目数: 4
内部説節のページの最大の子供の数: 64
内部説節のページの最大最低の子供の数: 32
葉のページの最大の数: 8192 葉のページの最低の数: 4096
葉より一層だけ上の内部説の最大の数: 256 葉より一層だけ上の内部説の最低の数: 64
葉より二層上の内部説の最大の数: 8 葉より二層上の内部説の最低の数: 1
B+木の最低の高さ: 3 B+木の最大の高さ: 4
B+木の最大合計ページ数: 8457 B+木の最低合計ページ数: 4161
後期試験 ・ 2015 年 1 月 30 日 1 時限実施 ・ ページ
授業 科目 |
データ構造とアルゴリズム | 学生番号 | 学科 | 学年 | 組 | 番 | フリ ガナ |
評点 | ||||||||
氏名 | ||||||||||||||||
担当者 | DÜRST, Martin J. |
下記の三つの事情に合わせて、順列のアルゴリズムを実装するように頼まれた。 アルゴリズムを選んで、そのアルゴリズムの名前、仕組み、選んだ理由と実装の場合特に注意すべき点を記述しなさい。
この授業で一番分かりにくかったことを書きなさい。 (決まった正解はありません。)
@@@@
@@@@
この授業で一番勉強になったことを書きなさい。 (決まった正解はありません。)
@@@@
@@@@
後期試験 ・ 2015 年 1 月 30 日 1 時限実施 ・ ページ
データの量が増えるとアルゴリズムの実行時間が長くなるアルゴリズムが一般的ですが、データ (の片方) が長くなると実行が早くなるアルゴリズムがあります。このアルゴリズムを明記の上、この現象を中心に詳しく説明しなさい。
アルゴリズムは Boyer-Moore の文字列照合アルゴリズムである。 長い文書の中にある程度の長さのパターンを見つけるのが目的である。 Boyer-Moore のアルゴリズムは他の文字列照合のアルゴリズムと 違って、パターンが長くなると早くなる傾向があります。文書の長さを n, パターンの長さを m とすると平均の実行時間が O(n/m) である。 なぜならば、アルゴリズムはパターンの頭ではなく、パターンの末尾を文書と 照合するところから始まる。パターンの末尾の文字と比較される文書の文字 がパターンに全くはいてないと、パターンを一期に m 文字分ずらして次の照合 が行われる。
次の英語の用語に相当する日本語の用語を書いて、簡単に説明しなさい。日本語の用語ではカタカナをできるだけ避けなさい。
辞書という抽象データ型には様々な実装がある。各実装の計算量を下記の表に記入しなさい。
方法 | 探索 | 挿入 | 削除 |
---|---|---|---|
整列無し連結リスト | O (n) | O (1) | O (n) |
整列済み連結リスト | O (n) | O (n) | O (n) |
整列無し配列 | O (n) | O (1) | O (n) |
整列済み配列 | O (log n) | O (n) | O (n) |
二分探索木 (最悪) | O (n) | O (n) | O (n) |
二分探索木 (平均) | O (log n) | O (log n) | O (log n) |
赤黒木 | O (log n) | O (log n) | O (log n) |
ハッシュ (最悪) | O (n) | O (n) | O (n) |
ハッシュ (平均) | O (1) | O (1) | O (1) |
後期試験 ・ 2015 年 1 月 30 日 1 時限実施 ・ ページ
授業 科目 |
データ構造とアルゴリズム | 学生番号 | 学科 | 学年 | 組 | 番 | フリ ガナ |
評点 | ||||||||
氏名 | ||||||||||||||||
担当者 | DÜRST, Martin J. |
下記の課題のため、下記の部分問題 11.1 から 11.4 のアルゴリズムの設計方針や原理を使って、それぞれアルゴリズムの概略を提案し、予想される計算量とその根拠、設計方針を使った場合の問題点について述べなさい。
注: この問題の目的は、できるだけ最適な結果のアルゴリズムの発見よりも、設計方針の知識の応用である。
課題: 某会社の社長から、m 個の機械で n 個の作業 s0
... sn-1 (それそれかかる時間が t0 ...
tn-1) の、全部の作業ができるだけ早く終わるスケジュールを作るように依頼されている。
作業はどの機会機械でも実行可能で、どの機会機械でも同じ時間がかかる。m も n
もかなり大きな数である (例えば機械百台、作業一千個)。
分割統治法
機械の数を二分割する。作業を合計時間が近くなるように二分割する。 再帰的に機械が一つになるまで実行する。計算量が O(n log n)。 問題は、分割によって最適解より悪い結果が得られることである。
動的計画法
作業を入力順にならべ、隣同士の作業一つ、二つ、三つ、… と 合計時間を計算する。それによって、できるだけ均等に機会に作業時間を分割するように調整する。 計算量は O(n2 + n*m)。最適性の保証がないので、最適解に届くのが難しいです。
貪欲アルゴリズム
作業を大きい順に整列し、順番に早く終わりそうな機会に当てる。 整列が必要なので、計算量は O(n2)。 最適解を出す保証がないが、小さい作業が多い場合、最適解にかなり近くなる可能性がある。
遺伝的アルゴリズム
最初は乱数で機械に作業を振り分ける解をいくつか作る。 その後解の組合せ (有性生殖)、解内の情報交換 (交叉)、乱数による変換 (突然変異) を使って、世代ごとに解を作り直して、一番いい解を生き残らせる。計算量は O(n∙解の数∙世代の数)。 問題点: アルゴリズムの調整、最適解が得られる保証がない。
この問題が NP 困難であると分かりました。社長に「絶対に明日まで一番いい解を出してくれ。」と言われたときの返事の概略を書いてください。
大変申し訳ございませんが、この問題は 独立集合問題や巡回セールスマン問題をはじめ多くの問題と同様に NP 困難であり、 いまだに必ず早い時間 (数年以上のではなく、明日まで) で完璧に解けるアルゴリズム (方法) が見つかっていません。万が一見つかったら世紀の大発見になり、一億円以上の賞も貰える。 多くの専門家はそれが無理だと思っているが、その証明もいまだできていません。