了解下推自动机

时间:2013-10-16 12:26:32

标签: pushdown-automaton

我不明白PDA图中的箭头......

我有一个PDA接受所有带有括号的字符串,如((((()))))(())((()))等。它有两种状态,第一个状态有一个循环的箭头和行为这被描述为(,ε/(

对于我所看到的内容,如果堆栈顶部有ε,则此描述会接受(符号,如果有,则ε将替换为{{1} }}。

所以如果堆栈在开头看起来像这样:
(

现在看起来像这样:
ε

即使不再位于堆栈顶部,这个循环箭头如何继续接受每个(符号呢?

1 个答案:

答案 0 :(得分:1)

你需要另一种表示该状态的行为:(,( - >( 这种转变应该带你到另一个状态(辅​​助状态)。 该辅助状态的唯一转换是ε,ε->(

从原始状态开始,你需要弹出(当你看到一个时从堆栈中弹出) ),( - >ε

以下是我的一个类似的例子,其中包含的不仅仅是b(问题编号1)enter image description here