以下哪个字符串不是L (M)的成员?
(A) aaa
(B)阿巴布
(C)巴巴
(D)巴布答案: (C)
解释:
PDA基础
下推自动机或 PDA 本质上是一个带有堆栈的 NFA,其转换函数也取决于堆栈顶部的符号。形式上,PDA 是一个 6 元组 (Q, Σ, Γ, δ, q0, F),其中 Q 是所有可能状态的集合,Σ 是所有可能输入的集合,Γ 是所有可能的堆栈符号的集合, δ : Q × Σ × Γ → Q × Γ 是转移函数,q0 是初始状态,并且
F ⊆ Q 是最终状态的集合。
有些时候,PDA还已知的是7元组,当我们考虑初始堆栈符号Z0作为一个额外的成员
超过 6 个元组。请注意,对于给定的输入应该存在一个转换函数,否则将不会有任何可能的移动。
PDA 可以有两种类型:空栈接受 PDA 和最终状态 PDA。
接受 PDA 的空堆栈是接受给定输入的 PDA,如果在给定的输入字符串,当输入耗尽时,堆栈应该是空的。
类似地,接受最终状态的 PDA 是接受给定输入的 PDA,如果在给定的输入字符串,当输入耗尽时,PDA 应该处于最终状态之一。
非确定性 PDA 或 NPDA 是一种 PDA,其中对于给定的输入,可能有多个输出。即转换函数δ 将给定的输入从Q × Σ × Γ 映射到Q × Γ 的有限集。
对于给定的问题,由于有一个以上的输出对应于转换函数的给定输入,我们将考虑使用 NPDA 来执行输入,如果没有可能的移动,我们将停止执行对应的分支。一个给定的输入,我们假设如果机器在最终状态之一停止并且输入用完,我们接受该字符串,否则我们拒绝它。请注意, Given PDA 是接受 PDA 的最终状态,而不是接受 PDA 的空堆栈。
问题的选择:
我们将假设初始堆栈符号是 ε,并且
•在选择 1 中,执行如下:
(s, a, ) → (s, a) 或 (f, ε)。
让我们首先考虑, (s, a) 作为输出并执行剩余的输入。 (s,a, a) → 没有有效的移动。停止这个分支而不是在最终状态,所以不被接受。现在考虑 (f, ε) 作为输出。 (f, a, ε) → 无有效移动。
停止这个分支注意PDA是在final状态之一,但是输入的字符串没有用完,所以PDA不应该接受这个。 •在选项 2 中,执行将从选项 1 开始,并在字符2 处停止,因为不可能移动。此选项也不会以与第一个选项相同的方式被接受。
3
•在选项 3 中,执行如下:
(s, b, ε) → (s, a)。 (s, a, a) → 没有可能的移动。停止这个分支。由于在达到任何最终状态之前停止,因此不接受此选项。
•在选项 4 中,该选项也不被接受,因为 PDA 将在第二个字符处停止,因为它在前一个选项中停止。此选项也不被接受。
假设如果 PDA 由于没有可能的移动而在输入上暂停,并且如果当前状态是最终状态之一但输入未耗尽,则 PDA 将拒绝该字符串,对于问题 2,每个答案都为真,即没有给定的字符串属于给定的 PDA 语言。
再次假设,如果 PDA 由于无法移动而暂停输入,并且当前状态是最终状态之一但输入未耗尽,则 PDA 将继续消耗输入字符串,直到字符串结束,选项 (A) 和选项 (B) 中的字符串将被此 PDA 的语言接受。而选项 (C) 和选项 (D) 最终仍不会被接受
的字符串,PDA 将不会处于最终状态。所以记住这个假设,选项(C)和选项(D)对于这个问题都是正确的。
此解释由Durgesh Pandey 提供。
这个问题的测验