当前位置: 首页 > news >正文

博弈论06——PPAD复杂度问题

这篇幅太难,不是为了考试和搞学术就别看了
这篇我理解了2-3天,看了youtube+B战上6个不同国外老师视频。简单阅览是基本看不懂的(巨佬当我没说)
别自我折磨
需要可帮助理解
自己写完都不想看

PPAD复杂度问题

  • 1 Games and Equilibrium 博弈和均衡
    • 1.1 历史背景
    • 1.2 考虑的问题
  • 2 Brouwer's Theorem 布劳威尔定理
  • 3 ε-Nash equilibrium
    • 3.1 ε-Nash equilibrium 的定义
    • 3.2 ε-Nash equilibrium和Nash equilibrium的区别
  • 4 α-approximate fixed point(α-近似不动点)
  • 5 近似不动点 = ε-Nash
    • 5.1 理论理解
    • 5.2 公式理解
  • 6 PPAD
    • 6.1 PPAD 是啥?
    • 6.2 PPAD 问题的特点
    • 6.3 代表问题:End Of The Line
    • 6.4 PPAD图End Of The Line的编码过程(考过)
  • 7 搜索问题
    • English
    • 中文
    • 说人话
  • 8 Sperner 引理 离散化

1 Games and Equilibrium 博弈和均衡

1.1 历史背景

冯.诺依曼(von Neumann)证明了,任何两个参与者的零和博弈都存在这样的均衡。
均衡(Equilibrium): A pair of randomized strategies so that no player has incentive to deviate if the other stays put. 一对随机化策略,使得在对方保持不变的情况下,没有任何一方有动机偏离当前策略。
即使一开始,我们不清楚博弈中是否存在满足纳什均衡的策略,但一定有。
第一个得出这个结论的是20世纪20年代的冯诺依曼,他证明了,如果一个博弈是双人零和博弈,那这个博弈总会存在一个均衡。
不过,当时这个均衡不叫纳什均衡,因为当时纳什还没出生,这个定理被称为最小最大均衡(minmax equilibrium)。后来,当丹齐格(Dantzig)和冯诺依曼一起研究线性规划对偶性时,他们意识到这个定理实际上是强LP对偶性所蕴含的。他们还花了很多年,发现使用线性规划可以计算这些类型的博弈中的均衡。我们知道,这个命题和强LP对偶性是等价的数学命题。因此双人零和博弈中均衡的存在等价于线性规划+对偶

[von Neumann 1928]:在双人零和博弈中,总是存在均衡。 ⇐ 线性规划强对偶性 + 均衡可以通过线性规划在多项式时间内计算出来

纳什证明,任何有限博弈,必然存在纳什均衡。

1.2 考虑的问题

第一个问题
了解问题的复杂性(understand the computational complexity of this problem)。给定一场比赛,找到纳什均衡有多难?

2 Brouwer’s Theorem 布劳威尔定理

给定一个函数,将欧几里得空间的凸、封闭且有界的子集映射到其自身,那它一定有一个在函数下不会移动的点。

Brouwer 不动点定理(Brouwer 1910)


f:D→Df: D \to Df:DD
是从欧几里得空间中凸且紧(即闭且有界)的子集 DDD 映射到自身的一个连续函数
那么存在一个 x∈Dx \in DxD,使得
x=f(x)x = f(x)x=f(x)

其中 凸且紧:convex and compact = closed and bounded

3 ε-Nash equilibrium

3.1 ε-Nash equilibrium 的定义

纳什均衡近似解,上下&

定义: 如果对任意玩家 iii,换成其他策略后,收益最多只提高 ε\varepsilonε,那么这个策略组合就是一个 ε-Nash equilibrium

