六子棋博弈系统设计和实现.docVIP

  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文档。上传文档
查看更多
六子棋博弈系统设计和实现

六子棋博弈系统设计和实现   摘要:六子棋作为计算机博弈比赛项目越来越受到重视。从棋局表示、估值函数设计、搜索算法、走法生成器以及开局库几个方面介绍了六子棋博弈系统的设计与实现。该系统在“成理杯”2014届全国大学生计算机博弈大赛六子棋项目比赛中,获得了一等奖的好成绩。大量模拟实验证明,该算法具有一定的有效性和实用性。   关键词:六子棋;估值函数设计;走法生成器;开局库   中图分类号:TP319   文献标识码:A 文章编号:1672-7800(2015)003-0092-03   0 引言   人工智能是研究智能的理论、方法、技术及应用系统的科学,其最关心的是知识表示与搜索,也是计算机博弈要解决的问题。计算机博弈也称为机器博弈,最早来源于博弈论思想。目前计算机博弈研究主要针对人机对战的棋盘类游戏,因而人工智能相关技术在计算机博弈游戏中被广泛应用。   六子棋由五子棋演变而来,2003年由台湾新竹交通大学吴毅成教授提出,其规则简单、游戏公平、玩法复杂,受到玩家欢迎,逐渐得到推广。   六子棋标准棋盘为19×19,黑白双方轮流下棋,除了第一次由黑方先下一颗子外,其后各方每轮下两颗棋子,连成六子(或以上)者获胜,如图1所示。六子棋没有禁手,长连(连成六子以上)即算赢棋,若全部棋盘填满仍未分出胜负则算和棋。   图1 六子棋棋盘   本文主要从棋盘表示、走法生成器、估值函数设计、搜索算法实现以及开局库几个方面介绍六子棋博弈系统的设计与实现。   1 棋盘表示   棋盘的表示一般有数组表示法和比特表示法,比特表示法又称为位棋盘。六子棋棋盘一般为19×19,若用二维数组表示棋盘即为Board[19][19]。   采用位棋盘的作用就是记录棋盘上的某些布尔条件,根据布尔值放入对应的棋子。位棋盘如今广泛应用在六子棋中,原因是效率高、占用空间小。本文程序采用64位长度的变量,与数组表示法相比较,位棋盘每19个点需要38位。用64位长度的变量表示,19行就需19×8B,即为152B,而数组表示法需要361B。   2 走法生成器   六子棋中所有的位置都是合法位置,但如果将其都加入到走法生成器中,对后续的估值会造成极大的负担,进而导致搜索深度受到限制。因此对棋盘采用合适的方法选择有效的位置再进行估值,将有利于搜索的深度。走法生成器需考虑3个要素:①考虑能让我方形成六连局面的位置;②考虑限制对方形成六连的位置;③考虑其它合法位置。   3 估值函数设计   六子棋常用的估值方法有两种:一种是采用棋型分析方法,另一种采用 “路”的分析方法。本程序为了提高估值价值、减小搜索量,采用棋型分析和“路”分析相结合的方法。   3.1 基于棋型的估值函数设计   在估值分析中采用棋型分析方法。由于六子棋每次落两子的缘故,在估值分析中便会分析两层,棋型分析也分为两类,一类棋型是将局势向己方有利的局面发展,另一类是下棋时会直接产生胜负。我们在程序中采用常见棋型估值分析方法计算局面价值,减少搜索量,判断合理落子顺序。常用的位置信息有眠五、眠四、活五、活四、活三等,具体如下:   眠五:在同一直线上有5颗同色棋子,符合“对方用一手棋就能挡住或长连”的棋型;   活四:在同一直线上有4颗同色棋子,符合“对方必须用两手棋才能挡住或长连”的棋型,如图2所示;   眠四:在同一直线上有4颗同色棋子,符合“对方用一手棋就能挡住或长连”的棋型,如图3所示;   活三:在同一直线上有3颗同色棋子,符合“在下一手就能形成活四”的棋型,如图4所示;   活五:在同一直线上(包括对角斜线,以下同)有5颗同色棋子,符合“对方必须用两手棋才能挡住或长连”的棋型,如图5所示;   朦胧三:在同一直线上有3颗同色棋子,符合“在下一手棋只能形成眠四,而如果在下两手棋的话就能形成活五”的棋型;   眠三:在同一直线上有3颗同色棋子,符合“在下两手也只能形成眠五”的棋型;   活二:在同一直线上有2颗同色棋子,符合“在下两手就能形成活四”的棋型;   眠二:在同一直线上有2颗同色棋子,符合“在下两手也只能形成眠四”的棋型。   3.2 基于路的估值函数设计   路也是估值分析中常用的方法。所谓“路”是指在棋盘上存在连续6个可能连成一线的点位,由于每条“路”上有6个连续点位,这样,判断棋型就变得更为简单。比如:某 “路”有5颗同色棋子,不必关心它是活五还是眠五,一律统称为五路。路的总数减少,可以有效降低棋型判断的复杂度,方便计算棋盘的状态值。   基于路的函数设计需要从横向、纵向、左斜和右斜4个方向根据同色棋子的分布情况进行统计,然后再根据不同的路进行价值计算就可获得当前局面的价值。   Score的分值决定了当前的局面情况,Sco

文档评论(0)

130****9768 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档