中国象棋计算机博弈发展史研究报告

系统梳理中国象棋计算机博弈从 1980 年代到 2026 年的技术演进、代表引擎与社区生态。 第一卷 计算机博弈的理论基础 → 第五章 棋天大圣:学术与工程的交汇(2004–2006)

☰ 目录

第一卷 计算机博弈的理论基础

第一章 计算机棋类博弈的基本概念

1.1 什么是计算机博弈

计算机博弈(Computer Game Playing)是人工智能研究的一个核心领域。其基本问题可以表述为:如何让计算机在完全信息、轮流走棋的双人对弈游戏中做出最优决策?

中国象棋属于完全信息博弈(Perfect Information Game)——对弈双方都能看到棋盘上的所有棋子,不存在隐藏信息。这与麻将、扑克等非完全信息博弈有本质区别。完全信息博弈的特点使得Minimax搜索算法可以直接应用。

1.2 Minimax搜索与Alpha-Beta剪枝

Minimax搜索是计算机博弈的理论基石。其基本思想是:在博弈树中,每一层代表一个玩家的走棋决策,假设双方都选择对自己最有利的走法:

  • **己方(MAX)**选择评估值最大的走法
  • **对方(MIN)**选择评估值最小的走法(对自己最有利的相当于使对方评估值变小)

公式可以表示为:

Minimax(局面) = max(对手所有走法后的 Minimax(对手走法结果))

Minimax搜索在理论上是完美的,但在实际中,博弈树的规模随搜索深度指数增长。中国象棋的平均分支因子约为40-60种合法着法——这意味着搜索10层需要评估40^10 ≈ 10^16个节点,这在任何计算机上都是不可行的。

Alpha-Beta剪枝的出现解决了这个问题。Alpha-Beta剪枝的核心思想是:当搜索到某个分支时,如果发现该分支已经不可能影响最终的决策结果,则立即停止对该分支的进一步搜索。

具体机制:

  • Alpha值表示MAX玩家当前的最佳保证值(下限)
  • Beta值表示MIN玩家当前的最佳保证值(上限)
  • 当一个分支的搜索返回的值超出了[Alpha, Beta]区间时,可以选择剪枝

理想情况下,Alpha-Beta剪枝可以将搜索复杂度从O(b^d)降低到O(b^(d/2))——在同样的时间内,搜索深度翻倍。对于中国象棋这样分支因子高的游戏,Alpha-Beta剪枝的效果极为显著。

1.3 国际象棋引擎的先行研究

中国象棋引擎的发展在很大程度上受益于国际象棋引擎的先行研究。

Claude Shannon的奠基性工作(1950年):

1950年,贝尔实验室的克劳德·香农(Claude Shannon)发表了划时代的论文《Programming a Computer for Playing Chess》。在这篇论文中,香农首次提出了如何让计算机下棋的系统方法:

  1. 类型A策略(暴力搜索):搜索所有可能的着法到一定深度,然后使用评估函数评估局面。
  2. 类型B策略(选择性搜索):只选择有希望的着法进行深度搜索,忽略明显坏的着法。

香农还提出了博弈树搜索的基本理论框架和局面评估函数的设计原则。这篇论文被认为是计算机博弈领域的奠基之作。

Alan Turing的早期实现(1951年):

阿兰·图灵(Alan Turing)在曼彻斯特大学期间,设计了一个计算机下棋的程序(Turochamp)。由于当时没有足够强大的计算机来运行它,图灵只能"手动模拟"算法的执行——他每走一步棋需要计算大约30分钟。尽管如此,Turochamp证明了计算机下棋在原则上是可行的。

Deep Blue的历史意义(1997年):

1997年,IBM的Deep Blue在国际象棋上击败了世界冠军加里·卡斯帕罗夫(Garry Kasparov),这是计算机博弈历史上最重要的里程碑事件。Deep Blue使用了定制的VLSI芯片,每秒钟可以评估2亿个局面。其基本架构仍然遵从Minimax搜索+Alpha-Beta剪枝的框架,但通过工程优化达到了前所未有的搜索速度(有些局面下搜索深度可达20层以上)。

