繁体   English   中英

如何正式描述用于图灵机的算法?

[英]how to formally described this algorithm for turing machine?

警告 :这项任务是由我的教授完成的,他是80岁,而没人理解他有时想要的东西,我不希望对这个问题有更多的标准方法,不仅是因为这个问题很困难,而且因为我的教授很老,学校前苏联疯狂的家伙;)(他喜欢使简单的事情变得复杂,只是为了解释为什么将其发布在这里)

该任务是纯粹的理论任务,但我不知道如何用单词“问题”来形式化它:

输入上给出了9位二进制代码,如果值为“ 1”的位数比值为“ 0”的位数少两倍,则必须在输出中打印“ 0”,如果此条件为假,则必须在输出中打印“ 1”。

我在描述中建议的是先引入一个计数器,然后对具有值1的位进行计数,然后根据该计数器进行输出,但是我被称为白痴,并且被告知没有计数器和我选择最困难的方式。 有人知道确定输出什么的更好方法吗?

在此先感谢您,如果描述看起来很混乱,请多谢

当TM读取输入位时,状态号必须捕获从0到9的可见位数,以便我们可以识别到结束的时间以及看到的1位数,相关情况是0、1、2、3和> = 4。

编码所有相关可能性所需的状态少于10 * 5 = 50。 当机器进入指示已经看到9个输入位的状态之一时,如果它指示已经看到3个1,则写入0,否则,写入1。

请注意,我们不需要使用磁带进行存储-输入语言是常规的,因此可以使用有限状态机确定它,并且无限制存储是不必要的。

尽管Matt是正确的,但您可以使用存储将这个问题推广到任意输入大小。

  1. 转到磁带的开头
  2. 前进寻找没有标记的1 标记它。
    • 如果找不到未标记的1 ,请转到步骤7。
  3. 回到磁带的开头
  4. 寻找未标记的0 标记它。
    • 如果找不到未标记的0 ,请转到步骤9。
  5. 寻找另一个未标记的0 标记它。
    • 如果找不到未标记的0 ,请转到步骤9。
  6. 转到步骤1
  7. 转到输入的开头。
  8. 寻找未标记的0
    • 如果找不到,则输出0 停。
  9. 输出1 停。

这适用于任何输入大小。 直观地,我们正在寻找输入中每1 2 0 s,请确保0位是1位的两倍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM