如何解决PDA {a^n b^m | n<=m<=2n}
谁能帮我为{a^n b^m | 设计PDA? n
解决方法
这里的想法是:读取每个 a 并将一个符号推入堆栈。然后,当您开始读取 b 时,在每一步中,不确定地选择是读取单个 b 并弹出一个堆栈符号,还是两个读取两个 b 并弹出一个堆栈符号。然后,如果输入已用完且堆栈为空,则使 PDA 接受。
- 如果你总是选择每次读取 b 时弹出一个堆栈符号,那么你会得到 m = n
- 如果你总是选择为每对 b 读取弹出一个堆栈符号,那么你会得到 m = 2n
- 如果你有时选择读一个 b 有时读两个,那么你最终会得到 n
如果至少有一条路径最终接受,则 NPDA 接受;因此,只要某种猜测读取每个堆栈符号的一两个 b 的模式得到正确的 m 值,该字符串就会被接受。应该清楚,对于任何满足 n
x + 2y = m
x + y = n
这里,x 是 NPDA 应该猜测它读取一个 b 的次数,y 是 NPDA 应该猜测它读取两个 b 的次数。我们可以从第一个中减去第二个:
y = m - n
因为 y 必须是非负的,所以我们得到第一个条件,n
x + m - n = n
<=> x = 2n - m
同样,因为 x 必须是非负的,这给出了我们的第二个条件,m
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。