纳什均衡与极大极小值算法

这篇主要是接上一篇:博弈论初步

支付矩阵

简单的来说,也可以叫收益矩阵,比如硬币案例中的支付矩阵为:
在这里插入图片描述
在上一篇中,我们通过分析知道,如果作为纯策略问题,它的纳什均衡点是A正面,B反面:

在这里插入图片描述
对于A,反面收益将大于正面收益:max正 = max反 ; min正 < min反
但对于B而言,正面收益将比反面大:max正 > max反 ; min正 = min反
在这里插入图片描述

如果两个参与者,策略有限个,我们或许还能画出这支付矩阵,但如果参与者很多?这时候就不能简单画支付矩阵,然后一个个分析了,必要的引入符号表示。

完全信息博弈三要素

参与者集合N ,策略集合 S,支付函数P,简记:[N , {S} , {P}]

极大极小值搜索

以硬币游戏为例,我们采取策略的过程中,每个参与者分别比较了在每种策略下的最大收益和最小损失,才做出了选择。

在我们之前的分析中,采用横向比较:max正 = max反 ; min正 < min反;所以应该选反。
如果我们采用纵向分析,便可以演变出极大极小值搜索了。
在这里插入图片描述
和之前的比较不同,极大极小值算法是一个比较保险的算法,可以说是只考虑损失,也可以理解为止损算法,它考虑的更多是将损失降到最低。为什么呢?
\qquad
在我们之前的案例中,双方是同时采取策略的,并没有先后顺序。如果双方有顺序的话,比如A优先考虑到当前的最大收益,肯定采取拥有最大收益的策略,而轮到B时,B也会时自己收益最大,由于是零和博弈,所以B的收益越大,A的损失就越大,结果就如下:
在这里插入图片描述
所以maxmin算法呢,min是指旗下所有可能选择中产生的最小收益(损失最大),max指的是旗下所有选择中最大的收益(损失最小);所以最后的结果是A反面,B出正面

剪枝算法

α-β剪枝算法引用了两个参数(α,β)来代表(max,min),并且初始的时候max=-∞,min=+∞。

因为需要对max更新,一个数和max比较,比max大就更新max,如果你max初值不为-∞,如果出现比你初值还小的max,你就没法更新。min也同理。

现在我们采用深度优先搜索的顺序对博弈树展开搜索
在这里插入图片描述
这样搜索在深度不深的时候也是可行的,但是深度一深,就会有爆炸的搜索量。α-β剪枝算法主要就是减去一些没有必要搜索的旁枝,那么什么样的旁枝是没必要搜索的呢?

比如有如下的博弈树,第一次更新了一个节点:
在这里插入图片描述
由于这一级选min,再往上一级就得选max了,所以这个max值必然是>=14的,如果右枝的值比14小,就没必要搜索了。
在这里插入图片描述
但是我们现在还不知道右枝的值是多少,所以得继续搜索更新:
在这里插入图片描述
我们搜索完13后,由于这一级是取最小值,就能得出右枝的值必然<=13。而要对上一级max>=14产生影响,这一级值必须得min>=14,所以这一级其实就没必要搜索,17那枝直接放弃,返回上一级,然后继续搜索:
在这里插入图片描述
同理,再继续搜索右枝下一级的值,如果大于14,就没必要继续了。但右枝空白状态,我们还得继续,直到知道他的值:
在这里插入图片描述
由于该级是取极大值,所以最后结果必然是max>=15,不可能影响最顶上的min<=14,所以整个右枝被抛弃,直接回顶部:
在这里插入图片描述
直接完成了博弈树的搜索。

在α-β剪枝算法中,并不是这样直接传递参数的,它用了两个参数(α,β)来传递(max,min)参数,我们可以思考之前的过程:

开始时,所有(α,β)都为(-∞,+∞)
在这里插入图片描述
第一次开始搜索并更新min:
在这里插入图片描述
然后继续向上更新max:
在这里插入图片描述
然后开始对右枝传递上层参数:
在这里插入图片描述
如果继续往下搜索时,遇到任意值x<14时,说明右枝不对(14,+∞)节点产生影响,因为它取的是max,所以就可以直接返回(14,+∞)节点了,从而产生剪枝效果:
在这里插入图片描述
继续向上传递参数,然后向右传递参数:
在这里插入图片描述
然后继续往下搜索:
在这里插入图片描述
此时,再返回上一级,由于15已经大于上级的14,所以上级的极大值被更新后就直接结束了,因为15根本不对再上一级的min产生影响:
在这里插入图片描述

α-β剪枝算法

虽然上面那样也是可以剪枝的,我们采用的参数传递是α传到β,β传到α,但是这实际上并没有同时使用两个参数。真正的α-β剪枝算法采用的是α传到α,β传到β,剪枝比较的时候,就用α和β进行比较。我们之前是α传到β,然后β和待更新值比较,真正的α-β剪枝算法相当于把传递的比较值存储在了不更新的那个参数上:

α-β剪枝算法规则:
max层 调整α值,比较自己原先的α,下一层的α和β,取三者最大值
min层 调整β值,比较自己原先的β,下一层的α和β,取三者最小值
当α>=β时进行剪枝。
初值为(α,β)=(-∞,+∞)
在这里插入图片描述
然后更新父节点的β值,β=min{ β ,15}=min{ +∞ ,15}=15:
在这里插入图片描述
然后继续搜索,更新父节点的β值,β=min{ β ,14}=min{ 15 ,14}=14:
在这里插入图片描述
然后继续搜索,更新父节点max层的α值,α=max{ α ,子节点α、β }
α=min{ -∞,-∞,14}=14:
在这里插入图片描述
继续往下搜索和传递(α,β):
在这里插入图片描述
继续往下搜索,由于是min层,所以更新β参数,β=min{ β ,13}=min{ +∞,13}=13:
在这里插入图片描述
此时(α,β)=(14,13),有α>=β,发生了剪枝,返回父节点,并更新其α值,α=max{ α ,子节点α、β }=14:
在这里插入图片描述
继续搜索,并更新父节点β值,β=min{ β ,子节点α、β}=min{ +∞,14、+∞}=14:
在这里插入图片描述
继续搜索,并传递参数:
在这里插入图片描述
和之前一样更新β值,更新后我们会发现β值并没有变化:
在这里插入图片描述
然后我们继续搜索,更新父节点α值,α=max{ α ,子节点α、β }
α=min{ 14,-∞、14}=14:
在这里插入图片描述
此时(α,β)=(14,14),由于α>=β,发生了剪枝,返回父节点,并更新其β值,β=max{ β ,子节点α、β }=14:
在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值