先决条件—— 下推自动机 , 下推自动机最终状态验收 问题—— 设计一个接受语言L={a的非确定性PDA 2米 B 3米 |m≥ 1} ,即。,
null
L = {aabbb, aaaabbbbbb, aaaaaabbbbbbbbb, aaaaaaaabbbbbbbbbbbb, ......}
在每个字符串中,每2’a就有3’b’。
解释—— 在这里,我们需要保持a和b的顺序。也就是说,所有的a先来,然后所有的b都来。因此,我们需要一个堆栈和状态图。a和b的计数由堆栈维护。这里,我们每2’a有3’b。我们将采用2个堆叠字母:
= {a, z} Where,
= set of all the stack alphabet z = stack start symbol
PDA构建中使用的方法- 因为我们想要设计一个NPDA,所以每次“a”出现在“b”之前。我们将连续两次将三个“a”推入堆栈,接下来的两个“a”将再次将三个“a”推入堆栈。也就是说,对于第一个“a”,我们什么也不做,只有状态会改变,对于下一个“a”,我们将执行推送操作,同样地,我们也会交替执行,即。, 对于两个a,我们推三个a 对于四个b,我们推六个a 之后,当“b”出现时,每次从堆栈中弹出一个“a”。
因此,在最后,如果堆栈变为空,那么我们可以说字符串被PDA接受。
堆栈转换函数-
(q0, a, z)
(q1, z) [ Indicates no operation only state change ]
(q1, a, z)
(q2, aaaz) [ Indicates push operation for alternate 'a']
(q2, a, aaaz)
(q1, aaaz) [ Indicates no operation only state change ]
(q1, a, aaaz)
(q2, aaaa) [ Indicates push operation for alternate 'a']
(q2, b, a)
(q3,
) [Indicates pop operation ]
(q3, b, a)
(q3,
) [Indicates pop operation ]
(q3,
, z)
(qf, z )
式中,q0=初始状态 qf=最终状态 =表示pop操作
正确的转换图-
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END