博弈树搜索

BrokenGeeker10 个月前
五子棋ai·博弈树搜索·启发式搜索·历史表·置换表·杀手表
基于博弈树的开源五子棋AI教程[5 启发式搜索]这里就是最简单对于当前节点棋盘分数/分数的增长量进行排序。得分越高,出现越靠前。置换表保存了搜索过程中最优价值的节点信息,如果发现当前搜索状态在置换表,那么这一状态应该率先被搜索。
BrokenGeeker1 年前
qt·五子棋ai·博弈树搜索·评估函数
基于博弈树的开源五子棋AI教程[4 静态棋盘评估]静态棋盘的评估是棋力的一个很重要的体现,一个优秀的基于博弈树搜索的AI往往有上千行工作量,本文没有做深入讨论,仅仅写了个引子用来抛砖引玉。 评估一般从两个角度入手,一个是子力,另一个是局势。
BrokenGeeker1 年前
qt·开源·五子棋ai·博弈树搜索·位棋盘
基于博弈树的开源五子棋AI教程[1 位棋盘]常见的五子棋棋盘大小为15x15,最直观的表示就是一个二维数据。本文为了易于拓展一开始使用的是QVector<QVector>的数据,但是在分支因子为10的情况下只能搜索到4层左右,后面深度加深,搜索时间呈指数倍数增长。这种实现方式下,六层搜索深度下搜索时间大于1min。 接着使用二维数组(int[][])来表示一个搜索状态,搜索速度略有加快,时间大约在2倍左右(记忆模糊了)。 目前实现方式中使用的位棋盘,这样可以有效的减少寻址时间,取出一行或者一列只需要从内存中取出一个int32(考虑到17x17或者1