下推自动机给出alpha,beta和gamma的字符串

时间:2016-06-14 13:18:08

标签: pushdown-automaton

我理解PDA的基础知识,但有一个我以前没有遇到过的问题。问题是:

考虑使用接受最终状态和空堆栈的PDA M. $ M =(K,\ Sigma,\ Gamma,\ delta,q_0,Z_0,F)$,$ K = q_0,\ Sigma = a,b,c,\ Gamma = a,b,c,S,T, Z_0 = S,F = q_0)$。过渡关系由,

给出

$ \ delta(q_0,\ epsilon,S)=((q_0,\ alpha),(q_0,T))$

$ \ delta(q_0,\ epsilon,T)=((q_0,\ beta),(q_0,\ epsilon))$

$ \ delta(q_0,a,a)=((q_0,\ epsilon))$

$ \ delta(q_0,b,b)=((q_0,\ gamma))$

$ \ delta(q_0,c,c)=((q_0,\ epsilon))$

在\ Gamma $

上添加$ \ alpha,\ beta和\ gamma字符串

我之前看到的所有问题都提供了更直接的转换函数,并且不包括$ \ alpha,\ beta,\ gamma $所以我不确定这是什么意思,因为它们不是输入字母表的一部分。当它说超过$ \ alpha,\ beta时,\ gamma,\ gamma $是否意味着我应该组成我自己的输入字符串?并相应地改变过渡功能或什么?我不太确定,也没能在网上找到任何东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

字符串未输入,因为它们超过字母$ \ Gamma $。您应该在第一,第二和第四个子句中确定PDA放在堆栈上的内容。假设这个PDA应该接受一种特定的语言。然后你要选择要放在satck上的三个字符串,以便接受所需的语言。

例如,如果您将所有这些都清空,则接受的语言是仅包含空字的语言。

如果选择$ \ alpha = \ epsilon $,则第一个子句的两个可能的转换是相同的。如果你选择$ \ alpha = S $那么第一个转换基本上什么都不做;它只是弹出一个S然后把它放回去。

所以寻找你的PDA应该接受的语言。