因此,我正在为一项关于下推自动机和无上下文语言的测试而学习,我被困在这个结构上。
除了我将在下面解释的一部分外,我让这个自动机的每一部分都完美地工作。
它需要识别的语言是:{ x#y#z#w | x, y, z, w in {0, 1}+ 其中 x ≠ w 和 y ≠ z }。
所以我遇到的问题是将 Xi 与 Wi 进行比较,因为在自动机处理 W 时,Wi 的元素是未知的,就像我设计的那样。
如果我存储 X 的内容,当需要弹出并将每个元素与 W 的元素进行比较时,它们将以相反的顺序弹出,因此认为 000111 和 111000 是相同的字符串,PDA 会拒绝,什么时候应该明确接受(它们是不同的字符串)。这只是一个例子,这也会导致其他输入被错误地分析。
如果有办法将 X 的内容以相反的顺序推入堆栈,它们将以原始形式弹出,使我能够正确比较字符串的内容。
如果有办法在正常推送后反转堆栈的内容,这也将使我得出解决方案。
任何帮助将不胜感激。谢谢。