[英]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
。 标记它。
1
,请转到步骤7。 0
。 标记它。
0
,请转到步骤9。 0
。 标记它。
0
,请转到步骤9。 0
。
0
。 停。 1
。 停。 这适用于任何输入大小。 直观地,我们正在寻找输入中每1
2 0
s,请确保0
位是1
位的两倍。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.