为接受语言L={ambnc(m+n)|m,n而向NPDA申请永久许可≥ 1}

先决条件—— 下推自动机 , 下推自动机最终状态验收 问题—— 设计一个非确定性PDA,用于接受语言L={ a^m b^n c^{(m+n)} |m,n≥ 1} ,即。,

null
L = {abcc, aabccc, abbbcccc, aaabbccccc, ......} 

在每个字符串中,“a”和“b”的总数等于“c”的总数。所有的“c”都位于“a”和“b”之后。

解释—— 在这里,我们需要保持a,b和c的顺序。也就是说,所有的a都在前面,然后所有的b都在后面,所有的c。因此,我们需要一个堆栈和状态图。a、b和c的计数由堆栈维护。 我们将采用两种堆叠字母:

Gamma = { a, z } 

哪里 Gamma =所有堆栈字母表的集合 z=堆栈开始符号

PDA构建中使用的方法- 因为我们想要设计一个NPDA,所以每次“a”在“b”之前,“b”在“c”之前。当“a”出现时,将其推入堆栈,如果“a”再次出现,则也将其推入堆栈。之后,当“b”出现时,将“a”推入堆栈,如果“b”再次出现,则也将其推入堆栈。然后当“c”出现时,每次从堆栈中弹出一个“a”。 因此,在最后,如果堆栈变为空,那么我们可以说字符串被PDA接受。

堆栈转换函数-

delta(q0, a, z) vdash (q0, az)
delta(q0, a, a) vdash(q0, aa)
delta(q0, b, a) vdash (q1, aa)
delta(q1, b, a) vdash(q1, aa)  
delta(q1, c, a) vdash (q2, epsilon)
delta(q2, c, a) vdash (q2, epsilon)
delta(q2, epsilon, z) vdash (qf, z) 

式中,q0=初始状态 qf=最终状态 epsilon =表示pop操作

图片[22]-为接受语言L={ambnc(m+n)|m,n而向NPDA申请永久许可≥ 1}-yiteyi-C++库

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享