博弈论基础入门教程
纳什均衡:定义、计算与应用
纳什均衡是博弈论中最重要的概念之一,由约翰·纳什在1950年提出,并因此获得1994年诺贝尔经济学奖。
正式定义
在n人博弈中,策略组合 $s^* = (s_1^, s_2^, …, s_n^*)$ 是一个纳什均衡,如果对于每一个参与者 $i$,满足:
$$u_i(s_i^, s_{-i}^) \geq u_i(s_i, s_{-i}^*), \quad \forall s_i \in S_i$$
其中:
- $u_i$ 是参与者 $i$ 的收益函数
- $s_{-i}^*$ 表示其他所有参与者的均衡策略
- $S_i$ 是参与者 $i$ 的策略空间
关键特性
1. 自执行性(Self-Enforcing)
一旦达到纳什均衡,没有参与者有单方面偏离的动机。
2. 存在性定理
纳什定理(1950):任何有限博弈(参与者有限,策略有限)至少存在一个纳什均衡(可能是混合策略均衡)。
3. 可能的多重性
一个博弈可能有:
- 零个纳什均衡(无限博弈可能没有)
- 一个纯策略纳什均衡
- 多个纳什均衡
- 混合策略纳什均衡
计算方法
1. 优势法
通过迭代消除严格劣势策略简化博弈。
2. 最优反应分析
寻找每个参与者对其他参与者策略的最优反应。
3. 代数方法
对于两人有限博弈,可以使用线性规划或代数方法。
4. Python实现示例
import numpy as np
import itertools
def find_pure_nash_equilibria(payoff_matrix_A, payoff_matrix_B):
"""
寻找两人博弈的纯策略纳什均衡
"""
n_strategies_A, n_strategies_B = payoff_matrix_A.shape
equilibria = []
for i in range(n_strategies_A):
for j in range(n_strategies_B):
# 检查是否是纳什均衡
is_equilibrium = True
# 检查参与者A是否有偏离动机
for k in range(n_strategies_A):
if payoff_matrix_A[k, j] > payoff_matrix_A[i, j]:
is_equilibrium = False
break
if not is_equilibrium:
continue
# 检查参与者B是否有偏离动机
for l in range(n_strategies_B):
if payoff_matrix_B[i, l] > payoff_matrix_B[i, j]:
is_equilibrium = False
break
if is_equilibrium:
equilibria.append((i, j))
return equilibria
# 示例:性别之战博弈
A = np.array([[2, 0], [0, 1]]) # 参与者A的收益
B = np.array([[1, 0], [0, 2]]) # 参与者B的收益
equilibria = find_pure_nash_equilibria(A, B)
print("纯策略纳什均衡:", equilibria)