Algorithm 如何对图灵机的这种算法进行形式化描述?

Algorithm 如何对图灵机的这种算法进行形式化描述?,algorithm,discrete-mathematics,turing-machines,Algorithm,Discrete Mathematics,Turing Machines,Waring:这项任务是由我的80岁左右的教授完成的,没有人知道他有时想要什么,我不希望对这个问题采取更不标准的方法,不仅仅是因为这个问题很难解决,而是因为我的教授是一个老派的前苏联疯子;)(他喜欢把简单的事情复杂化,只是为了解释为什么会在这里发布) 这项任务纯粹是理论上的,但我不知道如何用语言将其形式化 问题: 输入端有9位二进制代码,我们必须在输出端打印“0” 如果值为“1”的位的数量比 值为“0”的位,如果此条件为false,则必须打印 输出为“1” 在我的描述中,我建议引入一个计数器,然

Waring:这项任务是由我的80岁左右的教授完成的,没有人知道他有时想要什么,我不希望对这个问题采取更不标准的方法,不仅仅是因为这个问题很难解决,而是因为我的教授是一个老派的前苏联疯子;)(他喜欢把简单的事情复杂化,只是为了解释为什么会在这里发布)

这项任务纯粹是理论上的,但我不知道如何用语言将其形式化 问题:

输入端有9位二进制代码,我们必须在输出端打印“0” 如果值为“1”的位的数量比 值为“0”的位,如果此条件为false,则必须打印 输出为“1”

在我的描述中,我建议引入一个计数器,然后对值为1的位进行计数,然后根据这个计数器进行输出,但有人说我是个白痴,有人告诉我没有计数器的方法,我选择了最难的方法。有人知道更好的方法来决定输出什么吗


提前感谢,如果在TM读取输入位时描述看起来很混乱,那么很抱歉,状态号必须捕获看到的位数,从0到9,以便我们在结束时能够识别,以及看到的1位数,相关情况为0、1、2、3和>=4

编码所有相关可能性所需的状态少于10*5=50个。当机器进入其中一种状态,表示已看到9个输入位时,如果表示已看到3个1,则写入0,否则写入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
  • 转到步骤1
  • 转到输入的开头
  • 查找未标记的
    0
    • 如果找不到,则输出
      0
      。停下来
  • 输出
    1
    。停下来

  • 这将适用于任何输入大小。直观地说,我们在输入中为每个
    1
    查找2个
    0
    s,确保
    0
    位的数量是
    1
    位的两倍。

    虽然Matt是正确的,但您可以使用存储将此问题推广到任意大小的输入

  • 转到磁带的开头
  • 向前查找未标记的
    1
    。标记它。
    • 如果找不到未标记的
      1
      ,请转至步骤7
  • 回到磁带的开头
  • 查找未标记的
    0
    。标记它。
    • 如果找不到未标记的
      0
      ,请转至步骤9
  • 查找另一个未标记的
    0
    。标记它。
    • 如果找不到未标记的
      0
      ,请转至步骤9
  • 转到步骤1
  • 转到输入的开头
  • 查找未标记的
    0
    • 如果找不到,则输出
      0
      。停下来
  • 输出
    1
    。停下来

  • 这将适用于任何输入大小。直观地说,我们在输入中为每个
    1
    寻找2个
    0
    s,确保
    0
    位的数量是
    1
    位的两倍。

    如果你要写出一个实际的图灵机,保持一个计数器是很困难的,但是对计数器的有限可能状态集进行编码是很容易的;不要打扰你的老师太老了,总是先把他当成一个聪明人。计算机工程是一门专业知识,在这门专业知识上,可以使用正确的工具来解决问题,而不仅仅是天真地解决问题。在这里,一个简单的自动机就足够了。最后,不,这不是一个纯粹的理论问题,它是关于处理流数据的方法。如果你正在编写一个实际的图灵机,保存一个计数器是很困难的,但是对计数器的有限可能状态集进行编码是很容易的。你的老师想要的是你明白不要用锤子杀死苍蝇;不要打扰你的老师太老了,总是先把他当成一个聪明人。计算机工程是一门专业知识,在这门专业知识上,可以使用正确的工具来解决问题,而不仅仅是天真地解决问题。在这里,一个简单的自动机就足够了。最后,不,这不是一个纯粹的理论问题,而是关于处理流数据的方法。