公式表示:
∀i,πi(σ)≥πi(σi′,σ−i)−ε\forall i,\ \pi_i(\sigma) \ge \pi_i(\sigma_i', \sigma_{-i}) - \varepsilon i, πi(σ)πi(σi,σi)ε
其中:
πi\pi_iπi 表示玩家 iii 的收益
σi′\sigma_i'σi 表示玩家 iii 改变后的策略
σ−i\sigma_{-i}σi 表示其他玩家的策略

核心思想:不要求完全最优,只要“差不多”就行。

3.2 ε-Nash equilibrium和Nash equilibrium的区别

为了解决多人(>2)博弈

精确 Nash equilibrium 的困难
两人零和博弈:用线性规划在多项式时间内精确求出 Nash。
三人及以上的博弈:巨难
——Nash 均衡可能涉及 无理数(比如 2\sqrt{2}2这种),无法精确用有限位二进制存储;
——计算问题属于 PPAD-complete,目前没有已知的多项式时间算法;
——精确搜索需要遍历或计算超多组合,复杂度爆炸。

退而求其次:ε-Nash equilibrium
ε-Nash equilibrium 定义:允许玩家即使改变策略,收益最多只增加 ε。
ε 越小,解越接近真正的 Nash equilibrium。当 ε=0 时,就是真正的 Nash equilibrium。
好处:
计算上更容易:不追求完全精确,而是找一个误差可控的近似解。
理论上可行:用离散化 + Sperner 引理,可以保证在多项式时间内找到近似不动点(从而得到 ε-Nash equilibrium)

近似不动点与 ε-Nash 的关系
Nash 均衡 = 函数 f 的精确不动点。
ε-Nash = 函数 f 的近似不动点(距离真实不动点不超过某个 α)

用 Sperner 引理 找到一个“完全着色”的小单元,就能保证它包含一个近似不动点。
近似不动点带来的策略组合,就是 ε-Nash equilibrium。

4 α-approximate fixed point(α-近似不动点)

定义: 有一个函数
f:S→Sf : S \to S f:SS
(输入和输出都在集合 SSS 内)。

如果一个点 x∗x^*x 满足:
∥f(x∗)−x∗∥∞≤α\| f(x^*) - x^* \|_{\infty} \le \alpha f(x)xα

就称它为 α-近似不动点

公式解释

  • 这里的 ∥⋅∥∞\| \cdot \|_{\infty}无穷范数(∞-norm),表示所有坐标差值中的最大值。
  • 这个条件的含义是:函数输出 f(x∗)f(x^*)f(x) 和输入 x∗x^*x 在每个坐标上都非常接近,最大差距不超过 α

如果 α=0\alpha = 0α=0,就退化为真正的不动点条件:
f(x∗)=x∗f(x^*) = x^* f(x)=x

5 近似不动点 = ε-Nash

5.1 理论理解

从博弈-->到函数
设想一个博弈,有 nnn 个玩家,每个玩家的策略是一个概率分布(混合策略),这些策略组合成一个 策略空间(这是一个闭的、有界的、凸的集合)。
现在定义一个 函数 fff
输入:当前的策略组合 xxx(每个玩家的混合策略)
输出:每个玩家都根据当前策略,调整到自己最优反应方向 后得到的新策略组合

大家都不想改 = 不动点

如果 xxxfff 的不动点,也就是说:f(x)=xf(x)=xf(x)=x

意思是:
经过“每个人都改成自己最优反应”的步骤后,策略没变。也就是说,所有玩家在当前策略下已经是最优的,没有人有动力单方面改变,这恰好就是 Nash 均衡 的定义。

Nash均衡一定存在 & = 不动点一定存在
策略空间是闭、有界、凸的,函数 f 是连续的(因为收益函数是连续的)
Brouwer 不动点定理 保证:这样的 f 在这个空间里一定至少有一个不动点
所以一定存在至少一个 Nash 均衡

把“每个玩家的最优反应”做成一个连续函数 f,f 的不动点就是 Nash 均衡;Brouwer 不动点定理保证 f 一定有不动点,所以 Nash 均衡一定存在。

Nash 定理 可以用 Brouwer 不动点定理 证明:

连续函数在闭、有界、凸集上一定有不动点。

如果能找到一个 近似不动点,就能得到一个 ε-Nash equilibrium

5.2 公式理解

α-approximate fixed point 是几何上“不动点的近似版本”。
我们真正想要的是博弈中的ε-Nash equilibrium
在证明里,有一个结论(Fact 6.3):

只要 α 满足一定的大小,就能把 α-近似不动点转成一个 ε-Nash equilibrium。

这个关系公式是:

α=εd2⋅pmax⁡\alpha = \frac{\varepsilon}{d^2 \cdot p_{\max}} α=d2pmaxε

其中:

  • pmax⁡p_{\max}pmax = 博弈中最大和最小收益的差
  • ddd

d=∑i∈[n]∣Si∣d = \sum_{i \in [n]} |S_i| d=i[n]Si

  • 这里 ddd 表示所有玩家的 纯策略总数
  • SiS_iSi 是第 iii 个玩家的纯策略集合,∣Si∣|S_i|Si 是它的大小。
  • 把每个玩家的纯策略数加起来,就是总的纯策略数量 ddd

6 PPAD

6.1 PPAD 是啥?

PPAD = Polynomial Parity Argument on Directed graphs
直译:有向图上的多项式时间奇偶性论证

它是计算复杂性理论里的一个复杂度类,用来分类一些搜索问题。一类“总有解”的搜索问题(比如找不动点),但不一定容易算出来

归约关系
Nash equilibrium →Brouwer →Sperner →End Of The Line →PPAD\text{Nash equilibrium} \ \to \ \text{Brouwer} \ \to \ \text{Sperner} \ \to \ \text{End Of The Line} \ \to \ \text{PPAD} Nash equilibrium  Brouwer  Sperner  End Of The Line  PPAD

已知:

  • 精确 Nash equilibriumPPAD-complete
  • 含义:它可能非常难算(类似 NP-complete 问题的困难度)

6.2 PPAD 问题的特点

  • 一定有解(因为有数学定理保证,比如不动点定理、奇偶性原理)
  • 输入是一个特殊的有向图
    • 每个顶点最多有一个前驱、一个后继(所以它是由很多链组成)。
    • 给定一个起点(有后继但没有前驱)。

任务:找到另一个端点(有前驱没后继,或有后继没前驱)
难点:虽然一定有解,但不一定能多项式时间快速找到

6.3 代表问题:End Of The Line

代表问题End Of The Line:在一个特殊的有向图里,从起点出发找到另一个没有前驱或后继的点。

想象一个迷宫,规则是:
每个房间最多有一条进路和一条出路。
你知道一个入口(起点)。
问题:找到出路
数学定理告诉你一定有另一个出路,但要在指数多的房间里找出来可能很难。

6.4 PPAD图End Of The Line的编码过程(考过)

6.4.1 目标(问题本身)

一个有向图:每个点最多 1 条入边、最多 1 条出边。已知一个端点(有后继但无前驱的起点)sss
任务:找出另一个端点(要么无后继,要么无前驱)

6.4.2 输入

输入不是一张完整的邻接表,而是下面这三样:

  1. 一个正整数 (k)
    顶点集合被定义为所有 (k) 位二进制串:
    V={0,1}k(共有 2k个点)V = \{0,1\}^k \quad (\text{共有 } 2^k \text{ 个点}) V={0,1}k(共有 2k 个点)
    每一个点都被kkk位的二进制串表示了。

  2. 两个多项式规模的布尔电路(或等价的多项式时间可计算函数)
    S,P:{0,1}k→{0,1}kS,\, P:\ \{0,1\}^k \to \{0,1\}^k S,P: {0,1}k{0,1}k

    • S(x)S(x)S(x)x 的后继(successor)
    • P(x)P(x)P(x)x 的前驱(predecessor)
  3. 一个指定的起点 s∈{0,1}ks \in \{0,1\}^ks{0,1}k(标准做法常取 s=0ks = 0^ks=0k),满足:

    • 无前驱P(s)=sP(s)=sP(s)=s(有的定义写成 ⊥\bot;为保持比特串,这里用“映回自身”表示“没有”);
    • 有后继S(s)≠sS(s)\ne sS(s)=s

这三样 k、电路 S,P、起点 s 就是图的全部输入。

6.4.3 边 EEE 的定义

对任意顶点 v∈{0,1}kv \in \{0,1\}^kv{0,1}k,令 u=S(v)u = S(v)u=S(v)

如果同时满足
u≠v且P(u)=v,u \ne v \quad \text{且} \quad P(u) = v, u=vP(u)=v,
就把一条边 v→uv \to uvu 放进图里;否则 vvv 没有出边。

6.4.4 输出条件

一个点 xxx端点 当且仅当它的入度和出度不同为 1。
用编码可以快速判定:

  • 无前继(源点)P(x)=x且 S(x)≠xP(x) = x \ \text{且} \ S(x) \ne xP(x)=x  S(x)=x
  • 无后继(汇点)S(x)=x且 P(x)≠xS(x) = x \ \text{且} \ P(x) \ne xS(x)=x  P(x)=x

EoTL 的任务
在已知的起点 sss 之外,找到任意一个这样的端点 x≠sx \ne sx=s

奇偶性(parity)保证:每条路径都有两个端点。
既然给了一个端点 sss,图中必有另一个端点存在——但不保证容易找到,这就是 PPAD 的含义。

7 搜索问题

English

We call a problem a search problem if each instance xxx has a search space SxS_xSx of bit-strings of polynomial length (that is, polynomial in ∣x∣|x|x) and the valid solutions are given by a non-empty subset Qx⊆SxQ_x \subseteq S_xQxSx. The set QxQ_xQx must allow a polynomial-time test of membership, i.e., whether a y∈Sxy \in S_xySx is contained in QxQ_xQx.

We also define reduction between search problems.
A reduction from one search problem Π1\Pi_1Π1 to another Π2\Pi_2Π2 is a pair of polynomial-time computable functions (f,g)(f, g)(f,g), where fff maps instances of Π1\Pi_1Π1 to instances of Π2\Pi_2Π2 and ggg maps solutions of Π2\Pi_2Π2 back to solutions of Π1\Pi_1Π1.
More precisely, for any instance x∈Π1x \in \Pi_1xΠ1 we have f(x)∈Π2f(x) \in \Pi_2f(x)Π2, and for any solution yyy of Π2\Pi_2Π2 on input f(x)f(x)f(x), the string g(x,y)g(x,y)g(x,y) is a valid solution of Π1\Pi_1Π1 on input xxx.

PPAD is the class of all search problems that reduce to EndOfTheLine in the way stated above.


中文

我们称一个问题为 搜索问题:若对每个实例 xxx,存在一个由多项式长度(相对 ∣x∣|x|x)比特串组成的搜索空间 SxS_xSx,并且有效解由一个非空子集 Qx⊆SxQ_x \subseteq S_xQxSx 给出;同时,必须能够在多项式时间内判定任意 y∈Sxy \in S_xySx 是否属于QxQ_xQx

我们还定义搜索问题之间的 归约
从搜索问题 Π1\Pi_1Π1 到搜索问题 Π2\Pi_2Π2 的归约是一对多项式时间可计算的函数 (f,g)(f, g)(f,g):函数 fffΠ1\Pi_1Π1 的实例映射为 Π2\Pi_2Π2 的实例,函数 gggΠ2\Pi_2Π2 的解映射回 Π1\Pi_1Π1 的解。
更具体地,任意实例 x∈Π1x \in \Pi_1xΠ1 满足f(x)∈Π2f(x) \in \Pi_2f(x)Π2;并且对输入 f(x)f(x)f(x) 的任意 Π2\Pi_2Π2 的解 yyy,都有 g(x,y)g(x,y)g(x,y) 是输入 xxxΠ1\Pi_1Π1 的一个有效解。

PPAD 定义为所有能够以上述方式归约到 EndOfTheLine 的搜索问题的集合。

说人话

搜索问题:一坨点集SxS_xSx,里面有部分点是我们要找的点QxQ_xQx。在规定时间内我们能判断任何一个点是不是我们要找的点。
归约:问题1 我们不会解,问题2 会解。把问题1的输入,转成问题2的输入。用问题2计算,把问题2的结果转成问题1的结果。别问为啥能相互转,学过函数懂的都懂。

我真搞不懂,为什么难的学术本质就是高中数学,但包装的鬼都看不懂。所谓故弄玄虚。

8 Sperner 引理 离散化

Sperner 引理 离散化:

  1. 把空间切成小块
  2. 给每个点涂色
  3. 找到一个“完全着色”的小块 → 对应近似不动点

找 Nash equilibrium
→ 转成找不动点(Brouwer 定理)
→ 转成找完全着色的网格(Sperner 引理)
→ 转成 End Of The Line
→ PPAD

http://www.dtcms.com/a/332484.html

相关文章:

  • 47.分布式事务理论
  • demo 通讯录 + 城市选择器 (字母索引左右联动 ListItemGroup+AlphabetIndexer)笔记
  • 2025最新:如何禁止指定软件联网?
  • 字符LCD显示模块是什么?
  • sqli-labs通关笔记-第50关 GET数值型order by堆叠注入(手工注入+脚本注入两种方法)
  • 智能工厂生产监控大屏-vue纯前端静态页面练习
  • [git] 当GitHub宕机时,我们如何协作?| github同步gitee的部署方法
  • 通俗易懂理解盲超分
  • 「iOS」————APP启动优化
  • 中年海尔,是时候押注新方向了
  • 笔试——Day39
  • Lecture 10: Concurrency 3
  • Midjourney绘画创作入门操作
  • 项目管理工具
  • 数据结构初阶:排序算法(二)交换排序
  • 第5节 循环神经网络 RNN(Recurrent Neural Network)
  • 基于多模型的零售销售预测实战指南
  • day31 UDP通信
  • 数据结构初阶(15)排序算法—交换排序(快速排序)(动图演示)
  • Android 欧盟网络安全EN18031 要求对应的基本表格填写
  • 【CUDA 编程思想】FusedQKVProj-分组量化矩阵乘法高效实现全流程解析
  • 思考:高速场景的行星轮混动效率如何理解
  • 读《精益数据分析》:黏性(Stickiness)—— 验证解决方案是否留住用户
  • STM32L051同时处理Alarm A和Alarm B中断
  • 【机器人-基础知识】ROS1和ROS2对比
  • 一周学会Matplotlib3 Python 数据可视化-绘制误差条形图
  • 自定义View学习记录之 滚动抽奖单片
  • 前端性能优化工具Performance面板实战指南
  • 为什么 /deep/ 现在不推荐使用?
  • Webpack详解