1.やさしい
順序が誤っている隣接要素を繰り返し交換するソートアルゴリズムはどれですか?
- Aヒープソート(Heap sort)
- Bクイックソート(Quicksort)
- Cバブルソート(Bubble sort)
- Dマージソート(Merge sort)
2.やさしい
総当たり(brute-force)アルゴリズムとは何ですか?
- A多数のプロセッサで動作するアルゴリズム
- B答えをランダムに推測するアルゴリズム
- C常に再帰を使うアルゴリズム
- D考えられるすべての候補解を試すアルゴリズム
3.やさしい
それぞれ n 回実行される二重の入れ子ループを持つアルゴリズムの計算量は、通常どれですか?
- AO(log n)
- BO(n²)
- CO(2n)
- DO(n)
4.ふつう
ならし解析(amortised analysis)は何を測りますか?
- Aランダムな入力に対する期待コスト
- B最悪の操作列にわたる操作 1 回あたりの平均コスト
- C最良の入力に対するアルゴリズムのコスト
- D操作列のどこかにある、最もコストの高い 1 回の操作のコスト
5.ふつう
O(log n) のように、Big O で対数の底が通常省略されるのはなぜですか?
- A底は n が小さいときにしか問題にならないから
- B計算機科学のすべての対数は底が 10 なので、省略されているから
- C底の異なる対数は定数倍しか違わないから
- D対数は常に整数に丸められるから
6.ふつう
辺の重みが非負のグラフで、一つの始点からの最短経路を求めるアルゴリズムはどれですか?
- AKruskal 法
- BDijkstra 法
- Cどの場合でも Bellman–Ford が必要
- D深さ優先探索(DFS)
7.むずかしい
V 個の頂点と E 本の辺をもつグラフで、二分ヒープを用いたダイクストラ法の実行時間は何ですか?
- AO(V × E)
- BO((V + E) log V)
- CO(V + E)
- DO(V³)
8.むずかしい
動的計画法で解く 0/1 ナップサック問題は O(nW) 時間かかります。これが擬多項式(pseudo-polynomial)と呼ばれるのはなぜですか?
- AW = 0 の場合にしか動作しないから
- Bn が常に小さいから
- CW は数値なので、実行時間は W を書くのに使うビット数に対して指数的になるから
- Dアルゴリズムが乱択(randomised)で、実行時間が入力ごとに変わるから
解答
- 1. C · バブルソート(Bubble sort)
- 2. D · 考えられるすべての候補解を試すアルゴリズム
- 3. B · O(n²)
- 4. B · 最悪の操作列にわたる操作 1 回あたりの平均コスト
- 5. C · 底の異なる対数は定数倍しか違わないから
- 6. B · Dijkstra 法
- 7. B · O((V + E) log V)
- 8. C · W は数値なので、実行時間は W を書くのに使うビット数に対して指数的になるから
ステップごとの詳しい解答:このトピックは examproblems.com で練習できます。