计算机博弈软件开发简介亚马逊棋实现.pptVIP

计算机博弈软件开发简介亚马逊棋实现.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.5.3棋子的位置关系 一般来讲,某方棋子之间的位置联系相对小,也就是意味着本方棋子分布均匀,对棋盘的掌控能力也相对大。在对弈过程中双方的可行区域越来越小,构造的评估函数为: (1) 对弈50步以下时 Value=freedom+score+a+b 定义value为总的评估值,freedom为对棋子自由度的评估值,score为棋子所在位置旁边八个方向的情况的评估值,a、b为己方棋子、对方棋子之间的位置关系。 (2) 对弈50步以上时 Value=freedom+score 式中,只包括棋子的自由度和己方棋子和对方棋子所在位置周围的情况。 通过全盘搜索,对以上因素进行统计,然后根据评估函数赋值,对叶子节点进行估值。 5.6 界面设计 程序的主要功能主要在鼠标的左键消息中实现,它的流程图如右: 第6章总结 (1)通过加入各个棋种的策略来优化搜索算法。剪枝搜索算法能够在庞大的博弈树中利用已经搜索的信息剪掉不影响结果的子树,结合哈希技术,避免对相同的局面重复搜索,也有效地提高了搜索效率。在搜索中将各个棋种知识显示的表示出来并且指导搜索和剪枝,会使搜索的效率大幅提高,这样就可以节省更多的时间来做更深层次的搜索了。 第6章总结 (2)改进估值函数,使之对局势的判断更灵敏,使之对于局面的评估更为精确。 改进的估值函数对提高棋力也是必不可少的。亚马逊棋虽然采用的是传统的静态估值函数,但对各种因素的权值存在一些主观的因素加以判断,对局势的好坏判断不够灵敏。由于估值函数是与具体的棋类知识紧密结合的一部分,所以我们可以在估值函数中加入更多的棋种知识,使之对于局面的评估更为精确。 第6章总结 (3)在开局阶段单独使用负极大值(或最大最小值)形式的α-β剪枝搜索算法运作速度慢。加入开局库、残局库,提高亚马逊棋开局和残局阶段的速率和准确率。 (4) 完善人机界面,建立博弈公共平台,减少后期开发代价。 在复杂度很高的机器博弈搜索中,比较适合选择深度优先搜索方法,可以在搜索过程中的任何时候仅仅生成整棵树的一小部分,搜索过的部分被立即删去。 5.4.5 α-β剪枝算法 在极大极小搜索过程中,遍历了整棵博弈树,每个节点都访问了一次,这样做的缺点是效率低下。在极大-极小搜索的基础上,以窗口的形式引进α-β 剪枝技术,使得搜索的效率显著提高。 α-β 剪枝把生成的搜索树和估值格局这两个过程结合起来,再根据一定的条件判定,有可能尽早剪掉一些无用的分枝。 α-β 剪枝的作用在于,当要得到一个非叶子节点的估值时,不一定要生成它的所有叶子节点后才计算。 α-β剪枝的规则如下: (1)α剪枝:若任一极小值层节点的β值小于或等于它任一先辈极大值层节点的α值,即α (先辈层)≥β(后继层),则可以中止该极小值层中这个min节点以下的搜索过程。这个min节点最终的倒推值就确定为这个β值。 (2)β剪枝:若任一极大值层节点的α 值大于或等于它任一先辈极小值层节点的β值,即α(后继层)≥β(先辈层),则可以中止该极大值层中这个max节点以下的搜索过程。这个max节点最终的倒推值就确定为这个α 值。 α剪枝 如果博弈树的局部为偶数层-奇数层-偶数层的关系,如图所示,在搜索完左边一枝之后,父节点得到一个值4,可以称之为α值。如果在其他支路的叶节点上发现了一个小于α的节点,则整个支路便可以剪掉,即没有必要再搜索下去,因为根据极大-极小算法的运算关系,这一枝不可能对局面有更好的贡献。图示中节点2取叶子节点5、6、7的极小值4,返回根结点1的α值为 4 ,节点3取叶节点8、9、10的极小值, β剪枝 ?β剪枝出现在奇数层-偶数层-奇数层的子树部分。如图所示,在搜索完左边一枝后,父节点得到一个值7,可以称之为β值,如果在其他支路的叶子节点上发现了一个大于β值的节点,则整个支路便可以剪掉,即没有必要在搜下去。因为根据极大-极小的运算关系,这一枝不可能对局面有更好的贡献。分析过程同α剪枝过程,节点2取叶节点5、6、7的极大值7,返回根结点β值7 ,节点3取叶子节点8、9、10的极大值,搜索到节点9时将9返回节点3,节点3的值大于β值7,所以剪掉节点10,进而剪掉节点3,继续搜索节点11,将8返回到节点4,节点4的值大于β值7,剪掉节点12、13,进而剪掉节点4。图示中的最佳路径为1-2-7。所以β限定的是极大值。 在多层搜索中,α与β剪枝相互配合就实现了α-β剪枝搜索,虽然它没有遍历某些子树的大量节点,但它仍不失为穷尽搜索的本性。在搜索着法过程中,每个搜索过的着法都返回跟α和β有关的值,它们之间的关系非常重要,也许意味着搜索可以停止并返回。剪枝技巧的发现,一下便为博弈树搜索效率的提高开创了崭新的局面。 α-β只能用递归来实现。工作的过程是在搜索中传递两个值,第一个值是α,即上次搜索到的最好值,任何

文档评论(0)

118books + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档