前置知识:博弈论简介

本文讨论(二人)零和游戏

在零和游戏中,两名玩家的收益之和恒为零,一方的收益必然意味着另一方的损失.零和游戏可以视为常和游戏的特殊情形.不过,任何常和游戏都可以通过对某一方的收益整体加上或减去一个常数,等价地转化为零和游戏,所以仅需要讨论零和游戏.

在算法竞赛中常见的零和游戏大致可分为两类:序贯零和游戏与同时零和游戏.

序贯零和游戏

序贯零和游戏中,两名玩家轮流行动,直到游戏终止.

序贯零和游戏中,玩家的收益函数呈现递归结构.游戏局面 可以分为三类,即终止局面 、玩家 行动的局面 和玩家 行动的局面 .假设终止局面 处,玩家 的收益为 ,相应地,玩家 的收益为 .因此,轮到玩家 行动时,最大化它的收益就相当于最小化玩家 的收益.由此,假设双方都采取最优策略,玩家 在局面 处能够获得的最大收益 满足如下递推关系:

其中, 表示 的后继局面.这就是 [极小化极大思想](https://leetcode.com/problems/Alpha–Beta 剪枝#minimax-算法/).

将这一算法应用于实际问题中,通常有如下具体方法:

  • 如果游戏中涉及的局面数量较少,直接暴力实现这一算法即可.

  • 如果游戏中涉及的局面数量较为庞大且没有特殊结构,可以考虑 [Alpha–Beta 剪枝](https://leetcode.com/problems/Alpha–Beta 剪枝#alphabeta-剪枝/) 并结合其他搜索剪枝算法使用.

  • 如果游戏中单个局面经常是多个局面的后继局面,为避免重复搜索,可以考虑记忆化搜索或其他动态规划算法.

  • 如果游戏中玩家的最终收益是终局前所有行动的收益和,可以适当优化建模方式.具体地,假设到达终局 时,玩家 的行动序列分别为 ,行动 对应的收益为 ,玩家 的收益函数为

    那么,可以设 为当前玩家在局面 之后的游戏中能够取得的最大分数.对于初始状态 ,有 ,因此求出 足以求解原问题.对于 ,有如下递推关系:

    其中, 表示可以使得状态从 转移到 的行动,如果有多个这样的行动,取收益 最高的那个.

  • 公平组合游戏都是序贯零和游戏,只需要设游戏中胜利方和失败方的收益分别为 .此时,收益函数 的递推关系其实就是判定必胜状态和必败状态的 引理

    这类问题还有一种常见的变形,即求胜利方最少需要的回合数和失败方最多可以坚持的回合数.为此,只需要注意到从终止状态开始做 BFS 并按照引理判定必胜状态和必败状态时,记录判定必胜状态和必败状态时 BFS 进行到的轮次数,就是所求的回合数.这是因为判定为必胜状态只需要一个后继状态是必败状态即可,它总是由后继状态中轮次数最小的必败状态转移而来;而判定为必败状态需要所有后继状态都是必胜状态,它总是由后继状态中轮次数最大的必胜状态转移而来.

    这一方法同样可以推广到一般的 有向图游戏

例题

设有一个长度为 的数列 .两名玩家 轮流从数列的两端取走一个数,直到数列中仅剩下最后一个数字为止.玩家 的目标是最大化这个最后剩下的数字,玩家 的目标是最小化它.在游戏正式开始前,玩家 还可以先进行 次行动.假设两名玩家在整个过程中都采取最优策略.对于每一个 ,求出游戏结束时最后剩下的数字.其中,

习题

同时零和游戏

同时零和博弈中,两名玩家同时行动.

同时零和游戏通常采用收益矩阵表示.假设玩家 的行动集合为 ,且当玩家 分别采取行动 时,两人的收益分别是

例子

考虑石头剪刀布游戏.假定胜利得 分,失败得 分,平局得 分.那么,游戏中两人的收益可以表示为

一般的二人同时游戏也可以表示为类似形式,故而也称为 双矩阵游戏(bimatrix game).对于零和博弈,由于玩家 的收益矩阵和玩家 的收益矩阵互为相反数,所以可以只考虑玩家 的收益矩阵:

需要解决的问题是:给定收益矩阵 ,如何求出两名玩家的最优策略和最大收益?

混合策略

相较于序贯零和游戏,同时游戏中两名玩家的角色是对称的.但是,既然已经解决了序贯零和游戏,那么不妨考虑同时游戏的序贯版本.例如,如果假定玩家 首先做出行动,玩家 再做出行动,那么,根据前文讨论,游戏结束时玩家 的收益将由

给出.由于玩家 的行动对于玩家 单向透明,这应该是玩家 所能获得的最差结果.对称地,如果假定玩家 首先行动,那么,玩家 的收益将由

给出.由于玩家 的行动对于玩家 单向透明,这应该是玩家 所能获得的最好结果.玩家 应该期待实际进行游戏时,所能获得的收益 .尽管不等式 总是成立(证明参见 弱对偶定理),但是由于等号未必成立,所以,仅采用序贯游戏的分析手段,一般情况下没有办法唯一确定游戏结果.

例子(续)

石头剪刀布游戏中,如果出手有先后,那么先手必输,后手必赢.转换为数学语言,这就是下列不等式:

此时, 并不成立.

上述分析过程遗漏了同时游戏的一个关键因素,就是玩家无法准确预测对手的行动.形式上,这意味着双方可以采取某种随机策略.这一想法在序贯博弈的语境下并不成立,因为无论先手玩家如何随机选择行动,后手玩家总能准确地观测到这一行动,并有针对性地回应.但是,对于同时游戏,随机策略引入的战略模糊将使得对手无法有效地针对己方的行动.

例子(续)

石头剪刀布游戏中,如果玩家 均匀随机地选择剪刀、石头、布三个行动之一,那么,根据玩家 的行动不同,玩家 可能获得的收益是

此时,无论玩家 如何选择行动,玩家 的期望收益总是 .这显然好于确定性地选择单个行动.

由此,就引入了混合策略的概念.

混合策略

同时游戏中,玩家 混合策略(mixed strategy),简称 策略,是指函数 ,且它满足 .也就是说,策略 就是玩家 的行动集合 上的一个概率分布.玩家 全体混合策略的集合记作 ,其中, 表示 上的全体概率分布的集合.如果 是退化的概率分布,即存在 使得 ,那么,也称策略 纯策略(pure strategy).

混合策略的收益就是单个行动收益的期望:

将单个行动看作对应的纯策略,那么,就可以将行动集合 嵌入(混合)策略集合 中,且上式定义的 就可以看作是将 延拓到 上.

von Neumann 定理

引入混合策略后,极大化极小思想和极小化极大思想得到的结果是一致的,由此,同时零和游戏的结果也是唯一确定的.

定理(von Neumann)

允许混合策略的同时零和游戏中,如果双方都采取最优策略,那么,玩家 的最大收益为

玩家 的最大收益为

这一结果正是这一游戏的 Nash 均衡.也就是说,假定双方都选择均衡中的最优策略,那么,没有任何玩家能够从偏离均衡策略中严格获益.

转化为线性规划问题

von Neumann 定理的证明同时也指出了同时零和游戏的求解方法.设 分别是玩家 可采取的行动数目.给定玩家 的收益矩阵 ,可以求解如下线性规划问题:

这是一个规模为 的线性规划问题,可以用 单纯形法 高效求解.算法得到的最优解 就是玩家 的最优(混合)策略.要求得玩家 的最优策略,只需要从单纯形表中获得该问题最优解的对偶变量(即影子价格)即可.

习题

参考资料与注释