1.やさしい
標準的な配列ベースのマージソートは、どれだけの追加メモリを使いますか?
- AO(1)
- BO(log n)
- CO(n)
- DO(n²)
2.やさしい
選択ソート(selection sort)はどのように動作しますか?
- A配列を半分に分け、それらをマージする
- B未ソート部分の最小値を繰り返し見つけ、それを先頭に交換する
- C順序が逆になっている隣り合う要素を繰り返し交換する
- Dシフトによって各要素を成長していくソート済み部分に挿入する
3.やさしい
0 から k の範囲の n 個の整数に対する計数ソート(counting sort)の実行時間は何ですか?
- AO(k log n)
- BO(n log n)
- CO(n + k)
- DO(n²)
4.ふつう
1,000,000 要素のソート済み配列に対して、二分探索は最悪の場合およそ何回の比較を必要としますか?
- A約 500,000 回
- B約 100 回
- C約 1,000 回
- D約 20 回
5.ふつう
満杯になると容量を2倍にする動的配列に要素を追加する操作の償却(amortised)時間計算量は何ですか?
- AO(log n)
- BO(1)
- CO(n²)
- DO(n)
6.ふつう
問題が最適部分構造をもつとはどういう意味ですか?
- A問題を定数時間で解ける
- Bすべての部分問題が同じサイズである
- C問題の最適解がちょうど 1 つで、すべての部分問題がそれを共有しているから
- D最適解を部分問題の最適解から構成できる
7.むずかしい
log(n!) について正しい評価はどれですか?
- AΘ(n log n)
- BΘ(n)
- CΘ(n²)
- DΘ(log n)
8.むずかしい
決定不能な問題と扱いにくい問題の違いは何ですか?
- Aどちらもアルゴリズムがまったくないことを意味する
- B決定不能な問題は NP に属し、扱いにくい問題は P に属する
- C決定不能な問題にはすべての入力で解くアルゴリズムがなく、扱いにくい問題にはあるが遅すぎる
- D扱いにくい問題はどのアルゴリズムでも解けず、決定不能な問題は指数時間を必要とするだけである
解答
- 1. C · O(n)
- 2. B · 未ソート部分の最小値を繰り返し見つけ、それを先頭に交換する
- 3. C · O(n + k)
- 4. D · 約 20 回
- 5. B · O(1)
- 6. D · 最適解を部分問題の最適解から構成できる
- 7. A · Θ(n log n)
- 8. C · 決定不能な問題にはすべての入力で解くアルゴリズムがなく、扱いにくい問題にはあるが遅すぎる
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。