1.简单
一个问题通常在什么情况下被称为易解的(tractable)?
- A能在多项式时间内求解
- B没有解
- C只能通过尝试所有可能来求解
- D能在常数时间内求解
2.简单
什么是蛮力算法(brute-force algorithm)?
- A总是使用递归的算法
- B在多个处理器上运行的算法
- C随机猜测答案的算法
- D尝试所有可能的候选解的算法
3.简单
一个 O(n) 算法在 n = 100 万时需要 3 秒。n = 200 万时大约需要多长时间?
- A6 秒
- B12 秒
- C9 秒
- D3 秒
4.中等
说一个 O(n²) 算法也是 O(n³),这正确吗?
- A不正确,因为当 n 很大时 n³ 小于 n²
- B正确,但仅当 n 小于 100 时
- C正确,因为 Big O 是上界,而 n² 的增长不比 n³ 快
- D不正确,因为 Big O 必须始终给出函数的确切增长率
5.中等
递推式 T(n) = T(n − 1) + O(1) 的解是什么?
- AO(n²)
- BO(2ⁿ)
- CO(log n)
- DO(n)
6.中等
在边权非负的图中,哪种算法用于求单源最短路径?
- ADijkstra 算法
- BKruskal 算法
- C深度优先搜索(DFS)
- D任何情况下都必须使用 Bellman–Ford
7.困难
22n 属于 O(2ⁿ) 吗?
- A属于,因为在 Big O 中指数里的常数因子总是被忽略
- B不属于,因为 22n = 4ⁿ,而 4ⁿ / 2ⁿ = 2ⁿ 无界地增长
- C属于,因为两者都是指数级的
- D不属于,因为 22n 增长得比 2ⁿ 慢
8.困难
递推式 T(n) = 2T(n/2) + n log n 的解是什么?
- AΘ(n log² n)
- BΘ(n)
- CΘ(n²)
- DΘ(n log n)
答案
- 1. A · 能在多项式时间内求解
- 2. D · 尝试所有可能的候选解的算法
- 3. A · 6 秒
- 4. C · 正确,因为 Big O 是上界,而 n² 的增长不比 n³ 快
- 5. D · O(n)
- 6. A · Dijkstra 算法
- 7. B · 不属于,因为 22n = 4ⁿ,而 4ⁿ / 2ⁿ = 2ⁿ 无界地增长
- 8. A · Θ(n log² n)
完整分步解答:请在 examproblems.com 上练习本主题。