GATE 2016 CS 组 2

17 Mar 2025 | 6 分钟阅读

49) 给定图表显示了递归函数 A(n) 的流程图。假设除了递归调用外,所有语句的时间复杂度均为 O(1)。如果此函数的最坏情况时间复杂度为 O(nα),那么 α 的最小可能值(精确到小数点后两位)是 ______________。

GATE 2016 CS Set 2
  1. 2.2 到 2.4
  2. 2.1
  3. 3.2 到 3.4
  4. 3

答案: A

说明

最坏情况发生在未返回路径需要最长路径的时候。在这里,通过调用 A(n),我们得到 A(n/2) 5 次,所以递归关系将是

A(n) = 5A(n/2) + O(1)

因此,通过应用主定理来解决这个递归关系,我们得到

情况 1:a > bk
        a = 5, b = 2, f(n) = O(1), nlogba = nlog25
        A(n) = nlogba = nlog25 = 2.32

因此,选项 (A) 是正确答案。


50) 将数字 1、2、3、4、5、6、7 插入一个空的二叉搜索树中,使得生成的树的高度为 6 的方法有 ______________ 种。

注意:只有一个节点的树的高度为 0。

  1. 32
  2. 64
  3. 16
  4. 8

答案: B

说明

根据问题,我们需要 BST 树的高度为 6,并且我们有七个不同的数字可以插入 BST。为了获得高度 6,我们必须将 1 或 7 放在根节点。除了根节点,我们在每个级别都有两个选项,即节点是左节点还是右节点。

因此,BST 的总数 = 1 * 26 = 64

因此,选项 (B) 是正确答案。


51) 在无向简单图 G = (V, E) 的邻接表表示中,每条边 (u, v) 都有两个邻接表条目:u 的邻接表中的 [v] 和 v 的邻接表中的 [u]。这些被称为彼此的孪生。孪生指针是指从邻接表条目到其孪生的指针。如果 |E| = m 且 |V | = n,并且内存大小不受限制,那么在每个邻接表中设置每个条目中的孪生指针的最有效算法的时间复杂度是多少?

  1. ?(n2)
  2. ?(n + m)
  3. ?(m2)
  4. ?(n4)

答案: B

说明

为了表示一个图,如果我们使用矩阵,那么设置孪生指针的最有效算法的时间复杂度将是 O(n2)。现在,如果我们使用邻接表,它将是

2(边 + 顶点) = 2(m+n) = O(m+n)。

因此,选项 (B) 是正确答案。


52) 考虑以下两个陈述

I. 如果一个 NFA 的所有状态都是接受状态,那么该 NFA 接受的语言是 Σ ∗。
II. 存在一个正则语言 A,使得对于所有语言 B,A ∩ B 是正则的。

以下哪个是正确的?

  1. 只有 I 为真
  2. 只有 II 为真
  3. I 和 II 都为真
  4. I 和 II 都为假

答案: B

说明

陈述 I 为假,因为没有提及状态之间的转换。在 NFA 中,不能定义所有状态都具有所有符号的转换。

陈述 II 为真,因为我们知道空语言 (A = Φ) 是正则的,所以它与任何其他语言的交集都是 Φ。因此,A ∩ B 是正则的。

因此,选项 (B) 是正确答案。


53) 考虑以下语言

L1 = {an bm cn+m : m, n ≥ 1}
L2 = {an bn c2n : n ≥ 1}

以下哪个是正确的?

  1. L1 和 L2 都是上下文无关的。
  2. L1 是上下文无关的,而 L2 不是上下文无关的。
  3. L2 是上下文无关的,而 L1 不是上下文无关的。
  4. L1 和 L2 都不是上下文无关的。

答案: B

说明

已知,

L1 = {an bm cn+m : m, n ≥ 1}
L2 = {an bn c2n : n ≥ 1}

L1 是上下文无关的。可以设计 PDA,使其将 a 推入堆栈,然后将 b 推入堆栈,并

弹出 a 和 b,用于每个 c。当输入中没有剩余的 c,并且堆栈为空时,该语言将被接受。

L2 不是上下文无关的。它是上下文敏感语言

{an bn: n ≥ 1} 也是上下文无关的。但是当我们检查 a 和 b 与 c 的相等性时,使用 PDA 的堆栈内存是不可能的。

因此,选项 (B) 是正确答案。


54) 考虑以下语言。

L1 = {M | M 在某些输入上至少需要 2016 步},
L2 = {M | M 在所有输入上至少需要 2016 步} 和
L3 = {M | M 接受 ε},

其中对于每个图灵机 M,hMi 表示 M 的特定编码。以下哪个选项为真?

  1. L1 是递归的,而 L2、L3 不是递归的
  2. L2 是递归的,而 L1、L3 不是递归的
  3. L1、L2 是递归的,而 L3 不是递归的
  4. L1、L2、L3 是递归的

答案:C

说明

L1 = {| M 在某些输入上至少需要 2016 步}:在 L1 中,一旦我们找到在 2016 步内接受的字符串,我们就可以停止给出任何字符串的输入。

L2 = {M | M 在所有输入上至少需要 2016 步}:在 L2 中,我们需要检查所有可能的输入,其长度小于 2016,而这个字符串是一个有限的字符串集合。

从上面可以清楚地看到,对于 L1 和 L2,机器肯定会停止。因此,L1 和 L2 都是递归的。

L3 = {M | M 接受 ε}:L3 是不可判定的,因为 M 接受 ε。所以 L3 不是递归的。

因此,选项 (C) 是正确答案。


55) 以下哪个语法不包含左递归?

  1. S → AB
    A → Aa | b
    B → c
  2. S→ Ab | Bb | c
    A → Bd | ε
    B → e
  3. S→ Aa | B
    A → Bb | Sc | ε
    B → d
  4. S → Aa | Bb | c
    A → Bd | ε
    B → Ae | ε

答案: B

说明

选项 A 由于产生式规则:A->Aa,具有直接左递归。

选项 C 由于产生式规则:S-> Aa 和 A->Sc,具有间接左递归

选项 D 具有间接左递归,因为:A-> Bd 和 B-> Ae

选项 B 没有任何递归(既不是直接也不是间接左递归)。

因此,选项 (B) 是正确答案。


56) 一个学生编写了两个上下文无关语法 G1 和 G2,用于生成一个类似 C 语言的数组声明。数组的维度至少为 1。例如,

语法使用 D 作为起始符号,并使用六个终端符号 int ; id [ ] num。

GATE 2016 CS Set 2

以下哪个语法正确地生成了上述声明?

  1. G1 和 G2 都正确
  2. 只有 G1 正确
  3. 只有 G2 正确
  4. G1 和 G2 都不正确

答案: A

说明

GATE 2016 CS Set 2

因此,选项 (A) 将是正确的答案。


GATE 2016 CS Set 2-1
GATE 2016 CS Set 2-2
GATE 2016 CS Set 2-3
GATE 2016 CS Set 2-4
GATE 2016 CS Set 2-5
GATE 2016 CS Set 2-6
GATE 2016 CS Set 2-8