以下问题已在 GATE CS 2006 考试中提出。
1. 设 S 是一个 NP 完全问题,Q 和 R 是另外两个未知的 NP 问题。 Q 是多项式时间可约化为 S,S 是多项式时间可约化到 R。以下哪一项陈述是正确的?
(A) R 是 NP 完全的
(B) R 是 NP-hard
(C) Q 是 NP 完全的
(D) Q 是 NP-hard
答案 (B)
(A) 不正确,因为 R 不在 NP 中。 NP Complete 问题必须同时属于 NP 和 NP-hard。
(B) 正确,因为 NP Complete 问题 S 是多项式时间可推导出 R。
(C) 不正确,因为 Q 不在 NP 中。
(D) 不正确,因为不存在多项式时间图灵可约化为 Q 的 NP 完全问题。
2) 集合 X 可以用数组 x[n] 表示如下:
考虑以下算法,其中 x、y 和 z 是大小为 n 的布尔数组:
algorithm zzz(x[] , y[], z [])
{
int i;
for (i=O; i
算法计算出的集合Z为:
(A)(X 交点 Y)
(B) (X 联合 Y)
(C) (XY) 交点 (YX)
(D) (XY) 联合 (YX)
答案 (D)
表达式 x[i] ^ ~y[i]) 导致 x 中唯一的 1,其中 y 中的对应条目为 0。具有这些设置位的数组表示设置 X – Y
表达式 ~x[i] ^ y[i]) 导致 y 中唯一的 1,其中 x 中的对应条目为 0。具有这些设置位的数组表示集合 Y – X。
运算符“V”导致上述两个集合的并集。
3. 考虑以下重复:
以下哪一项是正确的?
(A) T(n) = Θ(loglogn)
(B) T(n) = Θ(logn)
(C) T(n) = Θ(sqrt(n))
(D) T(n) = Θ(n)
答案 (B)
Let n = 2^m
T(2^m) = T(2^(m/2)) + 1
Let T(2^m) = S(m)
S(m) = 2S(m/2) + 1
上面的表达式是一个二叉树遍历递归,其时间复杂度为 Θ(m)。您也可以使用 Master 定理来证明。
S(m) = Θ(m)
= Θ(logn) /* Since n = 2^m */
现在,让我们回到原来的递归函数T(n)
T(n) = T(2^m) = S(m)
= Θ(Logn)
请注意,T(n) = T(√n) + 1 的解是 Θ(Log Log n),上面的递归是不同的,它是 T(n) = 2T(√n) + 1