中国象棋设计技术分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东北大学人工智能与机器人研究所
中国象棋棋局演化过程
状态演化方程: 状态演化方程:
S n +1 = S n ⋅ qn +1 S F = S0 ⋅ q1 ⋅ q2 ⋅ ... ⋅ qF = S0 ⋅ Q
Qodd = {q1q3....} (红方 红方) 红方
Q = {q1q2 q3....qF }
Qevn = {q2 q4 ....} (黑方 黑方) 黑方
中国象棋计算机博弈 关键技术分析
徐心和
东北大学人工智能与机器人研究所 xuxinhe@gmail.com
东北大学人工智能与机器人研究所
2006.4.5
中象机器博弈的关键技术分析
棋局表示 着法生成 评估函数 博弈搜索 系统开发
东北大学人工智能与机器人研究所
系统建模基本约定
立 足 红 方 向 上 进 攻
q = { from moved to killed }
• • • • •
提址——from 即此着的出发位置; 即此着的出发位置; 提址 动子——moved(chessman moved)即走动的棋子; 动子 ( )即走动的棋子; 落址——to 即着法的到达位置; 落址 即着法的到达位置; 吃子——killed(chessman Captured)即吃掉的棋子。 吃子 ( )即吃掉的棋子。 对着法的要求:合法性、完整性、 对着法的要求:合法性、完整性、有序性
B
路 向
1,1 1, 2 1,3 1, 4 1,5 1, 6 1, 7 1,8 1,9 2,1 2, 2 2,3 2, 4 2,5 2, 6 2, 7 2,8 2,9 3,1 3, 2 3,3 3, 4 3,5 3, 6 3, 7 3,8 3,9 4,1 4, 2 4,3 4, 4 4,5 4, 6 4, 7 4,8 4,9 5,1 5, 2 5,3 5, 4 5,5 5, 6 5, 7 5,8 5,9 MB = 6,1 6, 2 6,3 6, 4 6,5 6,6 6, 7 6,8 6,9 7,1 7, 2 7,3 7, 4 7,5 7, 6 7, 7 7,8 7,9 8,1 8, 2 8, 3 8, 4 8,5 8, 6 8, 7 8,8 8,9 9,1 9, 2 9,3 9, 4 9,5 9, 6 9,7 9,8 9,9 10,1 10, 2 10,3 10, 4 10,5 10, 6 10,7 10,8 10,9
—— 棋谱
东北大学人工智能与机器人研究所
棋局状态展开示意图
东北大学人工智能与机器人研究所
红方走棋时展开深度为 的 红方走棋时展开深度为4的博弈树 时展开深度为
红方 Depth 0
黑方
Depth 1
红方 Depth 2 黑方 Depth 3
红方
Depth 4
东北大学人工智能与机器人研究所
象棋博弈软件的基本构成 象棋博弈软件的基本构成
哈希变换没有反变换! 哈希变换没有反变换!
东北大学人工智能与机器人研究所
着法生成原理 Move Generation
• 着法生成是博弈树展开的关键环节
东北大学人工智能与机器人研究所
着法的表示 着法的表示
• 相对着法:马八进七,炮5平2——非完整信息,需要 相对着法:马八进七, 非完整信息, 平 非完整信息 与当前局面结合 • 着法算子的运算功能:提-动-落-吃 着法算子的运算功能: 动 落 吃
k k
1 黑将 17 红帅 2 3 4 5 6 7 8 9 10 11 12 13 14 黑兵 28 29 30 红兵 31 32 15 16 黑车 18 19 黑马 20 21 黑炮 22 23 黑士 24 25 黑象 26 27
红车
红马
红炮
红士
红相
P = [ pk ]2×32
M
对于初始棋局
1 P0M = 5 10 5 1 1 10 1 1 9 9 1 2 10 1 8 10 2 3 2 10 8 3 8 8 2 1 4 8 8 1 6 10 4 1 3 1 7 10 6 4 1 10 3 4 3 10 7 4 5 7 1 4 7 7 3 4 9 7 5 7 7 7 9
行向
BiH
# 表示计算比特向量(二进制数)对应的十进制整数 表示计算比特向量(二进制数)
东北大学人工智能与机器人研究所
比特棋盘与棋局的布尔条件 比特棋盘与棋局的布尔条件 与棋局的
• 比特棋盘用以记录棋局的某些布尔条件。 比特棋盘用以记录棋局的某些布尔条件。 用以记录棋局的某些布尔条件 • 如果比特棋盘中对应某一格的位是“1”,那么这一格 如果比特棋盘中对应某一格的位是“ , 上的条件就是“ 如果是“ 则对应的条件就是 上的条件就是“真”;如果是“0”则对应的条件就是 假。 • 布尔条件就是在“哪些格子上符合你所定义的条件”。 布尔条件就是在“哪些格子上符合你所定义的条件” • 比如,“棋盘哪些位置有棋子?” “棋盘哪些位置有 比如, 棋盘哪些位置有棋子? 红棋棋子? 棋盘哪些位置有车? 红棋棋子?” “棋盘哪些位置有车?” …… • 这给计算机上的表示带来很大方便:12个字节,96位 这给计算机上的表示带来很大方便: 个字节 个字节, 位 位为0)。 便可以表示一种条件( 位为 便可以表示一种条件(高6位为 )。 • 比特棋盘预置表法在着法生成中具有重要的地位,而 比特棋盘预置表法在着法生成中具有重要的地位, 且在评估中可以方便地判断棋子相互的联系和威胁。 且在评估中可以方便地判断棋子相互的联系和威胁。
B n M n M n
S B ——棋局状态矩阵 棋局状态矩阵 棋局状态 棋子状态矩阵 S M —— 棋子状态矩阵
棋子位置矩阵 棋子位置 P M ——棋子位置矩阵 比特棋盘矩阵 比特棋盘 B ——比特棋盘矩阵
东北大学人工智能与机器人研究所
棋盘表示与棋盘矩阵 棋盘表示与棋盘矩阵
M = m
hk = Random64( k M , PkM ) , k = 1,2,...32
形成哈希数( 形成哈希数(值)
32
H = ⊕ hk
k =1

为异或算符, 64位数 为异或算符,H 为64位数
H 便构成当前棋局的索引值,与棋局形成单向对应, 便构成当前棋局的索引值,与棋局形成单向对应, 即由P 可以生成H,但由H 无法产生P。
东北大学人工智能与机器人研究所
棋局的哈希数 与 棋局的哈希数(H)与哈希变换 哈希数
黑将 k kM k kM 1 -1 红帅 17 1 黑车 2 -2 18 2 3 -2 19 2 黑马 4 -3 20 3 5 -3 21 3 黑炮 6 -4 22 4 7 -4 23 4 黑士 8 -5 24 5 9 -5 25 5 黑象 10 -6 26 6 11 -6 27 6 12 -7 28 7 13 -7 29 7 黑兵 14 -7 红兵 30 7 31 7 32 7 15 -7 16 -7
红车
红马
红炮
红士
红相
哈希变换 生成6 生成64位随机数
P
M
HashTransform

H
hk = Random64( k M , PkM ) , k = 1,2,...32
东北大学人工智能与机器人研究所
棋局的哈希数 与 棋局的哈希数(H)与哈希变换 哈希数
由当前棋局P 生成6 由当前棋局 M生成64位随机数
B = [bi , j ]10×9
B1H M B= = B1V M H B10
1 bi , j = { 0
L L B9V
si , j ≠ 0 si , j = 0
路 向
注意: 注ห้องสมุดไป่ตู้: Bi
V
路向比特向量 ( Vertical ) 行向比特向量 ( Horizon )
第1行表示编号为 的棋子在棋盘矩阵中的行号, 行表示编号为k的棋子在棋盘矩阵中的行号, 编号为 的棋子在棋盘矩阵中的行号 行表示编号为 的棋子在棋盘矩阵中的列 编号为k的棋子在棋盘矩阵中的 第2行表示编号为 的棋子在棋盘矩阵中的列(路)号。
东北大学人工智能与机器人研究所
比特棋盘表示法 比特棋盘表示法
红子
字母代号 兵种编码 象棋明星 兵种编码
帅 k 1 02 将 K -1 12
车 r 2 04
车(砗) 砗
马 h 3 08
马(码) 码
炮 c 4 06
炮(砲) 砲
仕 b 5 0c 士 B -5 1c
相 e 6 0a 象 E -6 1a
兵 p 7 0e 卒 P -7 1e
Null 0
黑子
字母代号 兵种编码 兵种编码 象棋明星 兵种编码
东北大学人工智能与机器人研究所
初始行 路比特向量对应数值 初始行、路比特向量对应数值
东北大学人工智能与机器人研究所
#B——比特向量索引值 比特向量索引值 比特向量
• 一个 位(9位)比特向量 可以表示一路(行) 一个10位 位 比特向量B可以表示一路 可以表示一路( 棋子的分布,它又可以有一个正整数#B作为索 棋子的分布,它又可以有一个正整数 作为索 这将为今后的棋盘分析带来巨大方便; 引,这将为今后的棋盘分析带来巨大方便; 路向棋子全部可行分布情况的索引值范围 • 表示路向棋子全部可行分布情况的索引值范围 表示路向棋子全部可行分布 为0—210-1=1023; ; • 表示行向棋子全部可行分布情况的索引值范围 表示行向棋子全部可行分布 行向棋子全部可行分布情况的索引值范围 为0—29-1=511; ; • 这样通过索引值就可以找到相应棋子的分布情 这样通过索引值 索引值就可以找到相应棋子的分布情 况。
路 向
−2 −3 −5 −6 −1 −6 −5 −3 −2 0 0 0 0 0 0 0 0 0 0 −4 0 0 0 0 0 −4 0 −7 0 −7 0 −7 0 −7 0 −7 0 0 0 0 0 0 0 0 0 S0B = 0 0 0 0 0 0 0 0 0 7 0 7 0 7 0 7 0 7 4 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 3 5 6 1 6 5 3 2
行向
东北大学人工智能与机器人研究所
初始棋子状态的表示 初始棋子状态的表示 棋子状态
编码 棋子 编码 棋子 1 黑将 17 红帅 2 3 4 5 6 7 8 9 10 11 12 13 14 黑兵 28 29 30 红兵 31 32 15 16 黑车 18 19 红车 黑马 20 21 红马 黑炮 22 23 红炮 黑士 24 25 红士 黑象 26 27 红相
R -2 14
H -3 18
C -4 16
黑子中的砗、 黑子中的砗、码、砲将在不便区分车、马、炮的红黑方时使用 砲将在不便区分车、
东北大学人工智能与机器人研究所
初始棋局状态的表示 初始棋局状态的表示
兵种 编码 兵种 编码 红帅 1 黑将 -1 红车 2 黑车 -2 红马 3 黑马 -3 红炮 4 黑炮 -4 红士 5 黑士 -5 红相 6 黑象 -6 红兵 7 黑兵 -7 无子 0
S0M
2 4 10 8 1 9 0 0 0 0 0 0 0 6 0 0 0 0 12 0 13 0 14 0 0 0 0 0 0 0 = 0 0 0 0 0 0 28 0 29 0 30 0 0 22 0 0 0 0 0 0 0 0 0 0 18 20 26 24 17 25
3 0 0 7 0 15 0 16 0 0 0 0 0 0 31 0 32 0 23 0 0 0 0 27 21 19 11 0 5 0
S B − −棋局状态矩阵 S M − −棋子状态矩阵
东北大学人工智能与机器人研究所
棋子位置矩阵表示法 棋子位置矩阵表示法 矩阵
• • • • • • • • 人机界面 棋局表示与数组管理 着法生成与博弈树展开 棋局评估函数 博弈搜索引擎 开局库 残局库 系统总控
东北大学人工智能与机器人研究所
棋局表示 Board Representation
• 通常我们使用状态集合来表示 n 时刻的棋局状 时刻的棋局状 态。即
S n = {S , S , P , Bn ,...}
B i , j 10×9
矩阵元素为数偶, 矩阵元素为数偶, 表示棋盘坐标值。 表示棋盘坐标值。
行向
东北大学人工智能与机器人研究所
棋子表示法
国际象棋 中国象棋 King King Rook Rook Knight Horse Cannon Cannon Queen Guard Bishop Elephant Pawn Pawn
相关文档
最新文档