|
技术:Java等
摘要:
近年来,现代化的人工智能以及先进的计算机技术迅猛发展,基于此基础的电脑象棋程序,其下棋水平也得到了进一步的提升。
然而,早在二十世纪的六十年代初期,来此美国麻省理工学院的约翰·麦卡锡就提出了修剪算法——“alpha-beta”。在该算法提出以前,通常计算机下棋程序在决定每一步走步时,所需的棋盘状态空间的搜索量都是指数级别的,而该算法则将这一搜索量的数量级减少为指数的平方根,这极大程度地提高了电脑下棋程序的水平。
而随后IBM公司推出的超级计算机“Deep Blue”,则是一个不择不扣的神话,这一耗资上千万,耗时8年所建造出的世界上最强大的国际象棋“棋手”,着实为广大棋迷们所神往。本文内容根据以往国内外象棋程序在设计上所取得的一些成功案例及经验,为中国象棋设计其基本的思路和算法。
关键词:中国象棋,位棋盘,alpha-beta搜索,Zobrist键值,置换表
目录:
摘要 i
Abstract ii
目 录 1
引 言 1
1 概述 2
1.1 棋盘的标记 2
1.1.1 纵线方式 2
1.1.2 坐标方式 2
1.2 棋子的名称 3
1.3 棋谱的记录方法 3
1.4 历史局面的表示及存储 4
1.5 棋谱记录文件的格式 4
1.5.1 标签部分 4
1.5.2 棋谱记录部分 5
1.5.3 XML格式 5
2 基本数据结构——位棋盘 7
2.1 什么是位棋盘 7
2.2 位棋盘的作用 7
2.3 位棋盘的基本运算 9
2.4 Java中位棋盘的实现 9
2.4.1 位棋盘类的实现 9
2.4.2 位棋盘的初始化 10
2.4.3 位棋盘的更新 10
3 基本数据结构——Zobrist键值 11
3.1 比较局面的方法 11
3.2 Zobrist键值的实现方法 11
3.3 Zobrist键值的工作原理及用途 11
3.3.1 Zobrist键值的工作原理 11
3.3.2 Zobrist键值的用途 12
3.4 Java中实现Zobrist键值 12
4 着法生成 14
4.1伪合法着法的生成 14
4.1.1 数组及其下标的含义 14
4.1.2 算法示例——车炮的伪合法着法生成 16
4.2 合法着法的生成 18
5 搜索算法 21
5.1 最小-最大搜索 21
5.1.1基于最小-最大的评价函数 21
5.1.2 最小-最大搜索 21
5.1.3 负值最大函数 23
5.2 Alpha-Beta搜索 23
5.2.1 最小-最大搜索算法的问题 23
5.2.2 Alpha-Beta修剪 24
5.2.3 Alpha-Beta修剪算法的实现 25
5.2.4 可能的弱点 26
5.3迭代加深 26
5.4 置换表 27
5.4.1 置换表的实现 27
5.4.2 替换策略 29
6 局面评价函数 30
6.1 评价函数的实现方法 30
6.1.1 算法设计思路 30
6.1.2评价要素的组合 31
6.2评价函数所需的信息 31
7 程序的设计及实现 34
7.1 搜索引擎的实现(engine包) 34
7.2 信息传输机制(message包) 34
7.3 棋子(pieces包) 35
7.4 主控模块(main包) 35
参考文献 36
致 谢 37
外文文献 38
包含资料:
截图:
百度网盘下载地址(金币充值):
游客,本付费内容需要支付 100金币 才能浏览 支付
|
|