人工智能算法模型--Minimax(极大极小)搜索算法学习笔记

 ⬜⬜⬜ 🐰🟧🟨🟩🟦🟪 (*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜

✏️write in front✏️
📝个人主页:陈丹宇jmu
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
🙉联系作者🙈by QQ:813942269🐧
🌈致亲爱的读者:很高兴你能看到我的文章,希望我的文章可以帮助到你,祝万事顺意🏳️‍🌈
✉️少年不惧岁月长,彼方尚有荣光在 🏆

[专栏链接] 人工智能项目实战-【AI智能五子棋项目的开发】https://blog.csdn.net/weixin_51989356/category_12160426.html?spm=1001.2014.3001.5482


⬜⬜⬜ ---🟧🟨🟩🟦🟪前言🟧🟨🟩🟦🟪---⬜⬜⬜


极小化极大算法是基于决策树和搜索的智能系统中的典型算法,可用于指导井字棋、黑白棋、五子棋等经典完全信息零和博弈。虽在学生时代学习过极小化极大算法,但时过境迁,思量该算法的来龙去脉已然如雾里探花水中望月。近来自学人工智能算法,恰好又一次接触到了该算法,也算与其有缘,理应将其悉数记下。下文将以井字棋为例详细说明该算法原理。
 

🚩本篇主要内容


Minimax算法(极大极小算法)

  1. 学习和掌握Minimax算法的实现原理
  2. Minimax算法的描述
  3. Minimax算法的实例演示过程

📋笔记目录

🚩本篇主要内容

📒一. Minimax搜索算法

⏳1.1. Minimax算法原理

⏳1.2. Minimax算法描述

📍1.2.1. 构造:

📍1.2.2. 判定:

⏳1.3. Minimax算法演示

🚩后记


📒一. Minimax搜索算法


⏳1.1. Minimax算法原理

极大极小(Minimax)搜索算法是指在零和博弈中,玩家均会在可选的选项中选择将其N步后优势最大化或者令对手优势最小化的选择。

将双方决策过程视作一颗决策树,若决策树某一层均为己方决策依据状态(即接下来是己方进行动作),则己方必定会选择使得己方收益最大化的路径,将该层称为MAX层。若决策树某一层均为对手决策依据状态(即接下来是对手进行动作),则对手必定会选择使得己方收益最小化的路径,将该层成为MIN层。

由此,一个极小化极大决策树将包含max节点(MAX层中的节点)、min节点(MIN层中的节点)和终止节点(博弈终止状态节点或N步时的状态节点)。每个节点对应的预期收益成为该节点的minimax值。

对于终止结点, minimax值等于直接对局面的估值。对于max结点,由于max节点所选择的动作将会由己方给定,因此选择minimax值最大的子结点的值作为max结点的值。对于min结点,则选择minimax值最小的子结点的值作为min结点的值。

⏳1.2. Minimax算法描述

📍1.2.1. 构造:

1,构建决策树;

2,将评估函数应用于叶子结点;

3,自底向上计算每个结点的minimax值;

4,从根结点选择minimax值最大的分支,作为行动策略。

📍1.2.2. 判定:

1,如果节点是终止节点:应用估值函数求值;

2,如果节点是max节点:找到每个子节点的值,将其中最大的子节点值作为该节点的值;

3,如果节点时min节点:找到每个子节点的值,将其中最小的子节点值作为该节点的值。

⏳1.3. Minimax算法演示

以相对容易分析的井字棋游戏的博弈过程分析Minimax算法的搜索过程。

如图所示,假设玩家X可在井字棋游戏中向下思考3步,则其必定会选择3步后优势最大的落子策略。构建3层决策树如下,对于每一个叶结点,可运用上述估值函数得到叶结点对应局面的估值。

由于叶结点所在层的上一层到叶结点层的动作由玩家X作出,因此叶结点层上一层为MAX层。玩家X会选择使得己方局面最佳的落子方法,因此MAX层的节点的minimax值应该为下一层中最大的值。

同时,MIN层到MAX层的动作由玩家X的对手作出,因此MIN层的节点的minimax值应该为下一层中的最小值。

Minimax算法搜索过程

对于每一个叶结点,其minimax值可根据估值函数得出。对应每一个max节点或min节点,其值可根据上述规则得出。由此,可以得到整个决策树。

作出决策的目的是是的己方N步后的局面最佳,因此,从根结点选择minimax值最大的分支,作为行动策略。

🚩后记


最小化最大算法构造决策树,并自底向上计算每个节点的minimax值,最终从根结点选择minimax值最大的分支,作为行动策略。
当一个零和博弈双方每一步可选动作数量较多时,决策树会变得非常庞大,因此构造决策树,并对其进行遍历,求取每个minimax值将会非常耗时。
在决策树的构建与搜索过程中,存在一些不必要搜索的节点。如果不展开不必要搜索的节点,将会极大的节省搜索时间。
下文将讲解极小化极大算法的优化版本——AlphaBeta剪枝算法。

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Unity五子棋的极大极小算法是一种搜索算法,用于在给定的游戏状态下找到最佳的下一步棋。它通过考虑当前玩家和对手的最佳决策,以获取最大化利益或最小化损失的结果。 在极大极小算法中,我们通过递归搜索游戏的各种可能状态来评估当前局面。首先,我们检查游戏是否达到了终止状态,比如有玩家赢得了比赛或者出现了平局。如果是这样,我们返回相应的分数作为评估值。 如果游戏没有结束,我们生成当前玩家的所有合法移动,然后逐个尝试这些移动,并递归调用极大极小算法来评估对手的最佳决策。在对手的回合中,我们选择能够最小化我们自己得分的决策。这个过程会一直进行下去,直到达到终止状态。 在递归回溯的时候,我们会根据当前玩家是极大还是极小来选择最优的决策。对于极大玩家,我们选择能够最大化得分的决策;对于极小玩家,我们选择能够最小化得分的决策。最后,我们将评估值返回给上一层,并根据返回值选择最佳决策。 通过使用极大极小算法,我们可以在Unity五子棋中找到最优的下一步棋。然而,由于搜索空间的大小,这种算法可能会导致较长的计算时间。因此,可以通过优化搜索策略、剪枝等技术来提高算法的效率。 ### 回答2: unity五子棋的极大极小算法是一种用于计算机下棋时选取最佳落子位置的算法。该算法通过枚举所有可能的下棋步骤,然后计算每个步骤的分数,最后选择分数最高(或最低)的步骤作为落子位置。 在五子棋游戏中,每个棋子的落子位置都会对游戏局势产生影响。极大极小算法通过递归地计算所有可能的下一步棋的情况,来判断当前局势对于两位玩家的优势情况。 算法的实现过程可以大致分为以下几个步骤: 1. 构建游戏树:从当前局面开始,递归地生成所有可能的下一步棋的情况,形成一棵游戏树。 2. 评估函数:为了计算每个节点的得分,需要设定一个评估函数。评估函数可以根据当前局势的优势程度来给节点打分,其中正数表示对Max玩家有利,负数表示对Min玩家有利。 3. 极大极小搜索:从根节点开始,以Max玩家和Min玩家的角色交替选择步骤,通过比较子节点的分数来选择最优的下一步棋。 4. Alpha-Beta剪枝:在搜索过程中,可以通过Alpha-Beta剪枝来优化算法,减少不必要的搜索。 通过以上步骤,可以在有限的时间内找到一个最佳的落子位置,并使计算机在五子棋游戏中具备一定的智能和策略。 ### 回答3: Unity 五子棋中的极大极小算法是一种用于确定最优棋局的算法。它通过遍历所有可能的下棋动作并评估每个动作的结果来找到最佳的下一步棋。 极大极小算法在下棋时考虑两个角色:极大方和极小方。极大方是当前的下棋方,而极小方是对手方。算法通过递归地模拟所有可能的下一步棋来获得最佳的下棋策略。 算法的核心思想是在每个决策节点上交替考虑最大化和最小化的结果。极大方追求最大利益,而极小方则追求最小损失。 算法的步骤如下: 1. 遍历棋盘上的每个空位置。 2. 对于每个空位置,极大方尝试在此处下一步棋。 3. 如果此步棋导致五子连珠,返回评估值(例如100),表示极大方的胜利。 4. 否则,轮到极小方考虑下一步棋。 5. 对于极小方,尝试在每个空位置下一步棋。 6. 如果此步棋导致五子连珠,返回评估值(例如-100),表示极小方的胜利。 7. 否则,轮到下一层的极大方继续考虑下一步棋。 8. 递归重复步骤2到7,直到达到指定的搜索深度或全局最优解。 9. 在达到搜索深度或全局最优解后,评估每个可能的下一步棋的得分。 10. 选择得分最高的那一步作为最佳下棋策略。 通过极大极小算法,Unity 五子棋能够在有限的搜索深度内找到最佳的下棋策略。但是,由于五子棋的状态空间非常庞大,完全搜索所有可能的下棋序列是不可行的。因此,通常需要通过剪枝等优化方法来加速搜索过程,并提高算法的性能和效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈丹宇jmu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值