这些程序所发展的**Alpha-Beta剪枝、迭代加深(Iterative Deepening)、置换表(Transposition Table)、历史启发(History Heuristic)、杀手着法(Killer Move)、空着裁剪(Null Move Pruning)**等技术,后来都被中国象棋开发者吸收并加以适配。

1.4 为什么中国象棋程序起步较晚

中国象棋程序起步晚于国际象棋,并非偶然:

  • 硬件条件。 1980年代中国大陆和中国台湾的个人计算机普及率远低于西方,286/386处理器的计算能力极为有限。
  • 语言与工具。 早期象棋程序的开发主要使用C语言和汇编语言,而这些工具在华人社区的传播较慢。
  • 缺乏标准化数据。 国际象棋有PGN标准格式、庞大的棋谱数据库和统一的国际赛事体系;而中国象棋在1990年代缺乏统一的电子棋谱标准。
  • 学术支持薄弱。 国际象棋有ICGA(国际计算机博弈协会)的长期支持和大量学术论文,而中国象棋在学术界的关注度较低。
  • 竞赛体系不完善。 国际象棋有定期的国际计算机博弈锦标赛和标准化的比赛规则;中国象棋的计算机竞赛体系在很长时间内缺乏统一的组织。
  • 文化因素。 1980年代正值AI研究寒冬(AI Winter),公众对"机器智能"的态度比较保守。中国象棋社区中,将"电脑下棋"视为高科技探索也经历了一个逐步接受的过程。

尽管起步较晚,中国象棋引擎的发展速度却非常快——从1989年将族首次夺冠,到2022年Pikafish引入NNUE,短短33年间,中国象棋引擎的棋力从业余初级水平进化到超越人类特级大师的水平,其发展速度甚至快于国际象棋程序的进化历程。这种快速追赶现象可以归因于两个因素:一是中国象棋引擎可以直接借鉴国际象棋引擎成熟的技术框架;二是计算机硬件在1980年代后期的快速发展为中国象棋引擎提供了比国际象棋先驱们更好的开发环境。


第二章 最早的象棋程序:1989年计算机奥林匹亚竞赛与将族

2.1 宏碁杯与计算机象棋的起点(1985–1988)

最早的中国象棋计算机比赛是由**宏碁电脑(Acer)**在台湾举办的"宏碁杯",从1985年到1990年每年举行。这是中国象棋计算机博弈最早的竞技平台。

1985年举办的第一届宏碁杯计算机象棋大赛被认为是世界上第一个有组织的中国象棋程序竞赛。根据有限的历史资料,当时参赛的程序数量不多,棋力也十分有限,但这标志着中国象棋计算机博弈从个人实验走向了有组织竞赛的新阶段。宏碁杯由中国台湾的宏碁电脑公司赞助,以推广个人电脑应用和软件开发为目标。这种企业支持对早期中国象棋软件发展起到了关键的推动作用。

根据ICGA记录,第一个可工作的中国象棋程序大约出现在1982年。第一篇关于中国象棋计算机博弈的学术论文发表于1981年。但这些早期程序仍然处于实验阶段,远远无法与人类棋手抗衡。最早的实验性程序主要是基于规则的简单系统,搜索深度通常只有2-3层,评估函数也极为粗略。

2.2 将族(Acer Chinese Chess/象棋大师3)

将族(英文名Acer Chinese Chess,也称CChess、象棋大师3)由中国台湾程序员虞希舜(Yu Xishun)在大学时期开发。该程序在1989年于伦敦举行的**第1届计算机奥林匹亚竞赛(1st Computer Olympiad)**中获得中国象棋项目的金牌。

