在本文中,我将以对抗游戏为例,探讨寻找平衡的混合策略的问题。
假设有两个玩家A和B重复玩某个游戏。每次抽奖中的每个玩家都遵循几种策略之一-为简单起见,我们假设两个玩家的策略数量是相同且相等的。选择时策略第一玩家 第二位玩家的策略,第一位玩家将获得胜利 而第二名玩家将获得相同的损失-这就是对抗游戏的安排方式。这些胜利可以写成方阵:
玩家反复玩游戏,可以在不同的抽奖中使用不同的策略。混合策略是与每个玩家的纯策略相关的概率向量。每个玩家根据其混合策略为其定义的概率,在下一个平局中选择一种策略。如果用 和 玩家的混合策略,那么赢得第一个玩家的数学期望将是
如果没有玩家可以通过改变策略来增加赢利,则一对混合策略称为平衡。换句话说,对于其他任何策略, 执行:
在这里,我们现在正在寻找这种平衡。
1.平衡
因此,如果更改第一个玩家的混合策略不能增加他的获胜,而改变第二个玩家的混合策略不能减少他的损失,则一对混合策略形成平衡。
例如,考虑这样的回报矩阵:
. , , . : (2 3). , , : (4 1). , , : (1 4). , . , , .
. , , . 2.5.
, , , . , .
, :
:
, . - : , .
, , :
, ,
- , . - --.
2. --
-, , 1951- , , 1939- .
:
, :
, , , --:
; .
— . :
, , , . , :
- 2 ;
- 2, 1 5 ;
- , 3 4;
- 2 ;
- , .
, . .
3.
. , , « ».
:
:
:
:
--, . :
:
, :
. :
, , , . , . , ( ).
, --:
.
, . :
, ,
, :
, : . , , : , ; . :
:
, . .
5.
: , . . , , , , :
, , . , . , . : — . ,
6.
GitHub: https://github.com/ashagraev/zero_sum_game
matrix.h : , , . . , .
kkt.cpp. . , callback'.
一个游戏中可以有多个平衡;此外,其中可以无限多个。无论如何,您都需要为以下事实做好准备:算法将输出多个解决方案(整个解决方案集将是派生的解决方案上的一些线性壳)。因此,函数的签名假定结果是策略的向量,而不是一个策略。相应地,主要显示所有这些向量。
该程序的输入矩阵示例在input.txt中,而在这些示例上运行该程序的结果在output.txt文件中。