具有两个堆栈的下推式自动机是否等效于图灵机?


41

这个答案中提到

普通语言可以通过有限的自动机识别。上下文无关的语言需要一个堆栈,上下文相关的语言需要两个堆栈(这相当于说它需要一台完整的图灵机)

我想知道上面大胆部分的真实性。实际上是真的吗?有什么好的方法可以得到答案?


粗体文本中有两个声明,但是您的问题标题表明您仅对其中之一感兴趣。
泰森·威廉姆斯

@TysonWilliams:是的,是吗?
拉泽

这很混乱。我不知道您要为这两个主张中的哪个子集辩护。
泰森·威廉姆斯

对于问题中提到的粗体字
Lazer 2012年

2
@Lazer:粗体文本包含两个语句(“ CSL需要两个堆栈”,“两个堆栈等效于TM”)。由于CSL是RE的适当子集,因此只有一个是正确的。
拉斐尔

Answers:


38

这个答案有两位;

首先,Turing Machines识别的语言类别不是上下文敏感的,而是递归枚举的(上下文敏感是您从线性绑定自动机获得的语言类别)。

第二部分,假设我们调整问题,是的,两层PDA的功能与TM一样强大。假设我们使用的TM模型具有仅在一个方向上是无限的磁带(虽然两个方向并不难,并且等效),则稍微容易些。

要了解等效性,只需将第一个堆栈视为当前位置左侧磁带的内容,将第二个堆栈视为右侧内容。您像这样开始:

  • 在两个堆栈上推动普通的“堆栈底部”标记。
  • 将输入推到左侧堆栈(使用不确定性“猜测”输入的末尾)。
  • 将所有内容移至正确的堆栈(以使内容保持正确的顺序)。

现在,您可以忽略输入,并在堆栈的内容(正在模拟磁带)上执行所有操作。您会弹出以阅读并推动书写(因此您可以通过推动不同于您阅读的内容来更改“磁带”)。然后,我们可以通过从右侧堆栈弹出并向左推动以向右移动,反之亦然以向左移动来模拟TM。如果我们击中左侧堆栈的底部,我们将采取相应的行动(停止并拒绝,或停留在您的位置,具体取决于模型),如果我们击中右侧堆栈的底部,则只需将一个空白符号推到左侧。

要获得完整的正式证明,请参见另一个问题的答案

这种关系的另一种方式应该更加明显,即我们可以使用TM模拟两层PDA。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.