1.やさしい
再帰とは何ですか?
- Aソートの手法の一つ
- B決して終わらないループ
- Cより小さな入力に対して自分自身を呼び出す関数
- Dデータ構造の一種
2.やさしい
メモ化(memoisation)とは何ですか?
- Aコードの各行の横にコメントを書くこと
- B関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- C再帰を自動的に等価なループに変換し、コールスタックを不要にすること
- D関数が戻った後にメモリを解放すること
3.やさしい
配列の要素にインデックスでアクセスするのにかかる時間は次のどれですか?
- AO(log n)
- BO(n²)
- CO(n)
- DO(1)
4.ふつう
安定(stable)なソートアルゴリズムはどれですか?
- Aクイックソート(一般的なインプレース版)
- B選択ソート(一般的な版)
- Cヒープソート
- Dマージソート
5.ふつう
for i = 1 to n: for j = 1 to i: do O(1) work の時間計算量は何ですか?
- AO(n)
- BO(n²)
- CO(n log n)
- DO(n³)
6.ふつう
活動選択問題で、重ならない活動の数を常に最大にする貪欲な規則はどれですか?
- A最も早く終わる活動を選び、両立する活動で繰り返す
- B最も早く始まる活動を選ぶ
- C重なりの最も少ない活動を先に選び、両立する活動で繰り返す
- D最も短い活動から選ぶ
7.むずかしい
n 個の未ソート要素からボトムアップ法で二分ヒープを構築する時間計算量は何ですか?
- AO(n²)
- BO(log n)
- CO(n log n)
- DO(n)
8.むずかしい
動的計画法で解く 0/1 ナップサック問題は O(nW) 時間かかります。これが擬多項式(pseudo-polynomial)と呼ばれるのはなぜですか?
- AW は数値なので、実行時間は W を書くのに使うビット数に対して指数的になるから
- BW = 0 の場合にしか動作しないから
- Cn が常に小さいから
- Dアルゴリズムが乱択(randomised)で、実行時間が入力ごとに変わるから
解答
- 1. C · より小さな入力に対して自分自身を呼び出す関数
- 2. B · 関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- 3. D · O(1)
- 4. D · マージソート
- 5. B · O(n²)
- 6. A · 最も早く終わる活動を選び、両立する活動で繰り返す
- 7. D · O(n)
- 8. A · W は数値なので、実行時間は W を書くのに使うビット数に対して指数的になるから
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。