本书是为计算机博弈竞赛爱好者而撰写,主要介绍了计算机博弈的基本原理,介绍了计算机博弈程序开发中常用的算法,包括极大极小算法、α-β算法、期望搜索算法、UCT算法和Q学习算法等,并介绍了以α-β算法为基础的一些常用的变种算法和提高搜索效率的方法。
本书以目前我国开展的中国大学生计算机博弈大赛暨中国锦标赛为基础,给出了包括亚马逊棋、点格棋、桥牌等7个博弈游戏的算法与实现案例,涵盖了完备信息和非完备信息两大部分计算机博弈的内容,每个案例各有特色,对不同博弈游戏的估值均有详细介绍。
阅读本书的读者应具有一定C或C++基础。本书可以作为人工智能或智能计算等相关专业的教材,也可以作为计算机博弈爱好者的参考用书。
前言
第1章概述
1.1计算机博弈概述
1.2国际计算机博弈锦标赛
1.3中国大学生计算机博弈大赛暨
中国锦标赛
第2章计算机博弈基础
2.1计算机博弈的基本原理
2.1.1基本原理
2.1.2计算机博弈的搜索方法
2.1.3递归
2.1.4回溯
2.2常用搜索算法与示例
2.2.1极大极小算法
2.2.2用极大极小法实现井字棋游戏
2.2.3α-β剪枝算法
2.2.4期望搜索算法
2.2.5迭代加深
2.2.6PVS算法
2.3估值函数的设计
2.3.1估值函数设计概述
2.3.2估值函数设计示例
2.3.3布局与估值
2.3.4估值函数的调整方法
2.4置换表
2.5UCT算法
2.5.1Monte Carlo算法
2.5.2Monte Carlo树搜索
2.5.3UCT算法概述
2.6Q学习算法
2.6.1强化学习
2.6.2Q学习算法与示例
第3章亚马逊棋的设计与实现
3.1简介
3.2规则
3.3搜索算法
3.4估值函数设计
3.4.1领地的估值
3.4.2棋子灵活度的估值
3.5程序的设计与实现
3.5.1棋盘表示与数据处理
3.5.2估值函数中的Dji(a)的实现
3.5.3搜索算法的实现
3.5.4走法生成器的实现
第4章点格棋的设计与实现
4.1简介
4.2规则
4.3点格棋的基本原理
4.3.1基本概念
4.3.2基本理论
4.4搜索算法
4.5估值函数设计
4.6程序的设计与实现
4.6.1基本结构
4.6.2点格棋的数据表示
4.6.3估值模块和搜索模块的实现
第5章六子棋的设计与实现
5.1简介
5.2规则
5.3估值分析
5.3.1以棋型为基础的分析方法
5.3.2以“路”为基础的分析方法
5.4估值函数设计
5.4.1基于棋型的估值函数设计
5.4.2基于“路”的估值函数设计
5.5程序的设计与实现
5.5.1软件的基本结构
5.5.2棋盘数据表示
5.5.3走法生成器
5.5.4开局库的使用
5.5.5估值函数的实现
5.5.6搜索算法的实现
5.5.7走法生成器的实现
5.5.8置换表与哈希表
第6章苏拉卡尔塔棋的设计与实现
6.1简介
6.2规则
6.3算法分析
6.4估值函数设计
6.4.1棋子位置分析
6.4.2吃子路径分析
6.4.3棋子的灵活度分析
6.4.4棋局估值
6.5程序的设计与实现
6.5.1软件的基本结构
6.5.2棋盘数据与棋盘位置价值
6.5.3走法生成模块的实现
第7章西洋跳棋的设计与实现
7.1简介
7.2规则
7.3估值分析
7.4程序的设计与实现
7.4.1程序的基本结构
7.4.2棋盘数据表示
7.4.3走法生成模块的实现
7.4.4估值函数的实现
7.4.5搜索算法的实现
第8章桥牌的设计与实现
8.1简介
8.2规则
8.3桥牌博弈程序的关键技术
8.3.1抽样的设计
8.3.2双明手求解器
8.3.3优化抽样的算法实现
8.4程序的设计与实现
8.4.1桥牌博弈系统架构
8.4.2博弈平台的设计与实现
8.4.3AI引擎的设计与实现
目录
第9章德州扑克的设计与实现
9.1简介
9.2规则
9.3博弈树的设计
9.4估值函数的设计
9.5专家系统和专家知识库的
设计
9.6程序的设计与实现
9.6.1德州扑克博弈系统架构
9.6.2搜索模块
9.6.3估值模块
附录
附录A中国大学生计算机博弈
大赛
暨中国锦标赛部分
项目规则
附录B桥牌AI引擎的核心
部分源码
参考文献