w ^ R是w的反向,w是{0,1} *。因此,TM需要决定一个单词,然后是该单词的反向,后跟单词。 我不想要答案,我只想要领先一步并走上正轨。
答案 0 :(得分:5)
由于时间过去了,可能不再需要答案,我想我会提出一个解决方案,为未来的学生寻找一个图灵机如何识别一种语言的例子。
这是个主意。我们将把磁带字母{0,1,a,b,c,d}作为一个单磁带单无限磁带图灵机来识别w w ^ R w。该机器将分五个阶段工作:
请注意,这只是一个简单的(我理解,也就是说)显示存在图灵机来识别这种语言的方法。当然,表明在任何图灵等效计算系统中存在一种解决这个问题的算法同样好(它证明存在TM)......但是,这仍然概括了一个这样的TM的构造。还要注意,可能有一个更简单,更有效或更直观的TM来解决这个问题......再次,这只是一种方法。
步骤1的工作原理如下:
后置条件:如果磁带为空或长度不是3的倍数,则暂停;否则,磁带以空白开头,后跟(a + b)^ 2n(c + d)^ n,然后是无限长的空白字符串。
步骤2的工作原理如下:
后置条件:如果前缀(a + b)^ 2n不是回文,则停止;否则,使磁带处于D(c + d)^ 3n D *
之类的状态第3步将如下工作
后置条件:磁带为D(0 + 1)^ 3n D *
步骤4和5就像步骤1和2一样工作,除了你向后工作(磁带现在看起来像D(c + d)^ n(a + b)^ 2n D *,你必须检查是否(a + b)^ 2n部分是回文。
通过这两个测试的任何字符串必须是w w ^ R w的形式,其中w在(0 + 1)*中。
答案 1 :(得分:3)
作为提示,请注意ww R w对于某些n必须具有3n的长度(因为每个字符恰好出现三次)。因此,您可以构建一个图灵机,它通过某种方式计算字符串的长度,使用它来确定三个字符串的边界在哪里,然后检查这三个部分都具有适当的组成。如果你不能计算3个字符的倍数,你可以立即拒绝。
根据允许的TM类型,使用多轨或多点图灵机可能最简单,这样您就可以用一些额外的信息标记字母。
希望这有帮助!
答案 2 :(得分:0)
这是我如何用 2 个磁带和 O(n) 复杂度做到的: