1.やさしい
O(2ⁿ) の増加は何と呼ばれますか?
- A指数的
- B多項式的
- C線形
- D対数的
2.やさしい
メモ化(memoisation)とは何ですか?
- Aコードの各行の横にコメントを書くこと
- B関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- C再帰を自動的に等価なループに変換し、コールスタックを不要にすること
- D関数が戻った後にメモリを解放すること
3.やさしい
ソート済み配列に対する二分探索(binary search)の時間計算量は何ですか?
- AO(1)
- BO(log n)
- CO(n log n)
- DO(n)
4.ふつう
漸化式 T(n) = 2T(n − 1) + O(1) の解は何ですか?
- AO(2ⁿ)
- BO(n²)
- CO(n log n)
- DO(n)
5.ふつう
多くのライブラリのソート関数が、非常に小さな部分配列では挿入ソートに切り替えるのはなぜですか?
- A再帰アルゴリズムは 10 要素未満の配列を扱えないから
- B挿入ソートは最悪の場合 O(n log n) だから
- C挿入ソートはオーバーヘッドが小さく、小さな入力やほぼソート済みの入力で速いから
- D大きな入力では、挿入ソートは他のどのソートアルゴリズムよりメモリが少なくて済むから
6.ふつう
素朴な再帰によるフィボナッチ(fib(n) = fib(n−1) + fib(n−2))の時間計算量はどれですか?
- A定数時間
- B対数時間
- C指数時間
- D線形時間
7.むずかしい
log(n!) について正しい評価はどれですか?
- AΘ(n)
- BΘ(n log n)
- CΘ(n²)
- DΘ(log n)
8.むずかしい
未ソートの配列から k 番目に小さい要素を選択することについて、正しい記述はどれですか?
- A選択は O(n²) でしか行えない
- Bクイックセレクトはピボットの片側だけで再帰するので、最悪でも O(log n) で動作する
- Cクイックセレクトは期待 O(n) で動作し、中央値の中央値法は最悪 O(n) を保証する
- D選択にはソートが必要なので、常に Ω(n log n) が必要である
解答
- 1. A · 指数的
- 2. B · 関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- 3. B · O(log n)
- 4. A · O(2ⁿ)
- 5. C · 挿入ソートはオーバーヘッドが小さく、小さな入力やほぼソート済みの入力で速いから
- 6. C · 指数時間
- 7. B · Θ(n log n)
- 8. C · クイックセレクトは期待 O(n) で動作し、中央値の中央値法は最悪 O(n) を保証する
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。