设计一种识别语言的“Push Down Automata”:a ^ i b ^ 2i

时间:2012-02-09 15:41:33

标签: pushdown-automaton

我正在学习考试自动机和正式语言,我必须设计一个识别语言的PDA:

  

a ^ i b ^ 2i,使得i> = 1

我认为解决方案是:

每个" a"从磁带上读取我堆叠两个X然后,如果我得到一个" b"在磁带上,我在堆栈的顶部有一个X,我在堆栈中弹出一个X,最后,如果我读取空磁带,并且我有Zo(堆栈标记的底部),则接受该字符串。我的问题是:我可以在一个计算步骤中堆叠两个连续的X?

2 个答案:

答案 0 :(得分:2)

你不需要一步推两个X,只需按一个X,然后转换到一个推动另一个X的状态而不从磁带中消耗任何东西。请记住,转换函数是sigma UNION {epsilon},因此您可以在不消耗任何输入的情况下处理堆栈。

简短的回答:你想在堆栈中做N件事吗?制作N个州。请确保N事先知道:)

答案 1 :(得分:0)

  

我可以在一个计算步骤中堆叠两个连续的X?

这取决于你如何定义“下推自动机”,特别是你如何定义过渡功能。您当然可以定义PDA,以便允许一次推送整个字符串。您需要检查课程文本或与您的教授一起检查课程中是否允许这样的事情。