将族(Acer Chinese Chess)运行界面
将族(Acer Chinese Chess)运行界面——由虞希舜在大学时期开发,1989年首届ICGA计算机奥林匹亚金牌得主,开启了中国象棋计算机博弈的先河

根据ICGA的官方记录,第1届计算机奥林匹亚中国象棋项目共有5个参赛程序:

排名 程序 国家/地区 得分 比赛总局数
1 Acer Chinese Chess(将族) 台湾 4.0 4
2 CChess Expert Acme 台湾 3.0 4
3 Elephant 台湾 1.5 4
4 Xian 美国 1.5 4
5 Ogre 英国 0.0 4

将族的商业化产品"象棋大师3"于1992年在DOS平台发布。其棋力据称相当于中国象棋业余二段水平以上,在当时DOS平台上的表现极为突出。

技术特点:

将族采用了当时较为标准的计算机博弈架构:

  • 局面表示: 使用10×9的二维数组表示棋盘,每个格子编码棋子类型和颜色。
  • 搜索算法: 深度优先的Alpha-Beta剪枝搜索,配合迭代加深(Iterative Deepening)技术。搜索深度通常在4至7层之间。
  • 评估函数: 以子力价值为主(车>马>炮>兵),结合简单的位置权重表和基础攻击/防守判断。
  • 开局库: 内置了当时较全面的开局变化库,使得引擎在开局阶段不会消耗搜索时间。
  • 工程特点: 界面与引擎高度耦合,作为一个单体DOS程序运行。这在当时是标准做法,但也意味着引擎无法独立于界面使用。

历史影响与局限:

将族在中国象棋引擎史上具有开创性的地位,但关于它的认知存在一些需要纠正的偏差:

  1. 它不是"第一个"中国象棋引擎——在它之前已有实验性程序出现(如Xian、Elephant)。
  2. 它也不是当时"最强"的引擎——在1990年第2届计算机奥林匹亚竞赛中,Elephant(许舜钦开发)获得金牌,将族未参赛。
  3. 它的核心贡献在于"可传播性"——作为商业发行的软件,“象棋大师3"在DOS时代的华语圈广泛流传,让大量普通用户第一次体验到了"电脑下棋”。
  4. 引擎与GUI耦合——无法独立调用引擎,限制了其后续发展。

虞希舜的开创性贡献:

虞希舜将族的最重要贡献在于,他在1980年代末期的资源限制下实现了具有竞争力的象棋程序。根据有限的公开资料,将族使用了在当时的PC上可以达到的最优搜索策略,并编写了高质量的汇编语言核心代码。虞希舜后来转向了其他领域(资料显示他在微软工作过),并没有持续从事中国象棋引擎的开发。但他留下的遗产——将族/象棋大师3——在中国象棋软件史上具有不可磨灭的地位。

将族软件包装盒
将族(Acer Chinese Chess)DOS版软件包装盒——由宏碁电脑发行,是中国象棋计算机博弈历史上最早的商业软件之一

2.3 将族之后的早期商业引擎

在将族取得成功后,中国台湾和中国大陆出现了一批早期的商业象棋软件:

  • 象棋世家:在将族的基础上继续发展的商业程序,由宏碁/倚天继续维护
  • 象棋武林:中国大陆早期的象棋程序之一
  • 象棋大师系列的多版本迭代

这些早期商业程序的特点是:

  • 界面与引擎高度耦合,无法分离
  • 棋力大致在业余初级至中级水平
  • 主要面向个人消费者市场
  • 技术细节通常不公开

2.4 ICGA的技术规则与学术竞赛环境

国际计算机博弈协会(ICGA)为中国象棋计算机竞赛提供了重要的组织框架。在ICGA竞赛中:

  • 使用的是正式的中国象棋竞赛规则(亚洲规则)
  • 比赛时间控制通常较为宽裕(如每方1小时包干)
  • 对局双方必须使用各自独立开发的程序
  • 赛事为单循环制或多轮瑞士制

