以下问题已在 GATE CS 考试中提出。
1. 插入排序的通常 Θ(n^2) 实现对数组进行排序使用线性搜索来识别元素要插入到数组已排序部分的位置。相反,如果我们使用二进制搜索来识别位置,最坏情况下的运行时间将 (GATE CS 2003)
(a) 保持 Θ(n^2)
(b) 变成 Θ(n(log n)^2)
(c) 变成 Θ(n log n)
(d) 变成 Θ(n)
答案(一)
如果我们使用二分查找,那么在最坏的情况下会有 ⌈ Log 2 (n!) ⌉ 次比较,即 Θ(n log n) (如果你想知道 ⌈ Log 2 (n!) ⌉ 可以等于Θ(n log n)),然后看这个证明)。但由于每次插入需要一系列交换,整个算法的平均运行时间仍为 Θ(n^2)。
参考:
http://en.wikipedia.org/wiki/Insertion_sort
2. 比较次数的最严格下限,在最坏的情况下,基于比较的排序是
一个
b) n^2
c) 日志
d) n(log^2)n
答案 (c)
比较排序算法需要的比较次数与 nlog(n) 成比例增加,其中 n 是要排序的元素数。这个界限是渐近紧的:
给定一个不同数字的列表(我们可以假设这是最坏情况的分析),有 n 个阶乘排列,其中一个是按排序顺序排列的列表。排序算法必须从比较中获得足够的信息来识别正确的排列。如果算法总是在最多 f(n) 步后完成,则它无法区分超过 2^f(n) 种情况,因为键是不同的,并且每次比较只有两种可能的结果。所以,
2^f(n) >= n!, or equivalently f(n) > Log2(n!).
参考:
http://en.wikipedia.org/wiki/Comparison_sort
http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15451-s07/www/lecture_notes/lect0130.pdf
3. 问题 3-SAT 和 2-SAT 是
a) 都在 P
b) 两个 NP 都完成
c) NP-complete 和 in P 分别
d) 分别是不可判定的和 NP 完全的
答案 (c)
布尔可满足性问题 (SAT) 是一个决策问题,其实例是仅使用 AND、OR、NOT、变量和括号编写的布尔表达式。问题是:给定表达式,是否有一些 TRUE 和 FALSE 值分配给使整个表达式为真的变量?命题逻辑的公式如果能够以某种方式将逻辑值赋给它的变量,使得该公式成立,则称该公式是可满足的。
3-SAT 和 2-SAT 是 k-可满足性 (k-SAT) 或简单可满足性 (SAT) 的特殊情况,当每个子句分别包含恰好 k = 3 和 k = 2 个字面量。
2-SAT 是 P,而 3-SAT 是 NP Complete。 (看这个解释)
参考:
http://en.wikipedia.org/wiki/Boolean_satisfiability_problem
4. 考虑下图
在以下序列中
我) abeghf
II) abfehg
III) abfhge
IV) 阿富汗
哪些是上图的深度优先遍历? (GATE CS 2003)
a) 仅 I、II 和 IV
b) 仅 I 和 IV
c) 仅限 II、III 和 IV
d) 仅 I、III 和 IV
答案 (d)