图灵机 - 学习技巧

时间:2010-11-07 01:59:18

标签: turing-machines

我花了整整一个月的时间来解决这个问题,因为我从练习书中得到了这个问题,我很想知道如何在图灵机上写这个。我真的很想学这个。请有人可以提供帮助吗?

  

考虑登录的最后两个字母(如果两个字母相同,请选择   拉丁字母表中的下一个字母作为第二个符号)。写一台图灵机   这将识别语言Stretch(x + 1)。这是所有字符串的语言   包含两个字母的连续字符串,后跟'*',   然后是另一串字母,其中每个字母的x + 1次出现   第一个字母串中只出现一次。这里,x = 1.机器的输入是a,b,*的非空字符串。作为一个   例如,字母是'a'和'b'(和x = 1)aba * aabbaa,bb * bbbb和   baab * bbaaaabb在语言中,但是abb * abbb不是。你可能会认为你   有子程序在第一个单元格中写入0并删除磁带的其余部分   在第一个单元格中写入1并删除剩余的磁带。

如果你能帮助我,我会非常感激。

1 个答案:

答案 0 :(得分:3)

为每个唯一的字母使用堆栈(在示例中为两个堆栈)。这不是正式编写的,也不是任何东西,但您需要做的就是提供一种算法来证明TM可以解决问题。

F1:
FOREACH letter DO
  IF letter = '*' THEN F2
  ELSE push letter twice onto its respective stack

F2:
FOREACH letter DO
  IF tape is empty THEN F3
  IF respective stack is empty THEN *fail state*
  ELSE pop respective stack

F3:
IF both stacks are empty THEN *accept state*
ELSE *fail state*

明白了吗? TM证明很有趣。

编辑:在回复您的其他帖子时,如果您不了解如何构建TM证明,则需要对一般的证据进行一些阅读。我建议Michael Sipser's Intro to Theory of Computing。在为该文本挑出一条胳膊和一条腿之后,您可以转到第137页以了解有关TM的所有内容。