现在的位置: 首页 > 综合 > 正文

人机博弈之(一)——博弈介绍

2013年12月08日 ⁄ 综合 ⁄ 共 844字 ⁄ 字号 评论关闭

爱好编程的大部分还是喜欢自己编写一个游戏,但较少是编写和电脑对战的游戏,因为里面毕竟涉及博弈,搜索等技术,我想来通编写一个人机博弈的中国象棋游戏,希望从中收获些东西。参考书是王小春编著的一本《PC游戏编程-人机博弈》。应该说里面很多思想都是来自这本书上的,虽然思想不是源自我自己,但是可以通过自己亲手从头到尾把这个游戏编写出来,主要体会里面搜索技术和估值核心。

1. 人机博弈的要点

人机对弈的程序,至少应具备一下几个部分:

     a   某种在机器上表示棋局的方法,让程序知道博弈的状态;
     b    产生合法的走法规则,是得博弈双方公正,并可以判断人类对手是否乱走;
     c   从所有合法的走法中选择最佳的走法的技术
     d   一种评估局面优劣的方法,同上面技术配合作出智能选择;
     e   一个实现游戏的界面。

2.棋盘表示

棋盘表示就是用一种数据结构来描述棋盘和棋盘上的棋子,通常是用2维数组。一个典型的中国象棋棋盘是用一个9x10的二维数组表示。

3. 走法产生

博弈的规则哪些走法是合法的,例如对于中国象棋来说的马走日,象走田等一些规则。

4. 搜索技术
对于计算机来说,直接通过棋盘信息来判别走法的好坏并不精确。除了输赢这种局面可以可靠地判别外,
其他的判断只能大致估计。判别两种走法谁优谁劣的一个好方法就是察看棋局走下去的结果。也就是向
下搜索若干步,然后比较发展的结果。为了避免差错,也要假设对手的思考也和我们一样,也就是,我
们想到的内容,他也想到了。这是极大值和极小值算法的基本原则。此算法的复杂度是指数级别。所以
随着搜索深度的加大,时间开销会急剧增大。搜索技术的非常关键。

5. 估值
由于,现有的计算机的运算能力不可能一直搜索到分出胜负的那步,在有限搜索深度的末端,用一些静
态的方法,来估计局面的好坏。所以这里要设计一个好的估值函数。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dremi/archive/2007/09/23/1797001.aspx

 

抱歉!评论已关闭.