常见棋类AI人工智能算法

来源:互联网 发布:人工智能应用场景 编辑:程序博客网 时间:2024/05/06 19:43

中国象棋明棋的思路

中国象棋明棋的实现思路是这样的,整个博弈树太大,因此采用有限深度搜索,用叶子节点的局面函数值根据极大极小原理(我方选分数极大值的走法,对方选分数极小值的走法)倒推出当前节点的分数,这个分数就是当前局面优劣判断的近似值,只要局面函数选得好、搜索的深度足够,近似值就可以很接近真实值。至于α-β剪枝、迭代加深搜索、历史启发、杀手启发、空步裁剪、循环局面判断……这些只不过为了提高搜索效率而已,而将军延伸、吃子走法……只不过是为了克服水平线效应。其实最基本的思想还是博弈树的极大极小原理。

http://wenku.baidu.com/link?url=R0GhAOILj3CZo7ae0GNy1pJC5Zl1uhhkceP0EtCdSVgaHNKKuV8TWmJog4onIoJ16pbAqn7whrQz3pIr07COogTkE7VJDns1vBZ2AQpqcu_

http://bbs.blueidea.com/thread-3047030-1-1.html

 

搜索算法

α-β剪枝算法

α-β剪枝技术的基本思想或算法是,边生成博弈树边计算评估各节点的倒推值,并且根据评估出的倒推值范围,及时停止扩展那些已无必要再扩展的子节点,即相当于剪去了博弈树上的一些分枝,从而节约了机器开销,提高了搜索效率。具体的剪枝方法如下:

  (1) 对于一个与节点MIN,若能估计出其倒推值的上确界β,并且这个β值不大于 MIN的父节点(一定是或节点)的估计倒推值的下确界α,即α≥β,则就不必再扩展该 MIN节点的其余子节点了(因为这些节点的估值对MIN父节点的倒推值已无任何影响 了)。这一过程称为α剪枝。

  (2) 对于一个或节点MAX,若能估计出其倒推值的下确界α,并且这个α值不小于 MAX的父节点(一定是与节点)的估计倒推值的上确界β,即α≥β,则就不必再扩展该MAX节点的其余子节点了(因为这些节点的估值对MAX父节点的倒推值已无任何影响 了)。这一过程称为β剪枝。

  从算法中看到:

    (1) MAX节点(包括起始节点)的α值永不减少;

    (2) MIN节点(包括起始节点)的β值永不增加。

  在搜索期间,α和β值的计算如下:

    (1) 一个MAX节点的α值等于其后继节点当前最大的最终倒推值。

    (2) 一个MIN节点的β值等于其后继节点当前最小的最终倒推值。

 

估值算法

 

遗传算法 学习能力

开局库

历史启发

 

 

代码

中国象棋 - in html5

 

https://github.com/itlwei/chess

作者:一叶孤舟
联系:itlwei@163.com QQ:28701884
Demo
http://itlwei.github.io/chess/

中国象棋 - in html5是一款使用html5 canvas开发的开源小游戏,不依赖任何类库,不依赖任何后台程序,全部原生Javascript进行AI计算,欢迎广大业内同行多多交流指正,共同完善。

 

 

0 0
原创粉丝点击