(a^nb^n)^mc^m 的下推自动机

发布于 2024-08-17 19:11:42 字数 133 浏览 8 评论 0原文

我一直在为这个自动机构建转换函数。

我想我应该为每个 a 堆叠一个 1 并为每个 b 取消堆叠

c 的数量等于 ab 对的数量,所以我认为我应该为遇到的每个 b 堆叠一个 0 。问题是:如何同时取消堆叠 1 和添加 0?

I'm stuck building the transition functions for this automaton.

I suppose I should stack a 1 for each a and unstack it for each b

The number of c's equals the number of ab pairs, so I think I should stack a 0 for each b I encounter. Thing is: how do I unstack 1s and add 0s at the same time?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情场扛把子 2024-08-24 19:11:42

不要在每次遇到 b 时将 0 压入堆栈。相反,每次遇到 b 并且堆栈为空或堆栈顶部为 0 时,将 0 压入堆栈。

因此,使用 aabbabcc 的命名法:

read a push 1
read a push 1
read b pop 1
read b pop 1
stack is empty so push 0
read a push 1
read b pop 1 
top of stack is 0 so push 0
read c pop 0
read c pop 0

堆栈为空,因此我们接受此字符串。

Don't push a 0 onto the stack each time you encounter a b. Instead, push a 0 onto the stack each time you encounter a b and the stack is empty or the top of the stack is a 0.

So, using your nomenclature for aabbabcc:

read a push 1
read a push 1
read b pop 1
read b pop 1
stack is empty so push 0
read a push 1
read b pop 1 
top of stack is 0 so push 0
read c pop 0
read c pop 0

Stack is empty so we accept this string.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文