我花了整整一个月的时间来解决这个问题,因为我从练习书中得到了这个问题,我很想知道如何在图灵机上写这个。我真的很想学这个。请有人可以提供帮助吗?
考虑登录的最后两个字母(如果两个字母相同,请选择 拉丁字母表中的下一个字母作为第二个符号)。写一台图灵机 这将识别语言Stretch(x + 1)。这是所有字符串的语言 包含两个字母的连续字符串,后跟'*', 然后是另一串字母,其中每个字母的x + 1次出现 第一个字母串中只出现一次。这里,x = 1.机器的输入是a,b,*的非空字符串。作为一个 例如,字母是'a'和'b'(和x = 1)aba * aabbaa,bb * bbbb和 baab * bbaaaabb在语言中,但是abb * abbb不是。你可能会认为你 有子程序在第一个单元格中写入0并删除磁带的其余部分 在第一个单元格中写入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的所有内容。