极小极大搜索方法、负值最大算法和Alpha-Beta搜索方法

本文介绍了极小极大搜索方法在博弈中的应用,特别是在围棋、五子棋等游戏中的深度优先搜索策略。接着,讨论了负值最大算法,它将极大节点和极小节点的处理合并。最后,详细阐述了Alpha-Beta搜索方法,通过Alpha和Beta剪枝优化搜索效率,避免无效节点的探索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 极小极大搜索方法
    一般应用在博弈搜索中,比如:围棋,五子棋,象棋等。结果有三种可能:胜利、失败和平局。暴力搜索,如果想通过暴力搜索,把最终的结果得到的话,搜索树的深度太大了,机器不能满足,一般都是规定一个搜索的深度,在这个深度范围内进行深度优先搜索。
    假设:A和B对弈,轮到A走棋了,那么我们会遍历A的每一个可能走棋方法,然后对于前面A的每一个走棋方法,遍历B的每一个走棋方法,然后接着遍历A的每一个走棋方法,如此下去,直到得到确定的结果或者达到了搜索深度的限制。当达到了搜索深度限制,此时无法判断结局如何,一般都是根据当前局面的形式,给出一个得分,计算得分的方法被称为评价函数,不同游戏的评价函数差别很大,需要很好的设计。
    在搜索树中,表示A走棋的节点即为极大节点,表示B走棋的节点为极小节点。
    如下图:A为极大节点,B为极小节点。称A为极大节点,是因为A会选择局面评分最大的一个走棋方法,称B为极小节点,是因为B会选择局面评分最小的一个走棋方法,这里的局面评分都是相对于A来说的。这样做就是假设A和B都会选择在有限的搜索深度内,得到的最好的走棋方法。
   
                          图-极大节点(A)与极小节点(B)                                                         图-极大极小搜索
    伪代码如下(来自维基百科):  

function minimax(node, depth)  //  指定当前节点和搜索深度
   
//  如果能得到确定的结果或者深度为零,使用评估函数返回局面得分
    if  node  is  a terminal node or depth  =   0
       
return  the heuristic value of node
   
//  如果轮到对手走棋,是极小节点,选择一个得分最小的走法
    if  the adversary  is  to play at node
       let α :
=   +
       
foreach  child of node
           α :
=  min(α, minimax(child, depth - 1 ))
   
//  如果轮到我们走棋,是极大节点,选择一个得分最大的走法
    el
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值