如何阅读这个PDA?

问题描述

PDA

这是一个旧的硬件问题,我必须找出每个给定字符串访问 q\loop 状态的次数

bb: 5

阿巴:0

阿爸:8

巴巴布:11

我了解第一个字符串如何访问状态5次而第二个字符串不被接受,但我不知道第3个和第4个字符串的过程。如果有人能走遍第三或第四个字符串访问过的州,我将不胜感激,因为我一直被卡住

解决方法

这个PDA匹配回文。它是如何做到的?它在堆栈中查找 P 并将其替换为 aPabPb,然后将堆栈中的 a 与输入中的 a 进行匹配。 b 也是如此。它不确定地替换 P

让我们来看看#3。我们将重点关注 Q_loop,为了简单起见,我将其称为 L。堆栈的顶部将是最右边的字符。

  1. 我们第一次到达 L 时,输入是 abba,堆栈是 $P。我们将不确定地遵循 e,P->a 转换。
  2. 输入为abba,栈为$aPa。我们将遵循 a,a->e 过渡。
  3. 输入:bba,堆栈:$aP。关注e,P->b
  4. 输入:bba,堆栈:$abPb。关注b,b->e
  5. 输入:ba,堆栈:$abP。关注e,P->e
  6. 输入:ba,堆栈:$ab。关注b,b->e
  7. 输入:a,堆栈:$a。关注a,a->e
  8. 输入:e,堆栈,$。遵循 e,$->e 并在下一个状态接受。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...