ICGA竞赛环境对中国象棋引擎的学术性发展起到了重要推动作用。学者们可以在标准化条件下比较不同算法和实现的效果,这种竞争-验证机制促进了技术的迭代和优化。但ICGA竞赛的参与门槛较高(需要前往指定地点参赛),限制了独立开发者和业余爱好者的参与。


第三章 UCCI与UCI协议:中国象棋引擎标准化的关键一步

3.1 UCCI协议的诞生

UCCI协议(Universal Chinese Chess Interface,中国象棋通用引擎协议)的诞生是中国象棋引擎历史上的一个关键转折点。在UCCI出现之前,每个中国象棋引擎都是一个"黑盒"——引擎和用户界面(GUI)紧密耦合在一起,用户无法自由替换引擎或界面。

协议的设计者与时间节点:

UCCI协议由黄晨设计,于2006年正式发布在xqbase.com上。黄晨同时也是ElephantEye(象眼)引擎的作者和xqbase.com的维护者。他设计UCCI协议的初衷是:让不同的中国象棋引擎可以像国际象棋引擎那样通过标准化的文本协议与任意GUI通信。

UCCI协议的设计受到了国际象棋UCI协议(Universal Chess Interface,由Stefan Meyer-Kahlen和Shane Hudson设计)的深刻影响。可以说,UCCI本质上是UCI针对中国象棋规则的适配版本。

UCCI的核心思想:

UCCI采用简单的文本行(line-based text protocol)作为通信格式。GUI向引擎发送指令,引擎返回结果。这种设计具有以下优点:

  1. 协议无关性:通信基于标准输入输出(stdin/stdout),与操作系统和编程语言无关。无论是Windows、Linux还是macOS,无论是C++、Java还是Python实现的引擎,都可以通过UCCI通信。

  2. 简单性:每条指令和响应都是可读的文本行,易于调试和理解。

  3. 异步性:在搜索过程中,引擎可以随时向GUI发送中间搜索结果(如当前最佳走法、搜索深度、评估值等)。

  4. 可扩展性:引擎可以通过"feature"命令声明自己对协议特定扩展的支持。

UCCI标准指令详解:

UCCI协议定义了以下核心指令,这里列出主要指令的格式和功能:

  • ucci:引擎初始化指令。GUI发送"ucci",引擎回复"id name <引擎名称>"和"id author <作者>"等信息,然后发送"ucciok"表示初始化完成。

  • isready / readyok:同步检查指令。GUI通过"isready"确认引擎是否处于可工作状态,引擎回复"readyok"。

  • setoption <name> <value>:设置引擎选项。比如设置哈希表大小、线程数、评估参数等自定义选项。

  • position [[fen](/zh-cn/xiangqi-fen/) <FEN串>] startpos moves <着法列表>:设置棋盘局面。可以指定FEN串(未知起点)或使用开局库标准开局。然后列出之前已走的着法序列。

  • go <参数>:开始搜索。参数可能包括搜索深度(depth)、搜索时间(time/movetime)、搜索节点数(nodes)、无限搜索(infinite)等。

  • stop:停止搜索。

  • ponderhit:在后台思考(pondering)模式下,GUI通知引擎对方走了它预判的着法。

  • quit:终止引擎进程。

UCCI协议的中国象棋适配:

UCCI相比于UCI,针对中国象棋的特点进行了以下适配:

  1. 着法格式:中国象棋的着法使用起始坐标到目标坐标的方式表示(如"a0a1"),而非国际象棋的"代数记谱法"(如"e2e4")。

  2. FEN格式:适配了中国象棋的棋盘尺寸(9×10而非8×8)和棋子类型。

  3. 规则处理:协议层支持中国象棋特有的规则处理需求,如循环着法、将帅照面等。

3.2 UCCI协议的实际影响

