1.やさしい
分割統治アルゴリズムの 3 つのステップは何ですか?
- A分割、統治、結合
- B推測、確認、反復
- C読み込み、計算、書き出し
- Dソート、探索、返却
2.やさしい
メモ化(memoisation)とは何ですか?
- A関数が戻った後にメモリを解放すること
- B関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- Cコードの各行の横にコメントを書くこと
- D再帰を自動的に等価なループに変換し、コールスタックを不要にすること
3.やさしい
マージソートの最悪時間計算量は何ですか?
- AO(log n)
- BO(n)
- CO(n log n)
- DO(n²)
4.ふつう
単純な再帰の階乗関数 fact(n) = n × fact(n − 1) はどれだけのスタック領域を使いますか?
- AO(n)
- BO(1)
- CO(n²)
- DO(log n)
5.ふつう
動的計画法がマージソートを実質的に高速化しないのはなぜですか?
- A動的計画法はグラフ問題にしか使えず、配列には使えないから
- B部分問題が重複しないので、再利用するものがないから
- Cマージソートはすでに O(n) だから
- Dマージソートには再帰的な構造がないから
6.ふつう
n 要素の配列に対するマージソートの再帰は何段階になりますか?
- A約 √n
- B約 n / 2
- C約 log₂ n
- D約 n
7.むずかしい
ヘルド-カープの動的計画法アルゴリズムは巡回セールスマン問題を厳密に解きます。n 都市に対する実行時間は何ですか?
- AO(n² 2ⁿ)
- BO(n³)
- CO(n!)
- DO(2n²)
8.むずかしい
極大マッチングのすべての辺の両端点をとると頂点被覆が得られます。この被覆はどれくらいよいですか?
- A常に最小頂点被覆
- B最小値の高々 log n 倍
- C最適解と比べた品質は不明
- D最小頂点被覆のサイズの高々 2 倍
解答
- 1. A · 分割、統治、結合
- 2. B · 関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- 3. C · O(n log n)
- 4. A · O(n)
- 5. B · 部分問題が重複しないので、再利用するものがないから
- 6. C · 約 log₂ n
- 7. A · O(n² 2ⁿ)
- 8. D · 最小頂点被覆のサイズの高々 2 倍
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。