人工智能 - 五子棋人机对战
作者:孙靖(Jig) 出至: www.ds0101.com 0101部落 时间:2007 - 7 - 7
若要转贴或使用本文章介绍的技术,请在你发布的文章或作品中注明出处。
这些时间太忙了,有忙正事但也瞎忙了很多事。很久了想写点文章,感觉自己有很多要写的东西,可实际动手写起来大多数想法又没做好充分的准备。加之记得以前论坛上有朋友说希望看看五子棋的人机对战设计思路,所以想想就写篇五子棋人机对战算法的文章吧。
把文章名命为“人工智能”范畴似乎有点大,那我就借这个大题长长自己的脸,呵呵,怪不好意思的。但具有攻防能力的人机对战的五子棋模型也算的上是初级的人工智能算法。
“人工智能”即指让机器具有类似人类一样的主观能动性根据当前情况做出相应的判断,而他的核心便是具体的数学算法。然而这个算法其实就是依托在一个人造的数学模型上。具体简单的说,就像本文介绍的五子棋,我们根据五子棋的具体规则建立适当的数学模型,只要机器按照此模型进行逻辑判断就可以得出一定的结果,而这个结果在我们人类看来就是机器在下棋的过程中攻守兼备,仿佛具有人类的智慧。说到这里,我们就这话题再探讨一点。“人工智能”的终极目标就是使机器具备人类的情感,而这个目标有可能实现吗?鄙人的看法是绝对可以的,只是时间的问题。计算机科学从来不是一门独立的学科,他是人类文明的一个结晶。众学科的综合造就了他,而他也必将超越我们人类。从生物学角度来看,我们人脑就是有机化合体组成的神经网络;从化学角度来看,我们人脑的化学反应产生的神经脉冲为我们的逻辑运算提供动力;而从数学角度上看,我们人脑神经所以组成的网络正是一个复杂包罗万像的数学模型。正是在这样一个宇宙的式的数学模型上的逻辑推理,使人类具备了情感。然而我们人类目前对自身大脑的工作原理认识还处在超低级的阶段,有朝一日人类能更深入的了解我们自身那根据这些知识再将其运用在计算机学科,机器也一定能实现真正的“人工智能”。
有了上面的介绍,我想大家一定对本文所讨论的深度有了了解。没错,我们接下来讨论的的确是最初级的智能算法。那么大家在阅读的过程中应该注意的不是这个算法的具体实现,而是根据五子棋规则建立数学模型的这个过程。即从现实抽象到数学模型的能力,而这个也是编程能力的本质。
规则:分黑白两方,轮流下棋。率先将5子连线的一方获胜。
目标:使机器在下棋的过程中攻守兼备,就像和一个真正的人类下棋一样
分析:为了方便说明我们以 5X5 这个最简单的棋盘来加以说明。
棋盘如图所示:
接下来我们就五子棋的具体规则特点和人类思维过程讨论一下。率先将5子连线的一方获胜,那么我们人类在下棋的过程中每下一步前都会思考一下如果我们这样走了后面会出现一个什么样的情况?走了这步后对方会走哪步?如果对方做了这步后会是个什么样的局面,我可以采取哪些走法?......
如此这般,从上面我们可以看到我们人类在下棋过程中经历了预见,推理,预见,推理......这样一个反复的过程,然而我们人脑能力有限,我们能预见的步数和记住每步的情况的能力有限制,即使再聪明的人也是有个限度的。而机器在记忆这方面却是绝对的,所以我们可以模拟人下棋的过程使机器具备高超的下棋能力。
说到这里,也许有朋友会提出:看样子你这就是个深度搜索算法啊。理论上来说深度搜索算法可以解决任何一个问题,可是事实是有的问题在理论上有解而在现实中却是无解,无法证明的。比如牛顿三大定律之一:力是改变物体运动状态的原因。直白的说比如在真空中一个物体背向地球匀速离