1.やさしい
メモ化(memoisation)とは何ですか?
- A再帰を自動的に等価なループに変換し、コールスタックを不要にすること
- B関数が戻った後にメモリを解放すること
- Cコードの各行の横にコメントを書くこと
- D関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
2.やさしい
すでにソート済みの配列に対する挿入ソートの最良時間計算量は何ですか?
- AO(1)
- BO(n)
- CO(n log n)
- DO(n²)
3.やさしい
アルゴリズムとは何ですか?
- A問題を解く、明確に定義された手順の有限の列
- Bグラフィカルなインターフェースをもつあらゆるコンピュータプログラム
- C数式を書くために設計されたプログラミング言語
- D数値を格納するデータ構造
4.ふつう
クイックソートの最悪時間計算量は何ですか?
- AO(n²)
- BO(n)
- CO(n log n)
- DO(log n)
5.ふつう
貪欲法(greedy algorithm)の説明として正しいものはどれですか?
- A再帰のみを使用する
- B常に最適解を与える
- C各ステップで局所的に最良の選択をする
- D可能なすべての解を試す
6.ふつう
1、3、4 の硬貨で金額 6 をつくるとき、貪欲な「最大の硬貨から」方式は最適解と比べて何枚の硬貨を使いますか?
- A貪欲法は 3 枚、最適解は 3 枚
- B貪欲法は 3 枚、最適解は 2 枚
- C貪欲法は 2 枚、最適解は 2 枚
- D貪欲法は 4 枚、最適解は 3 枚
7.むずかしい
単方向連結リストでは、二分探索が O(log n) 時間にならないのはなぜですか?
- A連結リストはソートできないから
- Bインデックスによる直接アクセスがないので、中央の要素に到達するのに O(n) ステップかかるから
- C二分探索には少なくとも 2 倍のメモリが必要だから
- D連結リストのノードでの比較は遅いから
8.むずかしい
ソート済み配列における比較に基づく探索が、最悪の場合 Ω(log n) 回の比較を必要とするのはなぜですか?
- A比較 1 回ごとに対数時間がかかるから
- B二分探索が唯一可能なアルゴリズムであり、log₂ n 回の比較が必要だから
- Cすべての要素を少なくとも一度比較しなければならないから
- Dn 通りの結果をもつ決定木は、深さが少なくとも log₂ n でなければならないから
解答
- 1. D · 関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- 2. B · O(n)
- 3. A · 問題を解く、明確に定義された手順の有限の列
- 4. A · O(n²)
- 5. C · 各ステップで局所的に最良の選択をする
- 6. B · 貪欲法は 3 枚、最適解は 2 枚
- 7. B · インデックスによる直接アクセスがないので、中央の要素に到達するのに O(n) ステップかかるから
- 8. D · n 通りの結果をもつ決定木は、深さが少なくとも log₂ n でなければならないから
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。