📜  数据结构和算法 | 20套

📅  最后修改于: 2021-09-27 15:49:31             🧑  作者: Mango

以下问题已在 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