先决条件—— 下推自动机 , 下推自动机最终状态验收 问题—— 设计一个非确定性PDA,用于接受语言L={ |m,n≥ 1} ,即。,
null
L = {abcc, aabccc, abbbcccc, aaabbccccc, ......}
在每个字符串中,“a”和“b”的总数等于“c”的总数。所有的“c”都位于“a”和“b”之后。
解释—— 在这里,我们需要保持a,b和c的顺序。也就是说,所有的a都在前面,然后所有的b都在后面,所有的c。因此,我们需要一个堆栈和状态图。a、b和c的计数由堆栈维护。 我们将采用两种堆叠字母:
= { a, z }
哪里 =所有堆栈字母表的集合 z=堆栈开始符号
PDA构建中使用的方法- 因为我们想要设计一个NPDA,所以每次“a”在“b”之前,“b”在“c”之前。当“a”出现时,将其推入堆栈,如果“a”再次出现,则也将其推入堆栈。之后,当“b”出现时,将“a”推入堆栈,如果“b”再次出现,则也将其推入堆栈。然后当“c”出现时,每次从堆栈中弹出一个“a”。 因此,在最后,如果堆栈变为空,那么我们可以说字符串被PDA接受。
堆栈转换函数-
(q0, a, z)
(q0, az)
(q0, a, a)
(q0, aa)
(q0, b, a)
(q1, aa)
(q1, b, a)
(q1, aa)
(q1, c, a)
(q2,
)
(q2, c, a)
(q2,
)
(q2,
, z)
(qf, z)
式中,q0=初始状态 qf=最终状态 =表示pop操作
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END