1.やさしい
標準的な配列ベースのマージソートは、どれだけの追加メモリを使いますか?
- AO(n)
- BO(log n)
- CO(1)
- DO(n²)
2.やさしい
二分探索は入力に何を要求しますか?
- A配列が正の数だけを含むこと
- B配列がソートされていること
- C配列の長さが 2 のべき乗であること
- D配列の要素が 1000 個以下であること
3.やさしい
メモ化(memoisation)とは何ですか?
- A再帰を自動的に等価なループに変換し、コールスタックを不要にすること
- Bコードの各行の横にコメントを書くこと
- C関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- D関数が戻った後にメモリを解放すること
4.ふつう
単純な再帰の階乗関数 fact(n) = n × fact(n − 1) はどれだけのスタック領域を使いますか?
- AO(n²)
- BO(log n)
- CO(n)
- DO(1)
5.ふつう
長さ m と n の文字列の最長共通部分列を求める標準的な動的計画法の時間計算量は何ですか?
- AO(mn)
- BO(2m+n)
- CO(mn log n)
- DO(m + n)
6.ふつう
ならし解析(amortised analysis)は何を測りますか?
- A最良の入力に対するアルゴリズムのコスト
- B最悪の操作列にわたる操作 1 回あたりの平均コスト
- C操作列のどこかにある、最もコストの高い 1 回の操作のコスト
- Dランダムな入力に対する期待コスト
7.むずかしい
どんな入力に対してもクイックソートの期待(expected)実行時間を O(n log n) にする手法はどれですか?
- Aクイックソートを実行する前に入力をソートする
- B常に先頭の要素を選ぶ
- C左側にのみ再帰を使う
- Dピボットを一様ランダムに選ぶ
8.むずかしい
巡回セールスマン問題はどのように分類されますか?
- A決定版は NP 完全で、最適化版は NP 困難である
- B決定不能である
- Cダイクストラ法がすべての都市を 1 回ずつ訪れて解くので、P に属する
- D決定版は P に属するが、最適化版は NP 完全である
解答
- 1. A · O(n)
- 2. B · 配列がソートされていること
- 3. C · 関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- 4. C · O(n)
- 5. A · O(mn)
- 6. B · 最悪の操作列にわたる操作 1 回あたりの平均コスト
- 7. D · ピボットを一様ランダムに選ぶ
- 8. A · 決定版は NP 完全で、最適化版は NP 困難である
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。