跳转到内容

极小化极大算法

本页使用了标题或全文手工转换
维基百科,自由的百科全书

这是本页的一个历史版本,由Cewbot留言 | 贡献2020年7月7日 (二) 03:47 機器人作業請求: source 改 syntaxhighlight (Category:使用已弃用source标签的页面) - log编辑。这可能和当前版本存在着巨大的差异。

Minimax算法(亦稱 MinMax or MM[1])又名极小化极大算法,是一种找出失败的最大可能性中的最小值的算法。

概述

Minimax算法常用于棋类等由两方较量的游戏和程序。该算法是一个零总和算法,即一方要在可选的选项中选择将其优势最大化的选择,另一方则选择令对手优势最小化的方法。而开始的时候总和为0。很多棋类游戏可以采取此算法,例如井字棋(tic-tac-toe)。

伪代码

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))
    else {we are to play at node}
        let α := -        foreach child of node
            α := max(α, minimax(child, depth-1))
    return α

参考文献

  1. ^ Provincial Healthcare Index 2013 (Bacchus Barua, Fraser Institute, January 2013 -see page 25-)

外部連結