子集和问题 算法_求解Nash均衡的子集枚举算法

求解Nash均衡的子集枚举算法

感觉查nash均衡只能查到经济学的东西,都是说2*2或者3*3的作业题怎么做的,很难找到一个解释通用算法的(给计算机专业的人看的)文章,所以专门记一下。

双矩阵博弈(bimatrix game)

双矩阵博弈由两个矩阵

定义,它们分别是玩家1和玩家2的收益矩阵,行号i表示玩家1的行动,列号j代表玩家2的行动,则R矩阵的(i, j)位置的值表示玩家1的收益,C矩阵(i, j)的值表示玩家2的收益。

nash均衡

玩家1的策略可以表示为一个向量x,x的长度和收益矩阵的行数相同,代表采取相应行动的概率。如果x中只有一个值为1其他都是0,那么称x为纯策略,否则为混合策略。玩家2的策略y定义类似。

给定收益矩阵

和策略的情况下,期望的收益可以表示为
,这里M可以是R或者C,分别表示玩家1和玩家2的收益。

nash均衡的基本思想是,在其他玩家不改变策略的前提下,玩家改变自身策略不能增加自己的收益。

即若

是一个nash均衡,那么对于任意
,必须满足

囚徒困境就是一个典型的有纯策略nash均衡的双矩阵博弈。

可以证明

  1. 双矩阵博弈中纯策略nash均衡不一定存在
  2. 混合策略nash均衡一定存在
  3. nash均衡可能有一个,也可能有多个

Nash均衡的求解是一个困难的问题,这是现在查不到关于一般的nash均衡求解(而不是仅限于双矩阵博弈)方法的根本原因。目前还没有求解nash均衡的多项式时间算法,并且与nash均衡有关的几个问题已经被证明是np-hard的(比如判断当前问题是否有多于一个nash均衡)。

子集枚举算法(Support Enumeration)

基于nash均衡的定义可以导出一个使用子集枚举+线性规划的方法,就是Support Enumeration。

首先有以下结论:如果一个动作出现在混合策略nash均衡中,也就是采取这个动作的概率大于0,那么它应该与其他有用的动作无差别。所谓无差别是指,不能通过改变这个动作的概率影响收益。

假设已经知道存在nash均衡由S1和S2两个子集中的动作组成。

有以下约束

其中1约束了不在集合中的动作不能被选,2约束了概率的和必须为1,3约束了集合中的动作必须被选择(概率大于0)。

nash均衡中动作的无差别性决定了采取在集合中的动作应该有相同的期望收益(以下的U和V)(否则就有方法提高期望收益),同时不在集合中的动作不应该优于任何集合中的动作,这对应了以下约束。

最后需要优化的目标是最大化

,如果得到的
或者无法求解,则说明这个子集中的动作不能组成nash均衡。以上定义了一个线性规划问题,可以直接使用通用求解器解决。

而子集枚举算法就是首先枚举均衡策略的动作集合,然后采用以上方法检测是否可行,最终一定一个得到一个可行的结果。其复杂度为O(子集数量×线性规划复杂度)。参考文献中有一个该算法的实现。

参考

  1. nashpy包含了包括子集枚举法的几种算法实现。
  2. On Algorithms for Nash Equilibria包含几种算法的详细介绍和复杂度分析。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值