1.简单
在以邻接表存储的图上进行深度优先搜索,时间复杂度是多少?
- AO(V + E)
- BO(V × E)
- CO(E log V)
- DO(V²)
2.简单
一个问题通常在什么情况下被称为易解的(tractable)?
- A只能通过尝试所有可能来求解
- B能在多项式时间内求解
- C能在常数时间内求解
- D没有解
3.简单
递归函数的基本情况是什么?
- A函数的第一行
- B无需再进行递归调用就能直接给出答案的情况
- C输入最大的情况,它在任何递归调用之前就被处理
- D使用内存最多的那次调用
4.中等
一个问题具有最优子结构是什么意思?
- A该问题可以在常数时间内求解
- B该问题恰好有一个最优解,所有子问题共享这个解
- C每个子问题的规模都相同
- D最优解可以由其子问题的最优解构造出来
5.中等
简单的递归阶乘函数 fact(n) = n × fact(n − 1) 使用多少栈空间?
- AO(n)
- BO(n²)
- CO(1)
- DO(log n)
6.中等
哪种排序算法是稳定的?
- A归并排序
- B堆排序
- C快速排序(常见的原地版本)
- D选择排序(常见版本)
7.困难
要证明一个判定问题 X 是 NP 完全的,必须证明哪两点?
- AX 能归约到 P 中的某个问题,并且 X 属于 NP
- BX 属于 NP,并且某个已知的 NP 完全问题能在多项式时间内归约到 X
- CX 属于 P,并且 X 能归约到 SAT
- DX 没有多项式算法,并且 X 是可判定的
8.困难
为什么在单链表上二分查找不能达到 O(log n) 的时间?
- A链表节点上的比较更慢
- B二分查找至少需要两倍的内存
- C由于不能按下标直接访问,到达中间元素需要 O(n) 步
- D链表无法排序
答案
- 1. A · O(V + E)
- 2. B · 能在多项式时间内求解
- 3. B · 无需再进行递归调用就能直接给出答案的情况
- 4. D · 最优解可以由其子问题的最优解构造出来
- 5. A · O(n)
- 6. A · 归并排序
- 7. B · X 属于 NP,并且某个已知的 NP 完全问题能在多项式时间内归约到 X
- 8. C · 由于不能按下标直接访问,到达中间元素需要 O(n) 步
完整分步解答:请在 examproblems.com 上练习本主题。