UCCI协议的出现对中国象棋引擎生态产生了深远影响:

  1. 引擎与界面的分离:从此引擎可以作为独立的模块运行,用户可以在同一个GUI中切换不同的引擎。这催生了像兵河五四这样的多引擎管理工具。

  2. 对比测试的便利化:因为协议统一,开发者可以轻松地在同一平台、同一局面下比较不同引擎的棋力和表现。

  3. 开源工具的涌现:基于UCCI协议,社区开发了大量的辅助工具和GUI:包括兵河五四、象棋旋风界面、倚天界面、棋软收藏家等。

  4. 分布式计算的实现:UCCI协议的文本特性使其非常适合在分布式环境中使用,通过TCP/IP在不同的机器上运行引擎和GUI。

3.3 UCCI与UCI的深度对比

虽然UCCI基于UCI,但两者在中国象棋和国际象棋引擎开发中的使用场景有一些显著差异:

特点 UCI(国际象棋) UCCI(中国象棋)
棋盘大小 8×8 9×10
棋子种类 6种/方 7种/方
走法表示 e2e4格式 a0a1格式
FEN描述 国际象棋FEN 中国象棋适配FEN
循环着法处理 三次重复即和 复杂(长将/长捉/二打一还打)
协议成熟度 1999年发布,极其成熟 2006年发布,后续有修订

UCCI与UCI之间最本质的区别在于**循环着法(repetition detection)**的处理。在国际象棋中,三次重复局面自动判和;而在中国象棋中,需要区分"长将"、“长捉”、"一将一捉"等不同类型的循环着法,执行不同的判罚。这意味着UCCI协议的引擎需要比UCI引擎具备更复杂的重复检测逻辑。

3.4 黄晨对UCCI的维护

黄晨在xqbase.com上维护了UCCI协议的官方规范,并提供了参考实现(ElephantEye)。他还设计和实现了UCCI调试器协议一致性测试工具,帮助开发者确保他们的引擎正确实现了UCCI协议。

xqbase.com作为中国象棋程序设计的中心站点,提供了:

  • UCCI协议的完整中文文档
  • ElephantEye引擎的完整源代码(LGPL许可证)
  • 中国象棋编程教程(包括评估函数、搜索算法、置换表实现等专题)
  • XQF棋谱格式的工具链

黄晨为UCCI和ElephantEye投入的大量时间和精力,使其成为当之无愧的"中国象棋引擎开源之父"。

3.5 FEN格式在中国象棋中的标准

在UCCI协议中,FEN(Forsyth‑Edwards Notation)作为局面的标准文本表示被正式引入中国象棋领域。中国象棋适配的FEN格式具体如下:

  • 棋盘表示:从第1行(黑方底线)到第10行(红方底线),使用"/"分隔
  • 大写字母(红方):K=帅,A=士,B=象,N=马,R=车,C=炮,P=兵
  • 小写字母(黑方):k=将,a=士,b=象,n=马,r=车,c=炮,p=卒
  • 数字:表示连续的空位数
  • 附加字段:走子权(w/b)、是否可易位(中国象棋无此概念,通常用"-“)、吃子过路(中国象棋无此概念,通常用”-")、半回合计数、整回合计数

标准初始局面的FEN:

rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1

第四章 棋隐:中国象棋引擎的第一个里程碑(1997–2000)

4.1 棋隐(Chess1)的诞生

棋隐(英文名Chess1)由林顺泽开发。棋隐在1997-2000年期间在中文论坛上被称为"棋隐"或"Chess1"。关于其作者的公开信息较为零散,但可以确定的是棋隐在1990年代末的中国象棋软件市场中占据了主导地位。

棋隐的出现恰逢中国个人电脑开始普及的时期。Windows 95/98操作系统为棋隐提供了比DOS更好的运行环境。棋隐是首批在Windows环境下运行的主流中国象棋软件之一。

棋隐4.35版本界面截图
棋隐(Chess1)4.35版本——1990年代末期最流行的中国象棋软件之一,标准的Windows风格界面,3D立体棋盘

4.2 棋隐的市场地位

