博弈论 负极大值算法

下面这篇文章承接上文,人工智能,博弈论

一个局面对红方的优势为X,那么对于黑方的优势就是-X;一个局面对红方的优势为-X,对黑方的优势就是X。在负极大值搜索算法中,没有了极小点,只有极大点。需要注意的是,局面对一方的优势转化为另一方的优势时需要加负号。局面估计区间是一个关于0点对称的区间:

[-MaxValue,MaxValue].需要注意的是,为了能使负极大值搜索算法得到正确的评价,必须修改局面评估函数的返回值,原来在极大极小搜索算法中始终返回的是红方的优势,现在要改为当前走棋方的优势。

负极大值搜索算法: 

输入:搜索深度

输出:节点的最佳走法,及对应的最佳估值

函数形式:int negaMaxSearch(int depth)

 

初始化最优值best=负无穷大                //都是极大点

如果depth小于等于0

       调用评估函数,并将结果赋给value

       返回value值

 

否则

      生成当前所有合法的走法

      对于每一步走法

            执行走法

            value= -negaMaxSearch(depth-1)             //注意函数之前有负号

            撤销走法

            如果 value> best

                    best=value

                    如果  depth == Max_Depth

                            bestMove=mv

返回best                                                                 //返回某个搜索分支的最优评估值

 

 

评估函数的算法:

 

输入:棋局

输出:局面对当前走方的优势

 rValue:红方的优势总和

bValue:黑方的优势总和

分别进行评估,具体问题具体设计,获得rValue和bValue的值

 

如果当前局面是红方走棋

     return rValue-bValue;

否则

     return bValue-rValue;

你可能感兴趣的:(算法总结)