⬜⬜⬜ (*^▽^*)欢迎光临 ⬜⬜⬜
✏️write in front✏️
个人主页:陈丹宇jmu
欢迎各位→点赞 + 收藏⭐️ + 留言
联系作者by QQ:813942269
致亲爱的读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事顺意️
✉️少年不惧岁月长,彼方尚有荣光在
⬜⬜⬜ ---前言---⬜⬜⬜
极小化极大算法是基于决策树和搜索的智能系统中的典型算法,可用于指导井字棋、黑白棋、五子棋等经典完全信息零和博弈。虽在学生时代学习过极小化极大算法,但时过境迁,思量该算法的来龙去脉已然如雾里探花水中望月。近来自学人工智能算法,恰好又一次接触到了该算法,也算与其有缘,理应将其悉数记下。下文将以井字棋为例详细说明该算法原理。
Minimax算法(极大极小算法)
笔记目录
本篇主要内容
一. Minimax搜索算法
⏳1.1. Minimax算法原理
⏳1.2. Minimax算法描述
1.2.1. 构造:
1.2.2. 判定:
⏳1.3. Minimax算法演示
后记
极大极小(Minimax)搜索算法是指在零和博弈中,玩家均会在可选的选项中选择将其N步后优势最大化或者令对手优势最小化的选择。
将双方决策过程视作一颗决策树,若决策树某一层均为己方决策依据状态(即接下来是己方进行动作),则己方必定会选择使得己方收益最大化的路径,将该层称为MAX层。若决策树某一层均为对手决策依据状态(即接下来是对手进行动作),则对手必定会选择使得己方收益最小化的路径,将该层成为MIN层。
由此,一个极小化极大决策树将包含max节点(MAX层中的节点)、min节点(MIN层中的节点)和终止节点(博弈终止状态节点或N步时的状态节点)。每个节点对应的预期收益成为该节点的minimax值。
对于终止结点, minimax值等于直接对局面的估值。对于max结点,由于max节点所选择的动作将会由己方给定,因此选择minimax值最大的子结点的值作为max结点的值。对于min结点,则选择minimax值最小的子结点的值作为min结点的值。
1,构建决策树;
2,将评估函数应用于叶子结点;
3,自底向上计算每个结点的minimax值;
4,从根结点选择minimax值最大的分支,作为行动策略。
1,如果节点是终止节点:应用估值函数求值;
2,如果节点是max节点:找到每个子节点的值,将其中最大的子节点值作为该节点的值;
3,如果节点时min节点:找到每个子节点的值,将其中最小的子节点值作为该节点的值。
以相对容易分析的井字棋游戏的博弈过程分析Minimax算法的搜索过程。
如图所示,假设玩家X可在井字棋游戏中向下思考3步,则其必定会选择3步后优势最大的落子策略。构建3层决策树如下,对于每一个叶结点,可运用上述估值函数得到叶结点对应局面的估值。
由于叶结点所在层的上一层到叶结点层的动作由玩家X作出,因此叶结点层上一层为MAX层。玩家X会选择使得己方局面最佳的落子方法,因此MAX层的节点的minimax值应该为下一层中最大的值。
同时,MIN层到MAX层的动作由玩家X的对手作出,因此MIN层的节点的minimax值应该为下一层中的最小值。
对于每一个叶结点,其minimax值可根据估值函数得出。对应每一个max节点或min节点,其值可根据上述规则得出。由此,可以得到整个决策树。
作出决策的目的是是的己方N步后的局面最佳,因此,从根结点选择minimax值最大的分支,作为行动策略。
最小化最大算法构造决策树,并自底向上计算每个节点的minimax值,最终从根结点选择minimax值最大的分支,作为行动策略。
当一个零和博弈双方每一步可选动作数量较多时,决策树会变得非常庞大,因此构造决策树,并对其进行遍历,求取每个minimax值将会非常耗时。
在决策树的构建与搜索过程中,存在一些不必要搜索的节点。如果不展开不必要搜索的节点,将会极大的节省搜索时间。
下文将讲解极小化极大算法的优化版本——AlphaBeta剪枝算法。