棋隐在中国象棋软件市场中的地位类似于WinBoard/ChessBase在国际象棋软件中的地位——它虽然不一定是技术最强悍的,但却是当时市场上最知名、最广泛使用的象棋程序之一。

棋隐的主要特征包括:

  • 提供友好的Windows图形用户界面
  • 棋力在1990年代末期约为业余一级至二级水平
  • 支持棋谱记录、保存和复盘
  • 包含基本开局库

4.3 棋隐的界面特征与用户交互体验

棋隐的用户界面采用了当时标准的Windows软件设计风格:

  • 菜单栏包含"文件"、“编辑”、“棋局”、“设置”、"帮助"等标准菜单项
  • 棋盘采用3D立体的视觉风格(在当时较为新颖)
  • 棋子具有木纹质感
  • 支持悔棋、复盘、棋谱编辑等功能
  • 带有内置的规则引擎,可以判断合法着法和非法着法
  • 支持打印棋谱

这些界面特征虽然在今天看来很普通,但在1990年代末期,棋隐的用户体验已经大大超越当时的同类产品。

4.4 技术架构

棋隐的技术架构反映了1990年代末期中国象棋引擎的典型水平:

  • 搜索算法:Alpha-Beta剪枝,迭代加深搜索,搜索深度约5-8层。
  • 评估函数:以子力价值为基础(车10分、马4分、炮4分、士2分、象2分、兵1分),辅以简单的位置权重和棋子活动性评估。
  • 开局库:内置数百个常见开局变例。
  • 局面表示:使用10×9的二维数组,配合简单的棋子位置哈希。
  • 工程特点:引擎与GUI耦合(但比将族时代更模块化),仍然以单体程序的方式交付。

棋隐的评估函数虽然简单,但在当时已经能够提供足够的棋力来挑战业余水平的人类棋手。棋隐的技术限制在于:

  • 没有使用置换表(Transposition Table)来加速搜索
  • 没有使用空着裁剪(Null Move Pruning)
  • 评价函数的精度有限,对复杂局面的判断不够准确

这些限制使得棋隐的棋力在进入21世纪后很快被新一代引擎超越。

4.5 棋隐的衰落与影响

棋隐的衰落标志着中国象棋软件第一代的告别。随着计算机硬件的快速提升和搜索算法的发展,棋隐在2000年代中期后逐渐被引擎(如象棋奇兵、棋天大圣等)取代。但棋隐的历史地位不容忽视——它是第一个真正进入大众视野的中国象棋程序,极大地推动了中国象棋计算机博弈的普及。

棋隐对中国象棋软件生态的影响体现在以下几个方面:

  1. 用户习惯的培养:棋隐培养了大量中国象棋软件用户,他们从棋隐开始了解"电脑下棋"的可能性和局限性。
  2. 市场教育的完成:棋隐证明了象棋软件具有商业价值,为后来的商业引擎铺平了市场道路。
  3. 社区文化的萌芽:关于棋隐的讨论和使用经验分享,为后来棋中论坛等象棋软件社区的形成奠定了基础。

第五章 棋天大圣:学术与工程的交汇(2004–2006)

5.1 棋天大圣的开发背景

棋天大圣(NEUChess)由东北大学的王骄及其团队开发。棋天大圣是中国象棋计算机博弈历史上最重要的学术成果之一。

棋天大圣——东北大学开发的冠军引擎
棋天大圣(NEUChess)——东北大学王骄团队研发的中国象棋引擎

东北大学对人工智能和计算机博弈有着较长期的研究积累。王骄在2004年前后开始着手开发棋天大圣,作为其在东北大学的研究课题。棋天大圣的开发过程体现了"学术研究"与"工程实现"的结合,是学术界参与中国象棋引擎研发的典范。

5.2 棋天大圣在ICGA和CCMC中的成就

