1.やさしい
隣接リストで格納されたグラフに対する深さ優先探索の時間計算量は何ですか?
- AO(E log V)
- BO(V × E)
- CO(V²)
- DO(V + E)
2.やさしい
マージソートの最悪時間計算量は何ですか?
- AO(log n)
- BO(n log n)
- CO(n)
- DO(n²)
3.やさしい
メモ化(memoisation)とは何ですか?
- A関数が戻った後にメモリを解放すること
- B再帰を自動的に等価なループに変換し、コールスタックを不要にすること
- C関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- Dコードの各行の横にコメントを書くこと
4.ふつう
動的計画法がマージソートを実質的に高速化しないのはなぜですか?
- A部分問題が重複しないので、再利用するものがないから
- Bマージソートには再帰的な構造がないから
- C動的計画法はグラフ問題にしか使えず、配列には使えないから
- Dマージソートはすでに O(n) だから
5.ふつう
漸化式 T(n) = 2T(n − 1) + O(1) の解は何ですか?
- AO(n²)
- BO(n log n)
- CO(n)
- DO(2ⁿ)
6.ふつう
比較に基づくソートの最悪の場合の下界はどれですか?
- AΩ(n)
- BΩ(n log n)
- CΩ(n²)
- DΩ(log n)
7.むずかしい
トポロジカルソートが可能なのは、次のどのグラフだけですか?
- A負の重みを持つグラフ
- B完全グラフ
- C無向グラフ
- D有向非巡回グラフ(DAG)
8.むずかしい
ベルマン-フォード法は、始点から到達可能な負の重みの閉路をどのように検出しますか?
- AV − 1 回のラウンドの後、まだ緩和できる辺があるかどうかを調べる
- Bダイクストラ法を 2 回実行し、2 つの距離の結果を比べる
- C負の重みをもつ辺があるかどうかを調べる
- D深さ優先探索で閉路を数える
解答
- 1. D · O(V + E)
- 2. B · O(n log n)
- 3. C · 関数呼び出しの結果を保存し、同じ呼び出しにはメモリから答えること
- 4. A · 部分問題が重複しないので、再利用するものがないから
- 5. D · O(2ⁿ)
- 6. B · Ω(n log n)
- 7. D · 有向非巡回グラフ(DAG)
- 8. A · V − 1 回のラウンドの後、まだ緩和できる辺があるかどうかを調べる
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。