QT五子棋项目详解之六:AI启发式搜索:剪枝算法的更一步优化



前面讲到了剪枝算法作为一种对于极大极小博弈算法的优化,是提高效率的一种好办法。但是我们不满足于此。因为一般的普通人是可以思考到6层以上。为了对效率进行提高,我们还有两种办法。想象一下如下图,电脑可能走棋如果从4个变为2个,那么效率的提升就会提高一倍。



其实深入下去就会发现,这些优化都是理所当然。因为有一些明显的不好的点直接就可以排除掉。就比如在最开始的时候,没有人会在最左上的0,0下子一样。在实际中,我进行的优化包括:


1、我只会在已有点不超过距离2的区域内下子。如下图可能的下子范围,直接缩小区域



bool Game::hasNeighbor(int x,int y)  //距离为2之类返回true
{
 
    bool flag =false;
    int redirect[8][2] = {
 {
 1,0},{
 1,1},{
 1,-1},{
 0,1},{
 0,-1},{-1,0},{-1,1},{-1,-1}};
    for(int j = 1;j<=2;j++)
    {
 
        for(int i = 0;i<8;i++)
        {
 
               int m  = j*redirect[i][0]+x;
               int
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值