1.やさしい
n 個の要素を持つ未ソートの配列に対する線形探索(linear search)の時間計算量(最悪の場合)は何ですか?
- AO(log n)
- BO(1)
- CO(n)
- DO(n²)
2.やさしい
隣接リストで格納されたグラフに対する深さ優先探索の時間計算量は何ですか?
- AO(V²)
- BO(E log V)
- CO(V × E)
- DO(V + E)
3.やさしい
選択ソート(selection sort)はどのように動作しますか?
- Aシフトによって各要素を成長していくソート済み部分に挿入する
- B未ソート部分の最小値を繰り返し見つけ、それを先頭に交換する
- C配列を半分に分け、それらをマージする
- D順序が逆になっている隣り合う要素を繰り返し交換する
4.ふつう
1,000,000 要素のソート済み配列に対して、二分探索は最悪の場合およそ何回の比較を必要としますか?
- A約 1,000 回
- B約 20 回
- C約 100 回
- D約 500,000 回
5.ふつう
満杯になると容量を2倍にする動的配列に要素を追加する操作の償却(amortised)時間計算量は何ですか?
- AO(log n)
- BO(n²)
- CO(1)
- DO(n)
6.ふつう
多くのライブラリのソート関数が、非常に小さな部分配列では挿入ソートに切り替えるのはなぜですか?
- A挿入ソートはオーバーヘッドが小さく、小さな入力やほぼソート済みの入力で速いから
- B挿入ソートは最悪の場合 O(n log n) だから
- C再帰アルゴリズムは 10 要素未満の配列を扱えないから
- D大きな入力では、挿入ソートは他のどのソートアルゴリズムよりメモリが少なくて済むから
7.むずかしい
log(n!) について正しい評価はどれですか?
- AΘ(n log n)
- BΘ(n²)
- CΘ(n)
- DΘ(log n)
8.むずかしい
次の充足可能性問題のうち、多項式時間で解けることが知られているのはどれですか?
- A連言標準形の式に対する一般の SAT
- B回路充足可能性問題
- C各節のリテラルがちょうど 3 個の 3-SAT
- D各節のリテラルが高々 2 個の 2-SAT
解答
- 1. C · O(n)
- 2. D · O(V + E)
- 3. B · 未ソート部分の最小値を繰り返し見つけ、それを先頭に交換する
- 4. B · 約 20 回
- 5. C · O(1)
- 6. A · 挿入ソートはオーバーヘッドが小さく、小さな入力やほぼソート済みの入力で速いから
- 7. A · Θ(n log n)
- 8. D · 各節のリテラルが高々 2 個の 2-SAT
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。