1.やさしい
マージソートの最悪時間計算量は何ですか?
- AO(n²)
- BO(n)
- CO(log n)
- DO(n log n)
2.やさしい
ある操作が O(1) 時間で動作するとはどういう意味ですか?
- A一度しか実行できない
- B常にちょうど 1 秒かかる
- C実行時間 1 秒あたりちょうど 1 要素を処理する
- D実行時間が入力サイズとともに増加しない
3.やさしい
メモ化(memoisation)とは何ですか?
- A関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- Bコードの各行の横にコメントを書くこと
- C関数が戻った後にメモリを解放すること
- D再帰を自動的に等価なループに変換し、コールスタックを不要にすること
4.ふつう
問題が最適部分構造をもつとはどういう意味ですか?
- Aすべての部分問題が同じサイズである
- B問題の最適解がちょうど 1 つで、すべての部分問題がそれを共有しているから
- C最適解を部分問題の最適解から構成できる
- D問題を定数時間で解ける
5.ふつう
ある関数は n 回反復するループを 1 つ実行し、その後別に n 回反復するループをもう 1 つ実行します。時間計算量は何ですか?
- AO(log n)
- BO(2ⁿ)
- CO(n²)
- DO(n)
6.ふつう
ソート済み配列で、両端から 1 つずつポインタを内側へ動かして、和が目標値になる 2 つの要素を探します。時間計算量は何ですか?
- AO(n²)
- BO(n)
- CO(log n)
- DO(n log n)
7.むずかしい
動的計画法で解く 0/1 ナップサック問題は O(nW) 時間かかります。これが擬多項式(pseudo-polynomial)と呼ばれるのはなぜですか?
- AW は数値なので、実行時間は W を書くのに使うビット数に対して指数的になるから
- Bアルゴリズムが乱択(randomised)で、実行時間が入力ごとに変わるから
- CW = 0 の場合にしか動作しないから
- Dn が常に小さいから
8.むずかしい
どんな入力に対してもクイックソートの期待(expected)実行時間を O(n log n) にする手法はどれですか?
- A左側にのみ再帰を使う
- B常に先頭の要素を選ぶ
- Cクイックソートを実行する前に入力をソートする
- Dピボットを一様ランダムに選ぶ
解答
- 1. D · O(n log n)
- 2. D · 実行時間が入力サイズとともに増加しない
- 3. A · 関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- 4. C · 最適解を部分問題の最適解から構成できる
- 5. D · O(n)
- 6. B · O(n)
- 7. A · W は数値なので、実行時間は W を書くのに使うビット数に対して指数的になるから
- 8. D · ピボットを一様ランダムに選ぶ
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。