我正在开发一个 connect 4 AI,并且看到很多人都在使用这个数据集,其中包含 8 层的所有法律职位及其最终结果。
我使用带有 alpha/beta 修剪的标准 minimax 作为我的搜索算法。看起来这个数据集可能对我的 AI 非常有用。但是,我正在尝试找到实现它的最佳方法。我认为最好的方法可能是处理列表,并使用棋盘状态作为最终结果(赢、输、平)的哈希值。
设计 AI 以使用这样的数据集的最佳方法是什么?我的想法是散列棋盘状态,并在正确的轨道上在传统的搜索算法(例如极小极大)中使用它吗?还是有更好的方法?
更新:我最终将大型移动数据库转换为简单的测试格式,其中 1 代表 X 和 -1 O。然后我使用了一个棋盘状态字符串,一个代表最终结果的整数,并将其放入std::unsorted_map
(见Stack Overflow With Unordered Map来解决我遇到的问题)。地图的表现非常出色。它构建得很快,而且查找速度很快。但是,我从来没有完全正确地进行搜索。当游戏中的回合数少于 8 时,仅搜索数据库,然后切换到常规的 alpha-beta 是解决问题的正确方法吗?