人工智能通识-科普-图灵机之繁忙的海狸Busy beaver

欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】


繁忙的海狸是个图灵机游戏,这一篇我们就认真的来看看这个可爱的小动物。

停机问题Halting Problem

之前我们介绍过基本的图灵机,读写头Head可以不停地对纸带上的数字(0或1)进行读取,然后再跟进自身状态State和读取到的数字来决定下一步动作,以及下一步状态切换。


人工智能通识-科普-图灵机之繁忙的海狸Busy beaver_第1张图片

但是图灵机有一个问题,那就是它根据设定好的规则运行,并不一定能够最终自动停下来,不停下来就代表计算没有结束,没结束就代表得不到结果。

一直运行却永远得不到结果的图灵机,是毫无用处的。

所以有效的图灵机必须确保能够自身根据规则最终能切换到停机Halt状态才行。

对于无尽这个事情,《庄 子·天下篇》就讲到一尺之棰,日取其半,万世不竭,这就是一种有规则、能运行,但不能自动停机的图灵机算法。

繁忙的海狸Busy beaver

图灵机本质上是能够自动运行的多个程序指令卡片,如下图所示:

人工智能通识-科普-图灵机之繁忙的海狸Busy beaver_第2张图片

繁忙的海狸游戏是一个图灵机游戏,它遵循两个原则:

  1. 必须能够自动停止Halt。
  2. 尽可能在初始都是0的无限长纸带上写出更多的数字1。

在上图中,左侧每个卡片card代表一个指令,也对应一个状态State,而纸带上固定只有0或1两个数字。上图中那么就是有5个状态(4张卡片)2个symbol元素。

1状态繁忙的海狸 BB-1

默认Halt停机(状态State 0)的卡片不计,只有一张卡片(状态State 1)的繁忙海狸,如下图所示。

人工智能通识-科普-图灵机之繁忙的海狸Busy beaver_第3张图片

上图中简化了写法,下面0和1组成的两行分别表示读取的符号为0或者为1执行的动作。而0 101中后面三个数字分别表示把当前位置的数字改写为1,向左移动(0向左1向右),最后一个数字表示下一状态为1。0 101[如果读取到0],[那么改写为1][然后向左移动][再跳转到状态1],同样1 110表示[如果读取到1],[那么改写为1][然后向右移动][再跳转到状态0停机]

实际上由于纸带数字初始是0,读到0,写成1,向左走,状态不变(还是转到状态1),所以永远读取不到1,也就永远不会进入第二行的情况,也永远不能停下来,会一直向左无限跑过去。

这样的海狸不符合停机规则。

我们必须把第一行规则改为0 100或者0 110或者0 010,0 000,这样才能实现停机,但这样只能走执行一步,只能在纸带上写出1个1,如下图。

人工智能通识-科普-图灵机之繁忙的海狸Busy beaver_第4张图片

有没有更好的办法?没有了。无论是向左还是向右,无论是先改写再移动还是先移动再改写,在1state和2Symbol的情况下只能最多写出一个1。

BB-2和更多

1状态海狸有多少种可能的走法?答案是64种,当然其中包含了很多无限循环不停机的无效走法。64种走法里,能停机的最好成绩是1.

关于多状态海狸(多卡片海狸)的走法,有个公式可以套用:

可以推算出2卡片海狸共有种可能。

而这20736种可能的走法中,有多少会停机?不停机的最好成绩是多少?——这些都没法用特定算法计算,只能把这两万多种情况都模拟出来,然后看哪些停住了,再找出其中最好成绩。

2卡片海狸即BB-2的最好成绩是4,最多写出4个1,是不是很失望呢?

更失望的是BB-3,它有16777216(1600多万)种走法,但最好成绩是6。

BB-4有256乘以10的8次方那么多走法,最好成绩是13。

BB-5则人类25年来也没有算出确定的最好成绩来,目前的最高纪录是4098。这是由于走法太多太复杂,计算量太大,超级计算机也算不完。

结语

有些事情看上去简单,但实际并没有什么好的算法可以直接得出结果,只能暴力尝试,而遇到庞大数字的时候,现代计算机也无能为力。

实际上每件事都会有确切算法吗?

世上有太多需要模糊算法,或者只能得到一些大约概率,或者什么也得不到。


欢迎关注我的专栏( つ•̀ω•́)つ【人工智能通识】


每个人的智能新时代

如果您发现文章错误,请不吝留言指正;
如果您觉得有用,请点喜欢;
如果您觉得很有用,欢迎转载~


END

你可能感兴趣的:(人工智能通识-科普-图灵机之繁忙的海狸Busy beaver)