github博客链接
参考CS364A的Lecture Note #19和#20.
纯纳什均衡与 P L S PLS PLS 完全
局部搜索问题 (Local Search Problems)
最大割问题
最大割问题是研究局部搜索问题的经典问题. 给定一个无向图 G = ( V , E ) G=(V,E) G=(V,E), 每条边有非负边权 w e ≥ 0 w_e\ge 0 we≥0. 目标是找到 V V V 的一个分割 ( S , S ‾ ) (S,\overline{S}) (S,S), 其中 S S S 和 S ‾ \overline{S} S 均非空, 使得两个端点分别位于 S S S 和 S ‾ \overline{S} S 中的边的边权和尽量大. 最大割问题是 NP 难问题.
局部搜索算法是一个解决思路, 算法流程如下:
- 从任意割 ( S , S ‾ ) (S,\overline{S}) (S,S) 开始.
- 当存在一个局部移动使得答案变得更优时, 进行该移动.
这里一个局部移动是指把一个点从一侧移到另一侧. 当没有可以使答案变得更优的局部移动时, 局部搜索算法结束, 此时达到一个局部最优解. 显然局部最优解可能不是全局最优解.
P L S PLS PLS: 抽象局部搜索问题
抽象局部搜索问题由三个多项式时间算法组成:
- 给定一组输入后, 输出一个可行解.
- 给定一组输入和一个可行解, 返回目标函数的值.
- 给定一组输入和一个可行解, 要么报告该可行解是"局部最优解", 要么返回一个更优的解.
P L S PLS PLS 中的每个问题都对应一个局部搜索算法: 给定输入后, 用第一个算法得到一个开始状态, 再不停地运行第三个算法直到找到一个局部最优解. 注意到可行解的数量可能是指数级别的, 因此局部搜索算法未必要在多项式时间内结束. P L S PLS PLS 复杂类的定义就是所有这样的抽象局部搜索问题构成的集合.
PLS完全
我们将会证明计算最大割问题的局部最优解至少与其他局部搜索问题一样困难, 即最大割问题是 P L S PLS PLS 完全问题.
定义 L 1 ∈ P L S L_1\in PLS L1∈PLS 到 L 2 ∈ P L S L_2\in PLS L2∈PLS 的规约为两个多项式时间算法:
- 算法 A A A 将任意实例 x ∈ L 1 x\in L_1 x∈L1 映射到实例 A ( x ) ∈ L 2 A(x)\in L_2 A(x)∈L2.
- 算法 B B B 将 A ( x ) A(x) A(x) 的任意局部最优解映射到 x x x 的局部最优解.
显然如果 L 1 L_1 L1 能被归约到 L 2 L_2 L2, 且 L 2 L_2 L2 能在多项式时间内被解决, 那么 L 1 L_1 L1 也能在多项式时间内被解决.
定义2.1
问题 L ∈ P L S L\in PLS L∈PLS 是 P L S PLS PLS 完全问题如果 P L S PLS PLS 中的每个问题都能被归约到 L L L.
事实2.2
计算最大割问题的一个局部最优解是 P L S PLS PLS 完全问题.
拥塞博弈 (Congestion Games)
一个拥塞博弈可以描述为有一个资源集合 E E E, 玩家 i = 1 , 2 , ⋯ , k i=1,2,\cdots,k i=1,2,⋯,k 的策略集合 S i ⊆ 2 E S_i\subseteq 2^E Si⊆2E, 以及每个资源 e ∈ E e\in E e∈E 有一个花费函数 c e ( i ) c_e(i) ce(i), 表示第 i i i 次使用资源 e e e 的花费.
可以说明计算一个拥塞博弈的 PNE (纯纳什均衡) 是一个 P L S PLS PLS 问题. 对应 P L S PLS PLS 问题中的三个算法的前两个都是直观的, 其中第二个算法的目标函数是
Φ ( s ) = ∑ e ∈ E ∑ i = 1 n e ( s ) c e ( i ) \Phi(s)=\sum_{e\in E}\sum_{i=1}^{n_e(s)}c_e(i) Φ(s)=e∈E∑i=1∑ne(s)ce(i)
其中 s s s 表示所有玩家策略构成的集合, n e ( s ) n_e(s) ne(s) 表示 s s s 中有多少个玩家选择了资源 e e e. 第三个算法则首先判断该策略是否是 PNE. 若是, 则返回"局部最优解"; 否则执行一轮最优决策动态 (best-response dynamics), 即让每个玩家重新选择能够最大化自身收益的决策. 这三个算法都可以在多项式时间内结束.
定理3.1
计算一个拥塞博弈的 PNE 是 P L S PLS PLS 完全问题.
证明 考虑将最大割问题规约到拥塞博弈. 给定一个图 G = ( V , E ) G=(V,E)