1.やさしい
ある操作が O(1) 時間で動作するとはどういう意味ですか?
- A実行時間 1 秒あたりちょうど 1 要素を処理する
- B一度しか実行できない
- C実行時間が入力サイズとともに増加しない
- D常にちょうど 1 秒かかる
2.やさしい
あるループは i = 1 から始まり、i > n となるまで各反復で i を 2 倍にします。何回反復しますか?
- A約 n² 回
- B約 log₂ n 回
- C約 n / 2 回
- D約 n 回
3.やさしい
メモ化(memoisation)とは何ですか?
- Aコードの各行の横にコメントを書くこと
- B関数が戻った後にメモリを解放すること
- C再帰を自動的に等価なループに変換し、コールスタックを不要にすること
- D関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
4.ふつう
動的計画法(dynamic programming)が有効なのは、問題が次の性質を持つときです。
- Aループが一つだけ
- B重複する部分問題と最適部分構造
- Cランダムな入力のみ
- D部分問題がまったくないので、1 ステップで解ける
5.ふつう
動的計画法がマージソートを実質的に高速化しないのはなぜですか?
- A動的計画法はグラフ問題にしか使えず、配列には使えないから
- Bマージソートはすでに O(n) だから
- C部分問題が重複しないので、再利用するものがないから
- Dマージソートには再帰的な構造がないから
6.ふつう
k 進数で d 桁の n 個の整数に対する LSD 基数ソートの実行時間は何ですか?
- AO(n²)
- BO(n log n)
- CO(dn log k)
- DO(d(n + k))
7.むずかしい
ヘルド-カープの動的計画法アルゴリズムは巡回セールスマン問題を厳密に解きます。n 都市に対する実行時間は何ですか?
- AO(2n²)
- BO(n!)
- CO(n² 2ⁿ)
- DO(n³)
8.むずかしい
n が大きいとき、n! と 2ⁿ はどのように比較されますか?
- A2ⁿ は n! より速く増加する
- Bn! は O(n²) である
- Cn! は 2ⁿ より速く増加する
- D同じ速さで増加する
解答
- 1. C · 実行時間が入力サイズとともに増加しない
- 2. B · 約 log₂ n 回
- 3. D · 関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- 4. B · 重複する部分問題と最適部分構造
- 5. C · 部分問題が重複しないので、再利用するものがないから
- 6. D · O(d(n + k))
- 7. C · O(n² 2ⁿ)
- 8. C · n! は 2ⁿ より速く増加する
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。