棋天大圣在中国象棋引擎竞赛中取得了突出的成绩:

  1. 2006年ICGA金牌:2006年在意大利都灵举行的第11届计算机奥林匹亚竞赛中,棋天大圣以微弱优势战胜了纵马奔流等强劲对手,获得金牌。这是中国大陆学术界开发的中国象棋引擎首次在ICGA赛事中夺冠,意义重大。

  2. CCMC 2006-2007冠军:中国机器博弈锦标赛(China Computer Game Championship,CCMC)从2006年开始举办,首届冠军即为棋天大圣,2007年棋天大圣继续卫冕。

棋天大圣界面截图
棋天大圣(NEUChess)引擎界面——东北大学研发的首个在ICGA夺冠的大陆中国象棋引擎
棋天大圣比赛界面
棋天大圣在2006年ICGA都灵赛事中的比赛界面——以微弱优势战胜纵马奔流等强劲对手获得金牌
棋天大圣技术分析
棋天大圣的技术分析界面——其评估函数对复杂局面具有出色的判断能力

2006年ICGA比赛的战术分析:

根据棋谱分析,棋天大圣在2006年ICGA比赛中的主要优势在于:

  • 出色的中局判断能力——评估函数对复杂局面的评估较为准确
  • 稳健的搜索策略——不会因为过度剪枝而错过关键战术
  • 较深的中局搜索深度——在对手失误时能把握住机会

5.3 王骄的学术贡献

王骄通过在东北大学的研究工作,不仅开发了棋天大圣,还发表了多篇关于中国象棋计算机博弈的学术论文,包括:

  • 关于中国象棋引擎搜索效率优化的研究
  • 关于中国象棋引擎评估函数设计的研究
  • 关于中国象棋引擎并行搜索的研究

这些学术论文为后续的中国象棋引擎开发提供了重要的理论参考。王骄的研究方向涵盖了中国象棋引擎的多个核心领域,从搜索算法的改进到评估函数的优化,从单机效率的提升到并行搜索的实现。他的工作展示了中国象棋引擎作为一个学术研究课题的可行性。

5.4 棋天大圣的技术细节

根据公开的学术论文和论坛讨论,棋天大圣的技术特点包括:

高级PVS搜索: 棋天大圣使用了PVS(Principal Variation Search),这是Alpha-Beta搜索的一种高效变体。PVS通过假设第一个走法(主变)就是最佳走法,然后使用窄窗口(零窗口)搜索其他分支来验证这一假设。

混合评估函数: 棋天大圣的评估函数结合了手工调优的静态特征和简单的统计分析。评估因子包括:

  • 子力价值(基础分)
  • 位置价值(每个棋子在每个位置上的得分表)
  • 棋子活动性(可走位置的多少)
  • 棋子协调性(棋子之间的配合关系)
  • 将帅安全性(将帅的保护状态)
  • 局面结构(兵种结构、士象完整性等)

置换表优化: 棋天大圣实现了置换表功能,通过哈希表缓存已搜索的局面结果。置换表的引入显著减少了重复搜索,提高了搜索效率。

试验性并行搜索: 棋天大圣尝试了Young Brothers Wait并行搜索策略,在双核机器上展示了一定的扩展性。虽然并行效率不高,但这种尝试在当时具有前沿意义。

5.5 棋天大圣的历史意义

棋天大圣在中国象棋引擎发展史上的特殊意义在于:

  1. 学术领域的认可:棋天大圣证明了中国象棋引擎是值得学术界关注的课题,为后来更多高校参与中国象棋引擎研究奠定了基础。
  2. 中国大陆与ICGA的桥梁:作为中国大陆首个在ICGA夺冠的引擎,棋天大圣让国际计算机博弈界认识了中国象棋引擎研究的实力。
  3. 技术传承的范例:王骄通过发表论文和分享经验,推动了技术知识的传播和传承。
  4. 技术路线的示范:棋天大圣展示了结合学术严谨性和工程实现的质量,是怎样开发出一流中国象棋引擎的。