[英]Turing machine with one state that converts binary to decimal
听说有一台state的图灵机应该可以把二进制数转换成十进制数。 我试图弄清楚这怎么可能。 我目前非常不成功地强制我的方式获得结果。 如何以更优雅的方式综合它?
二进制数以相反的顺序给出,例如。 25 是 10011 而不是 11001。我认为这更容易。 不确定它是否也是必需品。 该数字由另外两个符号封装在末尾。 此外,0 和 1 在开头表示为 T 和 F -->.......TFFTTXXXXX。 生成的十进制数应如下所示:.....25-----XXXXX。 此外,停止 state 不算作真正的 state。 据我了解,这是制定这样一个问题的必要条件。
研究单态图灵机我发现了这篇论文。 我看到有一些进位和一个计数器位,但我无法解释自己如何帮助将十进制数增加到 10,然后进行下一位的进位。 给定一个 state,我正在考虑每个十进制数字至少 10 个不同的术语,以及更多用于中断、进位、计数器等的符号。因此,我的单个 state 的定义变得很长。 这里有一个例子来说明我的意思(显然是错误的):
state trigger --> (output, state, shift):
s, 1 --> (2,s,>)
s, 2 --> (3,s,>)
..., s,
s, 8 --> (9,s,>)
s, 9 --> (c,s,>)
只有一个 state,您必须在计数位中编码信息。 诀窍是你倒数二进制数并数数十进制数。
假设我们以......[T]FFTTXXXXX
,根据您的示例,其中[]
表示写入后我们当前的头部 position。 Go 向右并用F
翻转T
以减少二进制。 然后,覆盖遇到的(以及任何未来) .
用1
。 您现在应该拥有以下内容:
.....[.]FFFTTXXXXX
.....[1]FFFTTXXXXX
Go 回到右边。 现在,我们遇到了一个问题:我们需要将 go 越过F
s,将它们翻转到T
s,go 到第一个T
然后再返回。 为了不翻转我们刚刚传递的数字,我们将它们替换为-
之类的占位符,从而产生以下序列:
.....1[F]FFTTXXXXX
.....1-[F]FTTXXXXX
.....1--[F]TTXXXXX
.....1---[T]TXXXXX
.....1--[-]FTXXXXX
现在,go 回来并替换占位符:
.....1-[-]TFTXXXXX
.....1[-]TTFTXXXXX
.....[1]TTTFTXXXXX
现在只需将1
增加到2
: .....2[T]TTFTXXXXX
。
Go 再次向右并重复此过程:
.....[2]FTTFTXXXXX
.....3[F]TTFTXXXXX
.....3-[T]TFTXXXXX
.....3[-]FTFTXXXXX
.....[3]TFTFTXXXXX
.....4[T]FTFTXXXXX
X
处停止您将遇到的唯一问题是您需要以某种方式用10
覆盖十进制9
。 为此,将9
替换为占位符,向左移动,从.
到1
,向右返回并用0
替换占位符。 不要忘记添加从0
到1
的转换。
顺便说一句,这似乎是我参加的某个讲座的家庭作业;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.