
基于博弈树的开源五子棋AI教程及源码分享
文章平均质量分 76
教你从零开始写一个棋力相当,吊打业余选手的五子棋AI
BrokenGeeker
无论怎么走,走不出数字世界;无论怎么逃,逃不出一零乾坤。
展开
-
基于博弈树的开源五子棋AI教程及源码分享[开篇]
五子棋是一个老少咸宜,复杂度相对较低游戏,本篇教程便是使用传统的博弈树的知识和一些棋类AI的经典算法来实现一个有一定算力AI。AI可以使用QT编写,在6核的家用笔记本在分支因子(搜索窗口的宽度)为10的情况下,6层深度可以在1s内搜索完成,8层深度可以在4s内完成。这里优先给出一个其中使用到的关键技术,原创 2023-12-20 22:10:15 · 2021 阅读 · 2 评论 -
基于博弈树的开源五子棋AI教程[1 位棋盘]
一般而言一组二维数组就可以充分的表示棋盘信息,但是在后续棋盘静态评估的需求中发现,本文需要对棋盘的四个方向上评估出基础棋型。因而从不同角度冗余的描述棋盘信息就是必要的。原创 2023-12-20 22:51:51 · 1804 阅读 · 0 评论 -
基于博弈树的开源五子棋AI教程及源码分享[2 Zobrist散列]
Zobrist Hashing由阿尔伯特·Zobrist于1970年提出,是一种用于棋类游戏的哈希技术。它通过为棋盘上的每一个可能状态分配一个唯一的哈希值,来有效地识别和储存不同的游戏状态。原创 2023-12-20 23:23:30 · 1003 阅读 · 0 评论 -
基于博弈树的开源五子棋AI教程[3 极大极小搜索]
极大极小搜索是博弈树搜索中最常用的算法,广泛应用于各类零和游戏中,例如象棋,围棋等棋类游戏。算法思想也是合乎人类的思考逻辑的:博弈双方轮流决策,并且认为双方都是理性的,都希望自己的利益最大化或者对手利益最小化。原创 2024-01-12 23:13:48 · 2315 阅读 · 0 评论 -
基于博弈树的开源五子棋AI教程[4 静态棋盘评估]
静态棋盘的评估是棋力的一个很重要的体现,一个优秀的基于博弈树搜索的AI往往有上千行工作量,本文没有做深入讨论,仅仅写了个引子用来抛砖引玉。评估一般从两个角度入手,一个是子力,另一个是局势。原创 2023-12-22 11:51:06 · 1697 阅读 · 0 评论 -
基于博弈树的开源五子棋AI教程[5 启发式搜索]
启发式搜索的姿势千奇百怪,本文只讨论一下几种置换表启发,历史表启发,杀手表启发。原创 2023-12-22 12:36:04 · 1485 阅读 · 0 评论 -
基于博弈树的开源五子棋AI教程[6 置换表]
置换表是记忆化搜索技术的应用,置换表保存了某一盘面的搜索结果。当博弈树搜索遇到相同的局面时可以调用这些信息来减少重复搜索。那么如何设计一个置换表的节点就显得比较重要,本文在经典的置换表节点增加一个显示当前玩家的字段,这一字段补足了zobrist hash单向函数的缺点,如果节点需要使用更浅深度的信息,可以通过迭代的方式来求解,丰富了置换表的信息。原创 2024-01-14 08:30:13 · 951 阅读 · 0 评论 -
基于博弈树的开源五子棋AI教程[7 多线程搜索]
多线程加快搜索速度这一认知是经受住实践考验的。博弈树搜索的并行搜索方式有很多种,例如叶子并行,根并行,树分裂等算法。笔者给出一种实现起来比较简单的根并行算法。在是实现时需要注意两点,第一,怎么安全的剪枝;第二,如何进行线程间的通信。对于AB剪枝有三点发现可以指导我们设计多线程的并行算法:原创 2024-01-14 08:31:20 · 842 阅读 · 0 评论