久久文学

第二部分 我们是怎么走到这一步的 第二章 黄金年代(第10页)

天才一秒记住【久久文学】地址:https://www.jjwxx.com

·最初,我们只能选择移动最小的金环,只有将它移动到中间或者最右边的柱子上。

所以对应第一步,我们只有两种移动可能,以及两种不同的新状态。

·如果我们选择将最小的金环移动到中间柱子(初始状态左下方箭头对应的状态),那么我们随后可以执行三种操作:将最小的金环移动到最左侧或者最右侧的柱子,或者将第二个金环移动到最右侧柱子(不能将第二个金环移动到中间柱子,因为它会位于最小金环的上方,这就违背了移动规则)。

·以此类推。

图4 汉诺塔问题搜索树的一小部分片段

因为我们逐级逐级地在生成搜索树,这就意味着我们考虑到了所有的移动可能性,因此,如果这个问题确定是有解决方案的,我们就可以确保使用搜索的方法最终能够找到它(“最终”

这个词在句中是至关重要的,至于为什么,很快就会揭晓)。

那么,解决汉诺塔问题需要移动的最少次数是多少呢?也就是说,从初始状态到目标状态,最少需要移动多少次?对于三个金环而言,答案很简单,是7次。

你不可能找到少于7次的解决方案了。

当然,也有很多方案可以用超过七步的方式解决问题(实际上是有无穷多方案),但它们不是最优的,因为我们想用最少的步骤、在最短的时间内解决问题。

现在,考虑到我们所描述的搜索过程是详细无遗漏的——考虑到了每一步搜索树的所有可能性——搜索技术不光能保证寻找到解决方案,也能保证寻找到最优解决方案。

这就意味着,穷举搜索的方式不仅能保证在问题可解的时候寻找到问题的解,还能保证寻找到问题的最优解。

另外,作为计算机的算法,穷举搜索非常简单——编写一个程序来实现它非常容易。

不过,哪怕我们只是粗略研究图4所示的片段都能够看出来,如刚才所描述的那样,采用穷举搜索的方式来解决问题是个相当愚蠢的过程。

比如,仔细看看搜索树最左边的分支,仅仅移动两步以后,问题又返回到了初始状态,这是在无谓地浪费精力。

如果是你来研究解决汉诺塔问题,可能会在寻找解决方案的时候犯一两次类似的错误,不过你会很快发现问题所在,并且学会避免做一些徒劳的移动。

然而,一台简单执行穷举搜索的计算机却无法做到:它只能穷举出所有移动下的所有新状态,哪怕某些穷举步骤就是在浪费时间,它也会走回头路,回到已经被确认过失败的状态。

除了太多重复和低效率以外,穷举搜索还有一个根本的问题。

如果你做过一些实验,会发现在大部分状态下,汉诺塔问题都有三种移动的可能性,即分支因子为3。

不同的问题对应着不同的分支因子。

比如,围棋的分支因子为250,这就意味着在游戏给定的任意状态下,每个玩家约有250种落子的可能性,当然,这只是平均值。

所以,我们来看看搜索树随着分支因子能增长到多大——对确定了分支因子数的搜索树,在不同层级有多少种状态。

以围棋为例[24]:

·搜索树的第一级有250种状态,因为在游戏棋盘的初始状态下,可以有250种新出现的状态。

·第二级搜索树有250×250=62500种状态,因为我们必须考虑到250种落子选择后,每一种状态都有250种可能出现的新状态。

·第三级搜索树有62500×250,大约有1560多万种状态。

·以此类推,第四级搜索树就会有大约39亿种状态。

本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!

如遇章节错误,请点击报错(无需登陆)

新书推荐

聊斋之问道天涯无上剑圣民国奇人过气武林高手重生三十年前造化之王全职法师之冰天雪帝邪帝缠宠:神医九小姐万界时空穿越者一切从锦衣卫开始电影世界的雇佣兵无敌天子帝临万古加满悟性的我打爆邪祟神魔天尊丑妃逆袭:王爷又被踹下床灵气复苏:从小奶虎进化成禁区兽皇!撼天我能提取熟练度神话基因邪气凛然玄门妖王步步逼婚:抢来的老公长生界斗罗:我的老婆是封号斗罗!天域苍穹