【发布时间】:2011-06-07 09:18:12
【问题描述】:
我碰巧需要一个用于图灵机的算法,它读取一串 0,然后在磁带上写入二进制数。
我意识到在实践中机器实际上不会计算 0,但我对如何做到这一点感到很困惑。
我想首先我需要标记二进制数以 X 或其他东西开头的位置,然后只需为第一个 0 写一个 1,如果最低有效位为 0,则为后面的每个 0 写一个它变成了 1 但如果它是 1 呢?也许把它变成 0 并继续把所有的 1 变成 0 直到我找到一个 0 或空白变成 1?再说一次,在那种情况下,不管 LSB 是多少,都是一样的,因为我会做同样的事情,只有 0 是第一个位置......
嗯……橡皮鸭……
【问题讨论】:
-
你确实需要数数。 8 个零的输出与 7 个零的输出非常不同,在到达结束标记之前您无法知道有多少个。实际上,对于计数的二进制表示中的每一位,您需要一位内存(一种状态)。
-
不是家庭作业,而是与大学有关(这是我在学习时遇到的一个问题),而计数的问题是如何存放计数器?
-
你似乎有一个有效的算法。有什么问题?
标签: algorithm binary turing-machines