极小极大算法实现象棋AI

极小极大算法分析.jpeg

git 仓库地址 https://github.com/GuoliangWang/algorithm
在线预览地址:
https://guoliangwang.github.io/algorithm/%E4%B8%AD%E5%9B%BD%E8%B1%A1%E6%A3%8B%E6%9C%80%E5%B0%8F%E5%8C%96%E6%9E%81%E5%A4%A7%E7%AE%97%E6%B3%95%E6%9C%BA%E5%99%A8%E4%BA%BA.html?nsukey=6uS4h3dHsHzChqT%2Fw8iT%2By4Slha%2F7J4WkOlWhoxbKeWYOmFR1b9sb4NwFg%2Fx%2FNG%2BYvtPZ0%2FBvrraNWTHZsI8%2BQNWGDfcNf1%2BrZXIxm%2FGbqXvbOKy6Jvn%2BcXvPN%2B%2FQt3xF8lS2%2BxqTV3PGR%2BoDu9LLsd2AL6TPlM9zzfZv7D73Hz%2B7Zrgvc%2FpMXfOKGfBWbZhysqRMdguqKMI6wQJpYpe3g%3D%3D

可以切换模式到:人对AI,体验游戏。可以切换到棋局树查看算法实现原理。

初始实现。人类走一步当头炮,AI执行数据记录:
before createBoardTree 1585193160260
end createBoardTree 1585193162133 1873 // 创建棋局树方法递归执行时间1873毫秒
createBoardTreeCount 66660 创建棋局树方法递归执行次数

采用存储之前推演的棋局树数据,优化算法。人类走一步当头炮,AI执行数据记录:
before createBoardTree 1585193927302
end createBoardTree 1585193929283 1981
createBoardTreeCount 66660
后面有一步的数据
before createBoardTree 1585202027648
end createBoardTree 1585202028884 1236
createBoardTreeCount 74551
执行了7万多次只用了1秒多,说明执行速度有提升

缺点

当把最大预测步数调到4步时,走一步就卡死了。所以现在设置的3步。应该是因为createBoardTree递归调用次数太多导致的。后面再用Alpha-beta剪枝算法实现下。看性能能带来多少提升。

你可能感兴趣的:(极小极大算法实现象棋AI)