语言L = {1 ^ 200},或者更确切地说,语言连续有200个1? Aka,这个TM只有在连续收到200'1后才接受。因此,它需要200个州来解决这个问题,还是可以用较少的状态进行简化?
我要求这有助于了解TM的工作原理。
注意:字母表只有{1}。 TM可以使用任意数量的磁带。
答案 0 :(得分:0)
我假设L只包含单个句子1 ^ 200。然后,这一切都取决于你定义为字母表。如果将“1”定义为字母表,则需要201个状态,包括初始状态。如果您将字符串1 ^ 200定义为“字母”,那么您只需要两种状态:初始状态和结束状态,使用标记为1 ^ 200的箭头连接。
答案 1 :(得分:0)
对于确定性有限自动机,你需要像@sawa这样的201个状态。但是,图灵机可能能够保留计数器,然后将其与200进行比较,这可以用较少的状态来完成。所需的状态数取决于您的图灵机型号;多磁带机可能会使用较少的状态,但单磁带机可能需要201个。
答案 2 :(得分:0)
使用两个磁带或一个磁带字母(不同于输入字母)大于简单{1,空白},可以做得更好。实际上,您需要第二个磁带或扩展字母表的唯一标记是标记输入的开头和结尾。
所以我们可以开始如下:每次输出擦除输入1.同时,我们可以计算输入长度的奇偶校验。这只能通过两种状态来完成,称之为EVEN和ODD。从偶然状态开始。读取1时,切换到ODD状态。在ODD状态下,当您读取1时,将其擦除并切换到偶数状态。
然后再使用两个状态做同样的事情。然后第三次用另外两个状态转换输入。此时,当其中一个扫描读取奇数为1时,您的机器已经拒绝,否则您现在有1/8的1/8。
使用类似的结构,你可以在输入中擦除每5个输出中的4个,并确保输入的长度是5的倍数。可以用5个状态完成。做两次。
现在,如果所有奇偶校验和(5-arity)检查都通过并且你剩下一个1,那么你的原始输入就有1 * 5 * 5 * 2 * 2 * 2 = 200 1。否则不是。使用的总状态:2 + 2 + 2 + 5 + 5 = 16(如果计算接受和拒绝状态,则为18)。
Fancier构造可以在更少的状态下执行相同的任务,但是你几乎可以保证运行时是荒谬的,你需要一个至少为{0,1,空白}的磁带字母表。如果你真的想要很好地处理图灵机的工作方式,那就考虑算法如何弥补图灵机缺乏随机存取存储器(以状态的形式)。你能为语言{1 ^ 99}制作一个类似的算法吗?怎么样{1 ^ 97}(提示:它可以用少于97个状态完成,但你需要一些新的聪明)?