MIT-6-890-算法下界笔记-全-

MIT 6.890 算法下界笔记(全)

001:课程概述与计算复杂性导论

在本节课中,我们将学习算法下界课程的核心目标,并对计算复杂性理论进行一次快速导览。我们将了解如何证明问题是“困难”的,并探索P、NP、PSPACE等关键复杂性类。

课程介绍

本课程的目标是提供一份实用指南,并让大家积累大量经验,学习如何证明问题是困难的。证明问题困难涉及许多技巧。积累更多证明困难的经验后,将相对直接地对你感兴趣的任何问题证明其困难性。

本课程并非传统的复杂性理论课程。我们不会深入探讨复杂性类之间关系的深奥数学。我们将直接使用许多已有的结果,而不去证明它们。本课程期望你具备算法背景知识,因为我们采取一种算法视角,或者可以称之为“反算法”视角。

学习证明问题困难的主要原因,是为了表明在你感兴趣的模型下无法设计出高效算法。这鼓励你改变问题,例如寻找近似算法或固定参数算法。在本课程中,你将掌握许多技巧,看到许多可以归约到你问题的关键问题,并了解文献中常见的证明风格。

即使你不关心困难性证明,本课程也充满乐趣。原因之一是你会看到许多乍看之下不相关的问题之间酷炫的联系。本课程中的大多数问题彼此等价,证明这一点正是我们的目标。我们还将研究许多有趣的问题,例如超级马里奥兄弟和俄罗斯方块。证明问题困难就像解谜一样,充满乐趣。

课程要求包括填写调查问卷、参加讲座、记笔记、完成大约五次作业,以及一个最终项目。项目可以涉及新的理论证明、调查现有材料、编写代码可视化证明,或创作与困难性证明相关的艺术作品。

计算复杂性导论

上一节我们介绍了课程目标,本节中我们来看看计算复杂性理论的基础概念。

我们从多项式时间可解的问题类开始。多项式时间意味着运行时间为 O(n^k),其中 n 是问题实例的规模,k 是某个常数。这通常被视为“高效”算法。

一个我们认为“低效”的例子是指数时间。指数时间通常定义为 2^(p(n)),其中 p(n) 是一个多项式。

我们还可以定义递归可枚举问题递归问题,即所有可以在有限时间内解决的问题。

为了直观理解,我们可以画一条表示“计算难度”的轴。最左边是P类,中间是NP类,右边是X类(指数时间),而可判定问题的边界在更右边。

以下是各类别的例子:

  • P类:最短路径等。
  • X类:N x N 棋盘上的国际象棋(白方能否必胜);已知未来所有方块的俄罗斯方块(能否存活)。
  • 不可判定问题:停机问题。

大多数决策问题实际上没有算法。然而,我们倾向于提出的问题通常都有算法,本课程更关注的是P与NP等类的关系。

NP类与非确定性

上一节我们定义了P和指数时间类,本节中我们来看看介于两者之间的NP类。

决策问题的答案是“是”或“否”。NP有多种定义方式,这里介绍两种。

第一种定义使用幸运算法非确定性模型。在这种模型中,算法可以进行一系列“猜测”,并且总是能猜对。算法最终输出“是”或“否”。我们保证:如果存在一个答案为“是”的路径,那么你将被引导至一个“是”的答案。如果算法输出“否”,则意味着无论做什么选择,最终都会得到“否”。

第二种定义是:NP问题是那些其解相对简短并且可以在多项式时间内被验证的问题。

这两种定义本质上是等价的。例如,俄罗斯方块(已知未来方块序列)属于NP。要证明你能存活,只需给出每个方块的放置位置(一个简短的证书),然后可以在多项式时间内验证这个放置序列是否有效。

显然,任何P类问题也属于NP类。同时,任何NP问题都可以通过尝试所有可能的猜测路径在指数时间内解决,因此NP包含于指数时间类中。

一个重大的开放问题是P是否等于NP。直观上,这意味着你无法“制造运气”。大多数人相信P不等于NP,即存在一些属于NP但不属于P的问题。

困难性与完全性

上一节我们介绍了NP类,本节中我们来看看如何定义问题的“困难”程度。

如果我们有一个复杂性类X(例如NP),那么一个问题被称为是X-困难的,如果它至少和X类中的每一个问题一样难。这意味着从X类中的任何问题到该问题都存在一个归约。

一个问题被称为是X-完全的,如果它既是X-困难的,又属于X类。

在复杂性图谱中,NP完全问题位于NP类中最难的那部分。例如,国际象棋(广义)是指数时间完全的。这意味着我们知道它可以在指数时间内解决(上界),并且它至少和所有指数时间问题一样难(下界)。因此,它不可能在多项式时间内解决。

另一个重要的类是PSPACE,即可在多项式空间内解决的问题。通常,如果一个问题能在多项式空间内解决,那么它也能在指数时间内解决,因为机器只有指数多个可能的状态。因此,PSPACE位于P(或NP)和指数时间之间。同样,也有PSPACE困难和PSPACE完全的概念。

例如,推箱子游戏(Rush Hour)是PSPACE完全的。这意味着它比NP完全问题(如俄罗斯方块)更难(假设NP不等于PSPACE)。因此,推箱子游戏没有多项式时间算法。

还有更大的类,如指数空间,但本课程主要关注NP和PSPACE。

一个有用的事实是:PSPACE等于NPSPACE(非确定性多项式空间)。这由萨维奇定理证明。这对于分析推箱子这类游戏很有用,因为虽然解的长度可能是指数级的,但验证一个猜测的移动序列是否构成解只需要多项式空间。

归约:困难性证明的核心

上一节我们定义了困难性和完全性,本节中我们来看看证明这些性质的核心工具——归约。

归约是连接两个问题的桥梁。如果我们有问题A和问题B,从A到B的一个归约是一个算法(通常指多项式时间算法),它将A问题的一个实例转换为B问题的一个实例,并且这种转换使得两个实例的答案(是/否)相同。

为什么归约重要?因为如果我们有一个解决B问题的算法,那么通过归约,我们也能解决A问题。我们说,B至少和A一样难

几乎所有困难性证明都基于归约。你从一个已知在某个类中(如NP)是困难的问题出发,将其归约到你想要研究的新问题。如果你能做到这一点,那么你就证明了新问题至少和那个已知困难问题一样难,因此新问题也是该类的困难问题。

需要注意的是归约的方向。你总是从已知的困难问题归约到你的问题。一个常见的说法是:“我们的证明基于从[某个已知困难问题]到[你的问题]的归约。”

在算法课中,你也见过归约,例如将无权最短路径归约为有权最短路径。在那种情况下,你展示的是A问题是B问题的一个特例。在困难性证明中,归约通常远没有那么明显。

以下是基于归约的定理:

  • 如果A是X-困难的,并且存在从A到B的归约,那么B也是X-困难的。
  • 反之,如果B属于某个复杂性类X(且X包含多项式时间),那么A也属于X类。

实例分析:超级马里奥兄弟是NP困难的

上一节我们介绍了归约的概念,本节中我们来看一个具体的例子:证明超级马里奥兄弟是NP困难的。

我们需要从一个已知的NP完全问题出发进行归约。最常用的起点是3-SAT问题(三元可满足性问题)。

3-SAT实例如下:给定一个由多个子句构成的布尔公式,每个子句是三个文字(变量或其否定)的析取。问题是:是否存在对变量的真值赋值,使得整个公式为真。

证明的思路是使用构件。我们将3-SAT实例的各个部分转换成马里奥关卡中的小模块。

以下是核心构件:

  1. 变量构件:马里奥需要决定向左走还是向右走。这代表将变量赋值为真或假。一旦选择,由于跳跃高度限制,无法返回。
  2. 子句构件:包含三个入口。马里奥需要从至少一个入口进入并触发一个星星(例如,通过撞击问号砖块获得无敌星)。之后,他才能安全通过一个充满火焰棒的障碍区域。
  3. 交叉构件:由于变量与子句的连接图可能不是平面图,我们需要让路径交叉而不相互干扰。这需要设计一个交叉构件,确保马里奥只能沿特定方向通过,而不会意外地从一条路径跳到另一条路径。

整个关卡的组装方式如下:马里奥依次通过每个变量构件,做出真/假选择。根据选择,他会沿着对应的路径访问那些包含该变量(以相应形式出现)的子句构件,并触发其中的星星。在访问完所有变量后,他必须依次通过所有子句构件的火焰棒区域。这只有当每个子句构件都至少被触发过一次(即每个子句都为真)时才可能实现。

因此,当且仅当3-SAT公式可满足时,马里奥才能通关。这就完成了从3-SAT到超级马里奥兄弟的归约,证明了后者是NP困难的。

实例分析:推箱子是PSPACE完全的

上一节我们通过3-SAT归约证明了一个动作游戏的困难性,本节中我们来看一个更复杂的谜题——推箱子,并介绍一种适用于更长、更具策略性游戏的归约框架。

对于推箱子这类游戏,一个有用的源问题是约束逻辑

在约束逻辑中,我们有一个图,边分为红边(权重1)和蓝边(权重2)。图的一个状态是给所有边指定一个方向。约束是:在每个顶点,指向该顶点的边的权重之和必须至少为2。允许的操作是反转一条边的方向,只要反转后仍满足所有顶点的约束。

顶点有两种类型:

  • 与门:连接两条红边(输入)和一条蓝边(输出)。只有当两条红边都指向顶点(输入为真)时,蓝边才可能被反转指向外(输出为真)。
  • 或门:连接三条蓝边。其中任意一条边指向顶点(输入为真),都允许另一条指定的边被反转指向外(输出为真)。

约束逻辑中的决策问题是:给定一个初始合法状态,能否反转某条特定的边?这个问题被证明是PSPACE完全的。

现在,要将约束逻辑归约到推箱子,我们需要用推箱子中的方块构造出与门和或门构件。

以下是推箱子中的构件思路:

  • 与门构件:一个方块C能否被推入一格,取决于方块A和方块B是否都被推出一格。这模拟了“与”的逻辑。
  • 或门构件:一个方块C能否被推入一格,取决于方块A 方块B被推出一格。这模拟了“或”的逻辑。这里需要一个“受保护”的设计,以确保不会意外地同时触发两个输入。

通过精心设计方块布局,确保灰色固定块无法移动,我们可以将这些构件像拼图一样拼接起来,模拟任何约束逻辑图。因此,推箱子中的可达性问题(能否移动特定方块)至少和约束逻辑问题一样难,从而证明推箱子是PSPACE完全的。

总结

本节课我们一起学习了算法下界课程的核心目标与计算复杂性理论的基础。

我们首先了解了本课程旨在教授证明计算问题困难性的实用技巧。接着,我们快速回顾了关键的计算复杂性类:P(多项式时间可解)、NP(非确定性多项式时间可验证)、PSPACE(多项式空间可解)以及指数时间类。我们明确了“困难性”和“完全性”的定义。

然后,我们深入探讨了归约这一核心工具,它是连接已知困难问题与新问题的桥梁,是几乎所有困难性证明的基础。最后,我们通过两个实例分析了归约的应用:将3-SAT归约到超级马里奥兄弟证明了其NP困难性;将约束逻辑归约到推箱子证明了其PSPACE完全性。这些例子展示了如何通过设计巧妙的“构件”来构建归约。

在接下来的课程中,我们将深入探索更多类型的归约技术和源问题,例如3-Partition问题,并应用于更广泛的有趣难题和游戏中。

002:三分割问题 I

在本节课中,我们将学习一系列与数字相关的NP难问题,特别是三分割问题及其变体。我们将探讨弱NP难与强NP难之间的重要区别,并了解如何利用三分割问题来证明各种几何包装和拼图问题的计算复杂性。

三分割问题与相关概念

上一节我们介绍了课程背景,本节中我们来看看几个核心的数字分割问题。

两分割问题

首先,我们定义两分割问题。给定一个由整数组成的集合 A,其中包含 n 个整数 a₁, a₂, ..., aₙ。我们的目标是将这些整数分割成两个子集 A₁A₂,使得两个子集中整数的和相等。即:

sum(A₁) = sum(A₂) = (sum(A)) / 2

这个问题是NP难的,并且是Karp在1972年提出的经典NP完全问题之一。

子集和问题

作为两分割问题的推广,子集和问题定义如下:给定一个整数集合 A 和一个目标值 T,目标是找到一个子集 S ⊆ A,使得 sum(S) = T。显然,两分割是子集和问题在 T = sum(A)/2 时的特例。

三分割问题

现在,我们进入本节课的核心——三分割问题。给定一个包含 n 个整数的集合 A(假设 n 能被3整除),目标是将其分割成 n/3 个三元组集合 A₁, A₂, ..., Aₙ/₃,使得每个三元组中整数的和都相等,记为目标和 T,其中 T = sum(A) / (n/3)

三分割问题的一个关键特性是,在归约中,我们通常可以假设每个整数 aᵢ 严格介于 T/4T/2 之间。这个假设保证了任何和为 T 的集合必须恰好包含三个元素,因为:

  • 两个元素之和小于 T(因为每个都 < T/2)。
  • 四个元素之和大于 T(因为每个都 > T/4)。

此外,我们可以通过给每个 aᵢ 加上一个极大的数 M(例如 M = n¹⁰⁰ * max(A))来“标准化”实例。这样,所有数字都变得非常接近,其主导项相同,原始数字成为微小的“噪声”。这不会改变解的存在性,因为每个三元组都包含三个 M,总和为 3M

数值三维匹配问题

这是一个与三分割密切相关的问题。给定三个整数多重集合 A, B, C,目标是找到 n 个三元组 (a, b, c),其中 a ∈ A, b ∈ B, c ∈ C,每个元素恰好使用一次,并且每个三元组的和 a + b + c 都等于同一个目标值 TT = (sum(A)+sum(B)+sum(C)) / n)。

我们可以将数值三维匹配归约到三分割。基本思想是将 A, B, C 中的数字合并成一个集合 A',但通过添加不同的巨大偏移量来强制每个三元组必须包含来自 A, B, C 的各一个元素。例如:

  • 对于每个 a ∈ A,构造 a' = a + M
  • 对于每个 b ∈ B,构造 b' = b + 3M
  • 对于每个 c ∈ C,构造 c' = c + 9M
    新的目标和 T' = T + 13M。由于 M 极大,任何和为 T' 的三元组必须包含一个 M、一个 3M 和一个 9M 的项,从而强制了“各选一个”的属性。

三维匹配问题

这是一个纯粹的组合问题。给定三个不相交且大小均为 n 的顶点集 A, B, C,以及一组超边(每个超边连接 A, B, C 中各一个顶点)。目标是找到 n 条不相交的超边,覆盖所有顶点。数值三维匹配是三维匹配的特例,其中超边仅存在于满足 a + b + c = T 的三元组 (a, b, c) 上。

弱NP难与强NP难

在处理包含数字输入的问题时,NP难度有两个重要的层次。

  • 弱NP难:当允许输入数字以二进制编码,且其值可以达到指数级(例如 2(nc))时,问题是NP难的。然而,可能存在伪多项式时间算法,即运行时间是输入数字的多项式,而不是其编码长度(二进制位数)的多项式。
  • 强NP难:即使限制输入数字的本身以多项式为界(例如,不超过 n^c),问题仍然是NP难的。这意味着即使以一元制编码数字(编码长度等于数字值),问题依然是难的。因此,强NP难问题不存在伪多项式时间算法(除非 P=NP)。

关键区别在于:

  • 两分割子集和弱NP难的,但它们存在伪多项式时间动态规划算法。
  • 三分割数值三维匹配三维匹配都是强NP难的。

当我们证明涉及几何包装或拼图的问题时,通常需要将数字以一元形式表示(例如,用一定数量的小方块来代表一个数字的大小)。这就要求归约的起点必须是强NP难问题(如三分割),以确保即使在一元编码下,构造的实例规模也是多项式的。若从弱NP难问题(如两分割)归约,当输入数字指数大时,一元表示会导致实例规模指数爆炸,这不是一个有效的多项式时间归约。

从三分割出发的归约实例

上一节我们区分了NP难度的不同类型,本节中我们来看看如何利用三分割的强NP难性来证明其他问题的难度。

多处理器调度问题

给定 n 个作业,每个作业有处理时间(整数),以及 P 个相同的处理器。目标是判断是否存在一种调度方案,使得所有作业在时间 T 内完成。决策版本:是否所有作业能在时间 ≤ T 内完成?

  • 两分割归约:设 P=2,作业处理时间对应两分割的整数集,T = sum(A)/2。这证明了问题是弱NP难的。
  • 三分割归约:设 P = n/3,作业处理时间对应三分割的整数集,T = sum(A) / (n/3)。这证明了问题是强NP难的。

矩形包装问题

给定 n 个小矩形(宽度和高度为整数)和一个目标大矩形 B。判断是否可以将小矩形(允许90度旋转)不重叠地放入大矩形中。我们考虑精确包装变体,即不允许有空隙。

归约思路(从三分割)

  1. 对于三分割实例中的每个整数 aᵢ,创建一个小矩形,其宽度为 aᵢ + n/3,高度为 1
  2. 将目标矩形 B 设置为宽度为 T + n(因为每个三元组宽度贡献 n),高度为 n/3

原理:由于我们给每个宽度加了 n/3,任何矩形的宽度都大于 n/3,而高度 1 小于 n/3。因此,如果尝试将矩形旋转90度,其高度将大于 n/3,无法放入目标矩形的高度内。这强制所有矩形必须保持原始方向。那么,精确包装就要求每一行必须恰好由三个矩形组成,且它们的原始宽度(aᵢ)之和为 T,这正是三分割的解。

边缘匹配拼图问题

给定 n 个正方形瓦片,每个瓦片四条边各有一种颜色。给定一个目标矩形(通常是正方形)。判断是否可以将所有瓦片不重叠地放入目标矩形中,使得相邻瓦片接触边的颜色相同。

归约思路(从矩形包装)

  1. 将矩形包装实例中的每个小矩形,用单行瓦片来表示。假设矩形宽为 W,高为 1,则用 W 个瓦片排成一行。
  2. 用特殊的“框架”瓦片包围整个区域,框架外侧使用全局唯一的颜色,确保它们必须位于边界。
  3. 在表示同一矩形的瓦片之间,使用该矩形独有的内部颜色进行匹配,强制它们必须连接在一起形成该矩形。
  4. 在矩形的上下边缘使用统一的颜色(如%),左右边缘使用另一种统一的颜色(如$),以模拟矩形的边界。

这样,解决边缘匹配拼图就等价于解决矩形包装问题。由于矩形包装是强NP难的,且此归约中我们将数字 aᵢ 表示为一元形式的瓦片数量,因此边缘匹配拼图也是强NP难的。

有符号边缘匹配与拼图问题

在有符号边缘匹配中,每条边有一个“头”或“尾”的符号(如蜥蜴的头和尾),只有头尾相对的边才能匹配。我们可以将无符号边缘匹配归约到有符号边缘匹配:

  • 将每个无符号瓦片替换为一个2x2的有符号瓦片组合,通过精心分配头尾符号,使得这2x2的组合在功能上等同于原来的无符号瓦片。
  • 拼图问题可以看作是有符号边缘匹配的实体化,其中“头”对应凸起(榫头),“尾”对应凹槽(卯眼)。类似的归约可以证明拼图问题也是NP难的。

多联骨牌包装问题

多联骨牌是由多个单位正方形沿边连接形成的图形。多联骨牌包装问题要求将给定的一组多联骨牌放入目标形状中。

归约思路(从拼图问题)

  1. 将每个拼图块放大,并用一个 log n × log n 的正方形区域来表示。
  2. 在该区域的边界上,根据原始拼图块边的类型(凸、凹或平边),用二进制编码刻出凹凸不平的“齿状”边界。
  3. 两个多联骨牌能够严丝合缝地拼接,当且仅当它们对应的原始拼图块边是匹配的(凸对凹)。

这样,多联骨牌包装问题也被证明是NP难的。有趣的是,我们还可以将多联骨牌包装归约回边缘匹配问题,形成一个闭合的归约循环,表明这些拼图问题在计算复杂性上本质是等价的。

正方形包装问题

给定一组正方形和一个目标正方形,判断是否可以将所有小正方形不重叠地放入大正方形中(允许旋转)。我们通过精确包装来避免旋转的复杂性。

归约思路(从三分割)

  1. 对于每个整数 aᵢ,创建边长为 B + aᵢ 的正方形,其中 B 是一个远大于所有 aᵢ 的巨大整数。
  2. 目标正方形的尺寸需要精心设计。一种方法是先构造一个 3B + T 高、(n/3)*(B+T) 宽的矩形区域,该区域可以被 n/3 组(每组三个)正方形恰好填满,当且仅当存在三分割。
  3. 然后,使用一个“框架”基础设施将这个矩形区域嵌入到一个更大的正方形中。框架由几种固定尺寸的正方形(如 X × X(X+1) × (X+1))以特定方式排列构成,中间恰好留下所需矩形形状的空隙。通过缩放和填充额外的单位正方形,可以确保最终包装是精确的。

这个构造证明了即使所有正方形的边长都是多项式大小的,正方形包装问题也是强NP难的。

总结

本节课中我们一起学习了:

  1. 三分割问题及其变体(两分割、子集和、数值三维匹配)的定义。
  2. 弱NP难强NP难的核心区别,以及为何在涉及一元表示的归约中必须使用强NP难问题(如三分割)作为起点。
  3. 如何利用三分割问题证明一系列包装问题(矩形包装、正方形包装)和拼图问题(边缘匹配、有符号匹配、拼图、多联骨牌包装)是NP难的,甚至是强NP难的。

这些归约展示了三分割问题作为“工具”的威力,它将数字上的约束巧妙地转化为几何形状或组合匹配上的约束,从而奠定了许多实际问题计算复杂性的基础。下一节课我们将继续探索三分割在其他类型问题中的应用。

003:三分割 II

在本节课中,我们将继续探讨从三分割问题出发的归约,并学习一系列基于此的NP完全性证明。我们将涵盖几何折叠、益智游戏、图论等多个领域的问题,了解如何将数值表示问题转化为各种形式的约束。

上一节我们介绍了从三分割问题出发的几个归约。本节中,我们将看到更多基于三分割的归约,包括几何折叠、益智游戏和图论问题。

🧩 多面体边展开

问题:给定一个多面体,我们能否沿着其边切割,将其展开成一个单一的、无重叠的平面图形?这类似于从纸上剪出一个形状来制作立方体。

核心概念:对于拓扑上是球面的表面,我们需要沿着边的生成树进行切割。然而,对于某些多面体,无论选择哪棵生成树,展开后都会产生重叠。

NP完全性证明思路:该问题是强NP完全的。证明的核心思想是将“将正方形打包进正方形”的问题归约到此问题。

  • 基础设施:构造一个包含“烟囱”结构的多面体,大部分区域可以塞入烟囱,但一些大的正方形面必须留在底部的一个方形区域内。
  • 连接机制:使用称为“原子”的通用连接结构,这些原子可以自由地连接各个正方形面,无论是在原始多面体表面还是在展开后的平面布局中,从而模拟正方形打包的布局。
  • 归约:如果能将正方形打包进一个正方形,就可以相应地安排多面体上的正方形面,并使用原子连接它们,从而得到一个可展开的多面体。反之亦然。

因此,判断一个多面体是否存在无重叠的边展开是强NP完全的。

🐍 蛇形立方体/库布拉谜题

问题:给定一个由小立方体通过弹性绳穿成的链,链由一系列“直段长度”和其间的90度转弯指定。目标是将这条链折叠成一个实心的大立方体。

NP完全性证明思路:该问题也是NP完全的。证明从三分割问题归约而来。

  • 数字表示:每个数字 A_i 表示为一个长条结构(长度为 A_i 的许多小立方体),两端由长度为1的短条连接,形成一个不可分割的单元。
  • 目标形状:构造一个目标形状,它有一个“中心枢纽”和多个向外延伸的“辐条”口袋。每个 A_i 单元必须完整地放入一个口袋中。
  • 通用连接器:使用一种称为“锯齿形”的链段(全部由90度转弯构成,没有直段)作为通用连接器。可以证明,经过适当缩放(4x4x4细化)后,锯齿形链可以折叠成任何哈密顿路径形状(即访问每个小立方体一次且不交叉的路径)。
  • 构造:链的构造是:A_1 单元,接着是一段锯齿形连接器,然后是 A_2 单元,再是一段锯齿形,如此交替。锯齿形连接器非常灵活,可以在三维空间中自由路由,连接各个 A_i 单元并填充剩余空间,从而允许 A_i 单元被自由分配到各个口袋中,模拟三分割。

因此,蛇形立方体谜题是NP完全的。

⭕ 圆盘装入正方形

问题:给定一组圆盘(指定半径)和一个正方形,能否将这些圆盘的圆心放置在正方形内,使得所有圆盘互不重叠?这个问题在计算折纸的“树形法”中很重要。

NP完全性证明思路:该问题是NP完全的。证明从三分割问题归约,首先考虑将圆盘装入等边三角形更容易。

  • 固定网格:首先放置一组圆盘,强制它们排列成紧密的三角形网格,留下一些三角形的空隙。
  • 三分割单元:对于每个三元组 (A_i, A_j, A_k),构造一个由四个圆盘组成的单元:三个圆盘代表三个数字,一个中心圆盘。通过精细调整圆盘半径(与 A_i 值相关),可以证明中心圆盘有有效位置当且仅当 A_i + A_j + A_k <= T(经过缩放后 T=1)。
  • 处理正方形:为了处理正方形目标,使用递归构造。在正方形的四个角放置大圆盘,中心放置一个大圆盘,再添加四个圆盘强制形成类似等边三角形的空隙区域,然后在这些空隙中递归地构建上述三分割单元。通过添加最大圆盘填满所有无用空隙,确保圆盘只能进入预设的“口袋”。
  • 归约:每个口袋对应一个三分割的“桶”,每个三分割单元必须完整地放入一个口袋中,这模拟了三分割问题。

因此,判断圆盘能否装入正方形是NP完全的。

🎮 点击消除游戏

问题:在一个网格中,点击一个至少由两个同色方块组成的连通块,该块会被消除,上方方块会垂直落下,如果清空一列,则两侧的列会向中间移动。目标是消除所有方块。

NP完全性证明思路:对于两列、五种颜色的情况,该问题是NP完全的。证明从三分割问题归约。

  • 构造:初始配置有两列。左列包含代表数字 A_i 的紫色条(高度为 B * A_iB 是一个大系数),以及红、蓝、黑、白方块构成的固定结构。右列包含一系列红色方块,间隔为 B * T
  • 游戏过程:为了消除右列的红色方块,玩家需要点击左列的紫色条,使其下降,让左列的红色方块与右列的红色方块对齐。由于间隔是 B * T,要成功对齐,被点击的紫色条的总高度和必须是 B * T,这对应了三个 A_i 之和为 T
  • 归约:玩家必须将紫色条(代表 A_i)分组消除,使得每组总高度恰好为 B * T,才能逐步对齐并消除所有红色方块。之后,剩下的部分可以轻松消除。这模拟了三分割问题。

因此,点击消除游戏(两列五色)是NP完全的。

🧱 俄罗斯方块生存问题

问题:给定一个初始棋盘状态和一个已知的方块下落序列,玩家能否通过旋转和移动方块,在棋盘被填满至顶部前生存下来(或最大化消除行数)?

NP完全性证明思路:生存问题(以及分数最大化问题的近似性)是NP难的。证明从三分割问题归约。

  • 构造:初始棋盘设置了一系列“桶”。方块序列编码了数字 A_i:每个 A_i 由模式 [正方形,左拐L,正方形] 重复 A_i 次来表示,最后以 [正方形,直条] 结束。
  • 游戏过程:玩家必须将每个 A_i 对应的方块序列完整地放入一个“桶”中。由于方块的形状和顺序,试图将一个 A_i 拆分到多个桶中,或者放入未“初始化”的桶中,都会导致无法填满桶顶部的关键行,从而游戏失败。
  • 归约:只有将 A_i 分成三组,每组之和恰好填满一个桶的特定高度,才能在最后使用一个T方块消除关键行,从而生存并处理后续大量方块获得高分。这模拟了三分割问题。

因此,俄罗斯方块的生存与分数最大化近似问题是NP难的。

📐 1-平面图

问题:给定一个图,能否在平面上绘制它,使得每条边最多只与另一条边交叉一次?这称为1-平面绘制。

NP完全性证明思路:判断一个图是否为1-平面图是NP完全的。证明从三分割问题归约。

  • 不可交叉边:使用 K_6(6个顶点的完全图)作为“不可交叉边”的替代符号。在任何1-平面绘制中,K_6 内部的边已经产生了许多交叉,使得任何穿过其“内部”的路径都会导致某条边被交叉两次。
  • 双轮结构:使用“双轮”图作为主要结构。数字 A_i 被表示为从外部顶点到内轮中心的多条长度为2的路径(度数代表 A_i 的值)。
  • 归约:通过添加“不可交叉边”将外轮划分为多个区域,每个区域对应一个三分割的“桶”。每个 A_i 的路径组必须完全位于某个区域内,因为“不可交叉边”阻止了路径跨越区域而不违反1-平面性。这迫使 A_i 被分到不同的桶中,模拟三分割。

因此,1-平面图判定是NP完全的。

📏 可折叠木工尺

问题:给定一系列不同长度的刚性杆,通过铰链首尾相连,以及一个一维的盒子(指定长度)。能否将这把尺子折叠(某些铰链折成0度,某些保持180度)以完全放入盒中?

NP完全性证明思路:该问题是(弱)NP难的,存在伪多项式时间算法。证明从划分问题(两分割)归约。

  • 数字表示:每个数字 A_i 对应一段长度为 A_i 的杆。
  • 折叠选择:对于每个铰链,可以选择折叠(改变方向)或不折叠(保持方向)。这相当于选择让对应的 A_i 段贡献到总位移的左边或右边。
  • 构造:在尺子开头添加一段极长的杆 L 和一段长为 L/2 的杆,结尾对称地添加 L/2L。目标盒子长度为 L
  • 归约:只有当所有 A_i 段被分成和相等的两组(即划分问题有解)时,尺子的起点和终点才能在水平方向上对齐,从而使得加上头尾的长杆后,总长度恰好为 L,能够放入盒中。否则,尺子会过长。

因此,可折叠木工尺问题(一维打包)是NP难的。

🗺️ 地图折叠

问题:给定一个多边形“地图”和其上的一组折痕线,能否通过一系列“简单折叠”(每次沿一条折痕线折叠)将所有折痕线折叠起来?

NP完全性证明思路:该问题是NP难的。证明同样从划分问题归约。

  • 数字表示:折痕线之间的水平距离代表数字 A_i
  • 折叠选择:是否折叠某条水平折痕线,决定了对应的 A_i 段是保持在原位还是被偏移。
  • 构造:地图包含两条垂直折痕线。在折叠它们之前,需要先折叠一些水平折痕线来调整结构,使得垂直折叠后两部分能对齐而不碰撞。
  • 归约:通过添加极长的垂直段和半长段,可以构造出这样的场景:只有当水平折痕线的折叠模式使得垂直方向对齐时(即对应的 A_i 被分成和相等的两组,解决划分问题),才能成功执行两次垂直折叠,进而完成所有折叠。否则,垂直折叠会导致碰撞。

因此,地图折叠问题是NP难的。一个开放问题是它是否是强NP难的。


本节课中我们一起学习了多个从三分割或划分问题出发的NP完全性归约,涵盖了多面体展开、蛇形立方体、圆盘打包、点击消除、俄罗斯方块、1-平面图绘制、木工尺折叠和地图折叠等问题。这些例子展示了如何将数值组合问题巧妙地嵌入到几何、游戏和图论的各种约束中,从而证明这些问题的计算难度。

004:学术能力评估测试(SAT I) 🧠

在本节课中,我们将深入学习可满足性问题(SAT)及其众多变体。SAT是证明NP完全性时最常用的问题。我们将介绍SAT的各种形式,哪些是多项式时间可解的,哪些是NP难的,并学习如何利用SAT进行归约证明。

SAT问题概述

原始的SAT问题定义如下:给定一个布尔公式,该公式由运算符 与(∧)或(∨)非(¬) 构成,作用于变量 x1, x2, ..., xn 上。问题是:是否存在一种对变量的赋值方式,使得整个公式的值为真(True)?

这是第一个被证明是NP完全的问题(Cook-Levin定理)。

电路可满足性问题(Circuit SAT)

另一种思考SAT的方式是电路可满足性问题。我们可以将公式视为一个有向无环电路(DAG),其中输入是变量(导线),中间节点是逻辑门(与门、或门、非门),输出是最终结果。

电路SAT 也是NP完全的。将任意计算表示为电路更为直观,而“是否存在一组输入使输出为真”的问题,本质上与NP验证是否存在一个“证书”使验证计算接受是等价的。

合取范式可满足性问题(CNF SAT)

合取范式(CNF)是SAT的一种特殊但极其重要的形式。在CNF中,公式是多个子句的合取(与),而每个子句是多个文字的析取(或)。

一个 文字 是一个变量或其否定,例如 xi¬xi
一个 子句 是多个文字的析取,例如 (x1 ∨ ¬x2 ∨ x3)
整个 CNF公式 是多个子句的合取,例如 (x1 ∨ ¬x2) ∧ (¬x1 ∨ x3)

CNF SAT本身也是NP完全的。我们可以将任意布尔公式在多项式时间内转换为CNF形式。

3-SAT问题

3-SAT是CNF SAT的一个更特殊的子问题,其中每个子句恰好包含三个文字(或至多三个)。这是证明NP难度时最常用的基准问题。

公式示例(x1 ∨ x2 ∨ ¬x3) ∧ (¬x1 ∨ x4 ∨ x5)

3-SAT的受限变体(仍为NP难)

上一节我们介绍了基础的3-SAT,本节中我们来看看一些对3-SAT施加额外限制后,问题依然保持NP难度的变体。了解这些变体有助于我们在归约时选择最合适的起点。

以下是几个重要的NP难3-SAT变体:

  • 3-SAT-5:每个变量(无论是其本身还是否定形式)在所有子句中出现的总次数不超过5次。
  • 单调3-SAT(Monotone 3-SAT):每个子句中的所有文字要么全是正变量(如 x1 ∨ x2 ∨ x3),要么全是负变量(如 ¬x1 ∨ ¬x2 ∨ ¬x3)。注意,如果所有子句类型相同(全正或全负),则问题平凡可解(全赋真或全赋假即可)。但当公式混合了全正和全负子句时,问题是NP难的。
  • 恰一3-SAT(1-in-3 SAT / Exact 1-in-3 SAT):每个子句规定其三个变量中 恰好有一个 为真。通常我们考虑其“单调”版本,即子句中只出现正变量,形式为 (x, y, z),要求 (T, F, F)(F, T, F)(F, F, T) 之一成立。
  • 非全相等3-SAT(Not-All-Equal 3-SAT):每个子句规定其三个变量 不能全部取值相同。即不允许 (T, T, T)(F, F, F),但允许 (T, T, F)(T, F, T)(F, T, T)(T, F, F) 等。这等价于要求每个子句中恰有一或两个变量为真。它是对称的,没有真假值的偏向性。

多项式时间可解的SAT变体

并非所有SAT变体都是难的。了解哪些是容易的,可以避免在归约中误入“简单”的陷阱。

以下是几个多项式时间可解的SAT变体:

  • 2-SAT:每个子句最多包含两个文字。可以通过构建蕴含图(Implication Graph)并检查强连通分量来解决。
  • Horn SAT:每个子句至多包含一个正文字(例如 ¬x ∨ ¬y ∨ z,即 (x ∧ y) → z)。可通过单位传播算法高效求解。
  • Dual-Horn SAT:每个子句至多包含一个负文字。可通过将所有变量取反,转化为Horn SAT来求解。
  • DNF SAT:公式是析取范式(DNF),即多个项的析取,每个项是多个文字的合取。只需检查是否存在一个不含矛盾的项即可。

Schaeffer二分法定理

面对如此多的SAT变体,是否存在一个统一的分类法则?Schaeffer二分法定理给出了答案。该定理针对一类广义的SAT问题:公式是多个“广义子句”的合取,每个子句是对其变量的一个任意布尔关系约束(例如,“恰一为真”或“非全相等”)。

定理指出,这类广义SAT问题要么是多项式时间可解的,要么是NP完全的,不存在中间情况。具体来说,多项式时间可解当且仅当所有子句关系满足以下至少一个条件:

  1. 全真/全假可满足:将所有变量赋为真(或全赋为假)能自动满足所有子句。
  2. Horn或Dual-Horn:所有子句关系都可以表示为Horn子句或Dual-Horn子句。
  3. 2-CNF:所有子句关系都可以表示为最多两个文字的析取(即2-SAT)。
  4. 线性方程组:所有子句关系都可以表示为模2下的线性方程(即异或方程组),可用高斯消元法求解。

如果以上条件无一成立,那么该SAT问题就是NP难的。

应用归约示例:双色完美匹配问题

现在,让我们看一个利用上述SAT变体进行归约证明的具体例子。我们将把 非全相等3-SAT(Not-All-Equal 3-SAT) 归约到 双色完美匹配(2-Colorable Perfect Matching) 问题。

问题定义:给定一个3-正则图(每个顶点度为3),问能否将顶点染成红蓝两色,使得每个顶点都恰好有一个邻居与其同色?这等价于红色边和蓝色边各自构成图的一个完美匹配。

归约思路

  1. 变量表示与复制:我们需要一个“导线”来传递变量的颜色(真值)。构造一个复制器(Repeater)小工具,强制其两端的顶点颜色相同。
  2. 子句约束:对于Not-All-Equal子句 (x, y, z),构造一个小工具(例如一个K4子图,并指定其中三个顶点对应x, y, z),使得只有当x, y, z的颜色不全相同时,该小工具内部才能实现所需的双色完美匹配约束(每个顶点恰好有一个同色邻居)。
  3. 组合:为每个变量创建复制器链,为每个子句创建上述子句小工具,并将变量对应的顶点连接到其出现的每个子句小工具上。如果原Not-All-Equal 3-SAT实例可满足,则能给出一个合法的染色方案(双色完美匹配);反之亦然。

这个归约展示了如何将一个逻辑约束(非全相等)编码为一个图上的局部染色约束。

推箱子问题家族

SAT的归约技巧广泛应用于证明各类问题的难度,例如视频游戏中的推箱子问题家族。

模型参数

  • 推力强度(Push-k):机器人一次最多能推动连续k个箱子。
  • 滑动(PushPush):箱子被推动后会一直滑行,直到撞到障碍物或其他箱子。
  • 固定块(F):存在不可移动的墙壁或固定块。
  • 非交叉路径(X):机器人路径不能重复经过同一格子。

复杂度概览

  • 几乎所有变体都是NP难的。
  • 一些变体(如Sokoban,即Push-1-F)甚至是PSPACE完全的。
  • 要求路径非交叉(X)的变体通常被限制在NP内,因为解路径长度是多项式级的。

归约示例(Push-*)
Michael Hoffmann 在2000年给出了一个巧妙归约,将3-SAT归约到“推力无限且处于矩形围墙内”的推箱子问题(Push-*)。构造利用狭窄的通道和必须被推动的箱子来编码变量选择(推动箱子堵住“真”或“假”路径)和子句检查(只有当至少一个文字为“真”时,子句对应的通道才能被打开)。这证明了即使在没有固定块、推力无限的最简单推箱子模型中,规划问题也是NP难的。

归约示例(Push-1 和 PushPush)
对于推力为1的模型,可以在3D空间中构造归约(避免交叉)。基本思想是:变量选择对应推动一个箱子堵住其中一条路径;子句检查对应一个“锁”机制,只有当至少一个满足该子句的变量路径被激活(即箱子没被推来堵路)时,机器人后期才能通过该子句对应的区域。为了在2D平面实现,需要设计复杂的“交叉小工具(Crossover Gadget)”来模拟导线交叉而不相互干扰,其设计与《超级马里奥兄弟》的硬度证明中使用的交叉小工具思路类似。

总结

本节课中我们一起学习了可满足性问题的核心内容。我们从最基础的SAT问题出发,深入探讨了其多种重要变体,包括NP难的3-SAT、恰一3-SAT、非全相等3-SAT,以及多项式时间可解的2-SAT、Horn SAT等。我们了解了Schaeffer二分法定理,它为一大类广义SAT问题提供了清晰的复杂度分类。最后,我们通过双色完美匹配和推箱子问题的归约实例,看到了如何灵活运用不同的SAT变体作为起点,来证明各种看似不相关的问题同样是NP难的。掌握这些SAT变体及其性质,是设计NP硬度归约的基石。在接下来的课程中,我们将看到更多利用SAT进行归约的精彩例子。

005:SAT简化与NP完全性证明

在本节课中,我们将学习如何从3SAT问题出发,证明一系列游戏、谜题和图论问题是NP难的。我们将看到如何将复杂的逻辑约束编码到各种看似简单的游戏机制中。

从3SAT到超级马里奥兄弟 🎮

上一节我们介绍了NP完全性证明的一般思路。本节中,我们来看看如何将3SAT问题归约到经典平台游戏《超级马里奥兄弟》。

证明的核心是构造三种“小工具”:

  • 变量小工具:迫使玩家选择向左或向右,对应变量的赋值。
  • 子句小工具:包含一个无敌星,玩家只有在该子句中至少有一个文字为真(即至少有一颗星星被放置)时,才能安全通过火焰棒。
  • 交叉小工具:确保不同路径的连线不会意外干扰。

整体构造是:玩家依次访问变量并做出选择,然后遍历所有子句。当且仅当对应的3SAT公式可满足时,玩家才能到达终点。


其他任天堂游戏的NP难度证明 🕹️

理解了超级马里奥兄弟的证明框架后,我们可以将其思路应用到其他游戏中。

以下是几个例子及其核心机制:

  • 超级马里奥世界:使用“问号砖块”和“龟壳”机制。提前访问三个位置之一可以触发砖块,将硬币变为可站立平台,从而通过子句区域。
  • 塞尔达传说:利用“钩锁”机制。变量选择通过钩锁跨越峡谷的方向来实现;子句满足则允许推动一个方块,从而创造钩锁目标。
  • 银河战士:使用“射击”和“球形态滚动”机制。在设置变量时访问子句区域可以提前清除怪物,之后才能以球形态安全通过。
  • 大金刚国度:使用“滚动攻击”和“发射桶”机制。变量选择是坠落方向;访问子句区域可以拾取桶并扔出以消灭蜜蜂,之后才能安全通过。
  • 宝可梦:抽象为“训练家”机制。红色(弱)训练家被击败后会停住,成为障碍;蓝色(强)训练家无法击败。通过选择与训练家“对战”或“对话”来设置变量,并利用训练家的视野和移动来构造子句和交叉。

这些证明的关键在于,利用游戏自身的物理规则和限制,精确地模拟3SAT的逻辑约束,并防止玩家利用游戏漏洞(如穿墙)来“作弊”。


一次性获胜问题与填字游戏 🧩

接下来,我们转向一些不同类型的难题。

哲学家足球
这是一种在围棋棋盘上用棋子进行的双人游戏。我们考虑其简化版本:判断当前玩家能否在一步之内获胜。这个问题被证明是NP完全的。

归约思路是构造一个巨大的网格。变量赋值对应于在网格中向右跳跃或向下再向右跳跃的路径选择。子句区域包含三列,只有当至少一列对应的变量赋值为真(即该列路径未被提前破坏)时,玩家才能向上跳跃通过该子句。所有子句都通过后,玩家即可跳跃到底边获胜。

密码算术
这是一种经典的谜题,例如 SEND + MORE = MONEY,每个字母代表一个唯一数字。对于任意进制B的广义密码算术问题,它是强NP完全的。

证明通过构造复杂的算术等式系统来实现:

  1. 首先建立基础,强制 0=01=1
  2. 构造变量小工具,使得 V_iV_i_bar 的值模4后互为 10,代表真和假。
  3. 构造子句小工具,使得三个变量之和模4必须为1、2或3(即至少一个为真)。
  4. 利用模128的余数来区分所有字母,并通过精心选择高位数(利用类似Fusion Tree的思想)确保所有数字互不相同,且总和在多项式范围内。

折纸的平面折叠问题 📄

给定一个折痕图(平面上的直线段图),并指定每条折痕是“峰折”还是“谷折”,判断是否存在一种方式将纸张折叠成平坦状态(所有面共面且不穿透)。

这个问题是NP完全的,归约自“非全相等3SAT”。

证明使用以下小工具:

  • 导线:一个简单的平行折痕组(褶折),其两种折叠方式代表真/假信号。
  • 分线/反相器:一个局部折痕图,强制一个输入信号产生一个同相和一个反相的输出信号。
  • 交叉:两组互不干扰的褶折,允许信号交叉。
  • 子句小工具(三角扭转):当三个输入信号不全相等时,可以局部平坦折叠;当三个信号全相等时,中心区域会产生无法解决的层叠循环约束。

通过将这些小工具以特定角度和方式连接,可以构造出等价于给定“非全相等3SAT”公式的折痕图。


顶点不相交路径与数字连线谜题 🔗

顶点不相交路径问题
给定一个图和若干顶点对 (s1, t1), (s2, t2), ...,判断是否存在连接每个顶点对的路径,且这些路径在顶点上互不相交。该问题在一般图上是NP完全的。

一个简单的归约来自3SAT:每个变量对应一条长路径,有两个选择(阻塞某些子句路径);每个子句对应一条路径,只有当至少一个相关文字路径未被阻塞时才能通过。

平面网格中的数字连线谜题
这是上述问题的特例:在一个矩形网格中,有些格子是数字(成对出现),有些是空白。需要找到连接所有数字对的、在格点上不相交的路径,并且要求路径覆盖所有格子。这个问题也是NP完全的。

证明需要精心设计网格上的小工具:

  • 变量小工具:用嵌套的“括号”结构实现二选一,并确保所有格子被覆盖。
  • 交叉小工具:更复杂的“括号”排列,允许一条路径穿过另一条路径的“通道”,同时保持覆盖性。
  • 子句连接:调整终端位置以解决奇偶性问题(在网格中,未被路径覆盖的区域面积必须为偶数)。

这个谜题历史悠久,可追溯到1897年Sam Lloyd的设计,现代以“Number Link”或“Flow Free”等游戏形式流行。


总结 📝

本节课我们一起学习了多种从3SAT问题出发的NP完全性证明。我们看到了如何将逻辑约束编码到:

  1. 电子游戏的物理规则和角色能力中。
  2. 棋盘游戏的一步获胜条件中。
  3. 算术谜题的数字等式中。
  4. 折纸的折叠约束中。
  5. 路径连接谜题的网格几何中。

这些证明展示了NP完全性理论的强大与普适性,也体现了设计归约时需要兼顾创造性、严谨性以及对问题细节(如奇偶性)的深入把握。核心思想始终是:利用目标问题的本地约束,来模拟3SAT中变量赋值与子句满足之间的全局逻辑关系。

006:电路可满足性问题

在本节课中,我们将学习电路可满足性问题的证明方法,并通过几个具体的益智游戏(如《点亮》、《扫雷》和《糖果粉碎传奇》)的NP完全性证明,来深入理解如何构建从电路SAT到这些问题的归约。我们将重点关注构建逻辑门、导线和交叉结构所需的组件,并探讨平面电路SAT的复杂性。

概述

我们首先回顾两种主要的3SAT证明风格:双轨逻辑和二进制逻辑。接着,我们将通过几个具体的NP完全性证明,展示如何利用电路SAT的框架来构建归约。这些证明将涉及构建导线、逻辑门、分线器、交叉结构等基本组件。

两种3SAT证明风格

在深入具体问题之前,区分两种构建3SAT归约的基本方法是有益的。这两种方法正交于电路视角与逻辑视角。

双轨逻辑:在这种风格中,变量具有两个输出。一个输出在变量设为真时激活,另一个在变量设为假时激活。两者不应同时激活。这为真和假的情况提供了独立的“轨道”或线路。我们之前看到的任天堂游戏证明就属于这种风格。

二进制逻辑:在这种风格中,导线在所有情况下都处于激活状态,但它可以处于两种不同的状态之一:真或假。它在单根导线中同时表示了两种可能性。我们在讨论折纸可平折性时看到的证明就是这种风格的一个例子。

这两种风格的主要区别在于信息如何表示和传递。在双轨逻辑中,信息被“拆分”到两根半导线中;而在二进制逻辑中,所有信息都编码在一根导线中。

《点亮》游戏的NP完全性证明

《点亮》是一款网格益智游戏。目标是放置灯泡,使得整个棋盘被照亮,同时没有两个灯泡能互相看见(即在同一行或列中,中间没有障碍物),并且满足障碍物上的数字约束(表示其四邻中应有几个灯泡)。

构建基本组件

以下是构建从电路SAT到《点亮》归约所需的关键组件:

导线组件:基本导线由交替的空白格序列构成,通过数字“1”强制交替选择,从而表示真或假信号。

转向组件:一个90度转弯结构,允许导线改变方向。

分线器/非门组件:一个结构既能复制信号(分线器),又能产生信号的否定(非门)。通过巧妙地布置数字约束,可以强制输出包括一个原信号和一个反相信号。

逻辑门组件:我们构建了一个能同时计算OR和XNOR的门。结合已有的非门,我们可以构造NOR门。由于NAND和NOR门都是功能完备的,这足以模拟任何布尔电路。

交叉组件:利用XNOR门,我们可以构造一个交叉结构,允许两条导线交叉而不互相干扰。这在平面布局中至关重要。

整体构造与NP完全性

通过组合导线、转向器、分线器、非门、OR/XNOR门以及交叉结构,我们可以将任何布尔电路嵌入到《点亮》的棋盘布局中。我们在电路输出端放置一个特殊的约束(例如一个“0”),强制最终输出必须为真,从而使谜题有解当且仅当原布尔电路可满足。
由于可以在多项式时间内验证一个灯泡放置方案是否满足所有规则,因此《点亮》属于NP类。结合NP难度的归约,我们证明《点亮》是NP完全的。

《扫雷》的两种复杂性证明

《扫雷》存在两个自然的问题:一致性问题(给定部分雷区,是否存在满足所有数字提示的布雷方案?)和推理问题(给定部分雷区,能否唯一确定所有地雷的位置?)。

《扫雷》一致性(NP完全)

导线组件:利用数字“1”强制交替选择,表示真/假信号。

分线器/非门/转向器:一个结构同时实现信号分线、取反和转向功能。

移位组件:用于调整导线长度,解决模3对齐问题。

与门组件:一个更复杂的结构,计算两个输入信号的逻辑与。

交叉与完备性:利用NAND门可以构造交叉结构。由于我们已有与门和非门,可以构造NAND门。因此,拥有NAND门就自动解决了平面性问题,无需单独的交叉组件。我们可以构建任何布尔电路,并在输出端强制为真。

一致性问题是NP完全的:给定一个布雷方案,很容易验证它是否满足所有数字提示;同时,我们可以将电路SAT归约到该问题。

《扫雷》推理(Co-NP完全)

推理问题要求玩家能否从给定信息中推导出所有地雷的位置(即解是否唯一)。这对应于电路不可满足性问题:无论变量如何赋值,电路输出总为假。

平衡构造:在此归约中,所有组件被设计为无论信号真值如何,使用的地雷总数相同。这是必要的,因为《扫雷》实例会给出地雷总数,这个信息不应泄露额外线索。

组件构建:需要构建导线、转向器、移位器、非门、或门、分线器等,并确保它们都是“平衡”的。

从Co-NP完全问题归约:我们将一个电路不可满足性问题实例,转化为一个《扫雷》盘面。在该盘面中,能否推断出某个特定方格有雷,等价于原电路是否不可满足(即所有赋值下输出均为假)。因此,《扫雷》推理问题是Co-NP完全的。

《糖果粉碎传奇》的NP完全性证明

《糖果粉碎传奇》是一款匹配消除游戏。移动是交换相邻糖果,如果形成三个或以上同行/同列,它们会消除,上方糖果下落,并可能引发连锁反应。

第一个证明(基于移动次数限制)

此证明假设连锁反应按从下到上的顺序处理。

变量组件:通过一次交换,可以选择让中间列或右侧列下落三格。这代表了变量的真值赋值。

连接组件:根据变量在子句中是正出现还是负出现,选择不同的上方结构。当变量赋值满足该子句时,会触发一个紫色糖果下落。

超级导线组件:一种鲁棒的导线,无论下方变量组件导致哪一列下落,都能正确传递触发信号。

子句组件:来自不同变量的导线(或半导线)汇聚于此。如果至少有一个输入满足子句,就会触发一个连锁反应,导致上方一列下落,从而激活“奖励”组件获得分数。

归约思路:我们创建大量子句副本,使得通过设置变量来满足多个子句获得的分数,远高于直接操作单个导线所能获得的分数。由于玩家移动次数有限(仅够设置每个变量一次),最优策略就是寻找一个满足所有子句的变量赋值,即求解原3SAT问题。

第二个证明(基于最大化分数,无移动限制)

另一个证明将“精确一3SAT”归约到游戏的一个决策问题:能否通过一系列移动获得某个特定的糖果?构造了一个庞大的布局,包含序列器确保变量按顺序设置,以及子句组件要求恰好一个变量满足子句时才能触发后续反应。这个构造非常复杂,但作者甚至实现了可玩的版本。

功能完备性

在电路构造中,拥有一个功能完备的门集合至关重要。一些关键点:

  • NAND和NOR:它们是仅有的二元运算符中自身就功能完备的。
  • 其他组合:例如,与门加上非门是功能完备的。蕴含加上常量假也是功能完备的。
  • 平面性:对于平面电路SAT,如果所有门都是NAND或NOR,则可以避免显式的交叉组件,因为可以利用这些门本身来构造平面交叉结构。这是一个有力的结论,简化了许多平面问题的归约。

总结

本节课中,我们一起学习了电路可满足性问题在证明NP完全性中的应用。我们通过《点亮》、《扫雷》和《糖果粉碎传奇》的具体例子,深入探讨了如何构建导线、逻辑门、分线器、交叉结构等基本组件,从而将电路SAT归约到各种益智游戏。我们还区分了双轨逻辑和二进制逻辑两种证明风格,并了解了功能完备性在电路构造中的重要性。最后,我们看到了平面电路SAT的威力:只要拥有如NAND或NOR这样的功能完备门集合,就可以避免构建复杂的交叉结构,从而简化许多在平面环境中问题的归约证明。这些技巧为下一节课学习平面3SAT及其变体的复杂性奠定了基础。

007:平面布尔可满足性问题

在本节课中,我们将学习平面3-SAT问题及其变体。我们将探讨如何将一般的3-SAT问题转化为平面版本,并了解这一转化在证明其他问题NP难时的重要性。课程内容将涵盖平面3-SAT的定义、其NP难性的证明,以及如何利用其平面性质简化对其他问题的归约。

平面3-SAT的定义与NP难性证明

平面3-SAT是3-SAT问题的一个特殊变体。在平面3-SAT中,我们不仅要求找到一组变量赋值以满足所有子句,还要求变量与子句之间的二分图是平面的。具体来说,我们为每个变量和每个子句创建一个顶点,并在变量顶点和包含该变量的子句顶点之间连边。如果该变量在子句中以否定形式出现,我们可以用颜色(如红色)标记该边。这个二分图必须是平面的,即可以在平面上绘制而没有任何边交叉。

上一节我们介绍了平面3-SAT的基本定义,本节中我们来看看如何证明它是NP难的。证明的核心思想是从一般的3-SAT问题归约到平面3-SAT。给定一个任意的3-SAT实例,其对应的变量-子句二分图可能不是平面的,会存在边交叉。我们需要构建一个“交叉 gadget”来模拟这些交叉,同时保持问题的可满足性等价。

以下是构建交叉 gadget的关键步骤:

  1. 对于原始图中每条交叉的边,我们用一个局部结构替换它。
  2. 这个局部结构引入了一些辅助变量(如图中的α, β, γ, δ)。
  3. 通过精心设计子句,确保辅助变量能正确传递原始变量的真值信息,并消除交叉。
  4. 最终,我们得到一个平面二分图,其可满足性当且仅当原始3-SAT实例可满足。

这个证明由Lichtenstein在1982年提出,它展示了如何在平面图中模拟交叉,从而确立了平面3-SAT的NP难性。

增强的平面性质:变量环

在证明了基本平面3-SAT的NP难性后,我们可以进一步要求更强的平面性质。一个非常有用的增强是要求所有变量可以连接成一个环,并且这个环与变量-子句二分图共同构成的图仍然是平面的。

上一节我们看到了如何消除边交叉,本节中我们来看看如何构造这样的变量环。其思路是利用之前交叉gadget的变体。我们不仅用gadget处理边交叉,还在变量路径需要“转弯”或连接以形成环的地方插入gadget。通过像打印机扫描线一样来回遍历所有变量顶点,我们可以构造一条不交叉的路径,最终首尾相连形成环。因此,存在变量环的平面3-SAT问题也是NP难的。

这个性质非常有用,因为在许多归约中(例如涉及机器人移动或顺序访问变量的游戏),我们需要一条可以遍历所有变量而不引起交叉的路径。拥有这样一个现成的变量环简化了这些归约。

平面单调正交3-SAT

我们可以对平面3-SAT施加更多限制,得到一个结构更规整但仍然NP难的问题变体:平面单调正交3-SAT。

上一节我们讨论了变量环,本节中我们来看看这个更具结构性的变体。在这个变体中:

  • 所有变量被表示为X轴上的一条线段。
  • 所有子句被表示为另一条水平线段。
  • 变量和子句之间通过垂直线段连接。
  • 最关键的限制是单调性:所有位于X轴上方的子句必须完全由正文字组成(即所有变量都以非否定形式出现),所有位于X轴下方的子句必须完全由负文字组成(即所有变量都以否定形式出现)。

以下是证明平面单调正交3-SAT为NP难的简化思路:

  1. 从一个平面正交3-SAT实例开始(它已经是平面的,且变量和子句按上述方式排列)。
  2. 对于任何出现在“错误”侧的文字(例如,一个否定文字出现在X轴上方),我们使用一个简单的复制和取反gadget。
  3. 这个gadget会复制变量,并强制原始变量与其副本取反后的值相反,从而将否定文字“移动”到正确的侧。
  4. 通过处理所有这样的文字,我们最终得到一个所有上方子句全为正、下方子句全为负的实例。

这个变体之所以强大,是因为它的结构非常清晰(所有连接都是水平或垂直的),并且单调性分离,这使得它在归约到某些几何或网格问题时特别方便。

平面非全等3-SAT的多项式可解性

并非所有平面3-SAT的变体都是NP难的。一个重要的例外是平面非全等3-SAT。

上一节我们看到了NP难的变体,本节中我们来看一个多项式时间可解的变体。在非全等3-SAT中,每个子句要求其三个文字不全取相同的真值(即不允许全真或全假)。当对应的变量-子句二分图是平面时,这个问题可以在多项式时间内解决。

证明的关键是将其归约到平面图的最大割问题,而平面图的最大割是多项式时间可解的。归约方法如下:

  • 变量gadget:用一个偶数长度的循环来表示一个变量及其否定。为了最大化割的边数,这个循环必须交替着色,这对应了变量真与其否定假必须取值相反。
  • 子句gadget:每个非全等子句用一个三角形表示。当三角形三个顶点颜色不全相同时(即非全等条件满足),割中能包含特定数量的边。
  • 通过设置适当的目标割规模,可以确保满足所有子句的非全等条件当且仅当存在一个达到该目标的割。

由于平面图最大割存在多项式时间算法,因此平面非全等3-SAT也是多项式时间可解的。这提醒我们,在利用平面性质时,需要仔细区分哪些约束组合会导致NP难,哪些不会。

从平面3-SAT出发的归约示例

平面3-SAT及其变体作为起点,可以用于证明许多其他平面问题的NP难性。以下是两个经典示例:

上一节我们区分了难易变体,本节中我们来看看如何利用难的变体去证明其他问题。

1. 平面顶点覆盖
顶点覆盖问题要求选择最少的顶点,使得图中每条边至少有一个端点被选中。其平面版本是NP难的,可以通过从平面3-SAT归约来证明。

  • 变量gadget:用一个偶数环表示。在有限的预算下,最优覆盖必须是交替选择顶点,这对应了变量的真/假赋值。
  • 子句gadget:用一个三角形表示。覆盖一个三角形至少需要两个顶点。如果与三角形相连的三个变量gadget都未提供覆盖(即对应变量赋值为假),则仅凭两个顶点无法覆盖三角形的所有边,从而导致矛盾。这强制了每个子句至少有一个文字为真。

2. 平面有向哈密顿环
哈密顿环问题要求找到一条访问每个顶点恰好一次的环。其平面有向图版本是NP难的。

  • 变量gadget:用一条之字形路径表示,路径的方向选择对应变量的真值。路径上的顶点必须全部被访问,这强制了交替模式,从而产生多组一致的文字副本。
  • 子句gadget:通过添加额外的边,使得哈密顿环只有当至少一个相关变量选择特定方向(即文字为真)时,才能访问子句顶点而不违反哈密顿性。
  • 利用平面3-SAT中存在的变量环,可以将所有gadget连接成一个大的平面有向图,其存在哈密顿环当且仅当原3-SAT公式可满足。

这些例子表明,平面3-SAT提供了一个结构良好的基础问题,使得归约构造相对直观,无需再处理复杂的交叉结构。

总结

本节课中我们一起学习了平面布尔可满足性问题的多个方面。我们首先定义了平面3-SAT并证明了其NP难性,关键在于构造能模拟边交叉的gadget。接着,我们探讨了更强的平面性质,如存在变量环,这在实际归约中非常有用。然后,我们介绍了结构更规整的平面单调正交3-SAT,并说明了其NP难性。重要的是,我们也指出了例外情况:平面非全等3-SAT是多项式时间可解的。最后,我们通过平面顶点覆盖和平面有向哈密顿环的例子,展示了如何从平面3-SAT出发归约以证明其他平面问题的NP难性。掌握这些平面可满足性问题的变体及其性质,是设计NP难性证明特别是针对平面或几何问题时的有力工具。

008:哈密尔顿性

在本节课中,我们将学习哈密尔顿性问题,包括哈密尔顿回路和哈密尔顿路径。我们将探讨这些问题的NP完全性,并展示如何通过一系列归约,将问题限制在越来越特殊的图类中(如平面图、二分图、网格图)来证明其难度。课程还将介绍这些理论结果在几何问题(如欧几里得旅行商问题)和游戏(如《卡坦岛》)中的应用。

哈密尔顿性问题概述

哈密尔顿回路是指访问图中每个顶点恰好一次的回路。哈密尔顿路径则是访问每个顶点恰好一次的路径。这两个问题在一般图中都是NP完全的。

哈密尔顿问题起源于威廉·哈密尔顿在1857年提出的一个游戏。该游戏在一个十二面体的对偶图(二十面体)上进行,目标是找到一个哈密尔顿回路。

从3SAT归约到平面有向最大度3图

上一节我们介绍了哈密尔顿问题的基本概念。本节中,我们来看看如何从经典的3SAT问题归约到哈密尔顿回路问题,并最终得到一个在平面、有向、最大度3的图中依然困难的结果。

核心思想是使用三种构件来模拟3SAT公式:

  1. 变量构件:使用一个“异或”结构来确保一个布尔变量及其否定值的一致性。
    • 公式:对于变量 x 及其副本 x',构件强制 (x 为真) XOR (x' 为真)
  2. 子句构件:确保在哈密尔顿回路中,至少有一个对应于子句中文字的连接被“激活”。
  3. 交叉构件:由于我们需要平面图,当表示变量和子句的连线交叉时,需要此构件来保持平面性且不改变问题本质。

通过组合这些构件,我们可以将任何3SAT公式实例转化为一个平面、有向、最大度3的图,使得该图存在哈密尔顿回路当且仅当原3SAT公式可满足。

归约到平面二分最大度3图

上一节我们得到了平面有向最大度3图的哈密尔顿回路是NP难的。本节中,我们通过一个非常简单的归约,将其转化为无向、平面、二分、最大度3图的哈密尔顿回路问题。

归约的关键在于利用二分性来模拟有向性。在原图的有向边 u -> v 中,我们将其替换为一个由三个顶点构成的小路径。通过精心设置顶点颜色(二分图着色),我们可以强制哈密尔顿回路以特定方向遍历这条路径,从而模拟原有的有向边。

具体操作是:对于每个有向边,我们添加一个新顶点,将其拆分为两条边,并确保在二分着色下,哈密尔顿回路只能从 u 端进入,从 v 端离开,从而编码了方向信息。

归约到网格图

前面我们已将问题限制在平面二分最大度3图。本节中,我们进一步将其归约到网格图的哈密尔顿回路问题,这在计算几何中非常有用。

网格图由二维方格点阵的一个子集构成,两点间有边当且仅当它们是单位距离的邻居。

归约步骤如下:

  1. 网格嵌入:将给定的平面二分最大度3图,以一种保持二分着色(奇偶性)的方式画在网格上。这可以通过标准正交网格绘图算法实现,并通过局部“扭动”调整顶点的颜色。
  2. 构件设计
    • 边构件:用一条2×n的“触手”走廊模拟原图的一条边。哈密尔顿回路有两种方式遍历它:之字形穿过(模拟使用该边)或直接走到尽头折返(模拟不使用该边,并顺带访问路径上的所有顶点)。
    • 顶点构件:用一个3×3的网格点块模拟原图的一个顶点。它有四个角点用于连接边构件。关键性质是:从任何一个角点进入,都可以访问完所有连接边构件的接入点后,从另一个指定的角点离开。
  3. 奇偶性匹配:通过将边构件的连接区分为“全长连接”和“单点连接”,并与顶点构件的特定颜色(黑/白)配对,确保整个构造的奇偶性一致,从而保证归约的正确性。

最终,我们得到一个网格图,其存在哈密尔顿回路当且仅当原平面二分最大度3图存在哈密尔顿回路。特别地,如果网格图中没有“洞”(即所有面都是单位正方形或外部面),则称为实心网格图,该情况下的哈密尔顿回路问题存在多项式时间算法。我们的归约产生的是有洞的网格图,因此是NP难的。

应用:欧几里得旅行商问题与游戏

网格图哈密尔顿问题的硬度结果有直接而漂亮的应用。

欧几里得旅行商问题:给定平面上n个点,求访问所有点恰好一次的最短回路。其判定形式(是否存在长度 ≤ L 的回路)是NP难的。

  • 证明:从网格图哈密尔顿回路问题归约。给定一个网格图,将它的所有顶点视为欧几里得TSP的输入点集。设定目标长度L等于顶点数n。在网格图中,相邻点距离为1,不相邻点距离至少为√2 > 1。因此,存在长度恰好为n的TSP回路,当且仅当该回路只遍历距离为1的边,即当且仅当原网格图存在哈密尔顿回路。

平台游戏与《卡坦岛》

  • 平台游戏:许多游戏(如《超级马里奥兄弟》)涉及在网格状场景中收集所有物品。通过将网格图顶点设为需要收集的硬币,并设置步数限制等于硬币数,可以证明判断能否在规定步数内收集全硬币是NP难的。
  • 《卡坦岛》中的“最长道路”:在游戏《卡坦岛》中,玩家通过建造道路竞争“最长道路”奖励。我们可以将网格图建模为游戏版图,对手的建筑作为障碍物。那么,判断在当前局面下,能否通过建造道路获得一条超过对手长度的道路(即哈密尔顿路径),是NP难的问题。这甚至是一个“0步将死”问题——判断当前是否已经获胜也是NP难的。

扩展到其他网格与问题

网格图的硬度证明可以扩展到其他类型的网格和变种问题。

最大度3网格图:标准网格图顶点度最大为4。我们之前的归约产生了度数为4的顶点。通过修改边构件(转角处)和顶点构件(将3×3块替换为两个由路径连接的“哑铃”状结构),可以进一步证明最大度3的网格图上的哈密尔顿回路问题也是NP难的。

三角形网格与六边形网格

  • 三角形网格:类似的方法可以证明平面、最大度4或5的三角形网格图上的哈密尔顿回路是NP难的。
  • 六边形网格:六边形网格天然最大度为3。证明其上的哈密尔顿回路是NP难的构造更为复杂,但同样可行。这直接证明了《卡坦岛》“最长道路”问题的计算难度。

其他谜题与问题

  • 数回:通过用数字约束模拟网格图的顶点和边,可以证明数回谜题是NP难的。
  • 造桥:通过设置顶点度数要求来模拟哈密尔顿回路,可以证明该谜题是NP难的。
  • 割草/铣削问题:在机器人路径规划中,“割草”问题(覆盖一个区域,允许走出区域)和“铣削”问题(必须严格在区域内移动)都可以归约到网格图哈密尔顿路径问题,从而证明是NP难的。
  • 最小转弯铣削:在3D打印等应用中,有时最小化路径的转弯次数比最小化总长度更重要。通过将网格图顶点扩展为必须环绕的小方块,可以证明最小转弯数问题也是NP难的。

总结

本节课中我们一起学习了哈密尔顿性问题的丰富理论。我们从基本的哈密尔顿回路和路径出发,通过一系列精巧的归约,证明了即使在非常受限的图类中,如平面、二分、最大度3的图,乃至网格图及其变种(三角形、六边形网格)中,该问题仍然是NP完全的。这些硬度结果为理解众多计算几何问题(如欧几里得TSP、路径规划)和流行游戏/谜题(如《卡坦岛》、数回、造桥)的内在计算复杂性提供了坚实的基础。哈密尔顿问题作为一个强大的工具,常被用作证明其他问题难度的起点。

010:10. 不可逼近性概述

在本节课中,我们将学习近似算法的基础概念,包括优化问题的定义、近似比、以及用于证明近似难度(不可逼近性)的核心工具——近似保持归约。我们将重点理解如何区分“可任意接近最优解”的问题(PTAS)和“只能达到某个常数倍近似”的问题(APX),并介绍几种关键的归约类型。

优化问题与近似算法

上一节我们介绍了算法下界的一般概念。本节中,我们来看看当精确求解NP难问题不可行时,如何退而求其次,寻找近似解。

首先,我们需要将决策问题的框架扩展到优化问题。一个优化问题包含:

  • 实例集合:所有可能的输入。
  • 可行解集合:对于给定实例,所有允许的输出。
  • 成本函数:为每个可行解分配一个非负的成本值。
  • 目标:最小化或最大化成本。

一个NP优化问题 需要满足:实例和可行解都能在多项式时间内被识别,且成本函数是多项式时间可计算的。对于这类问题,可以定义其对应的决策版本(例如,对于最小化问题:“是否存在成本 ≤ k 的解?”),该决策问题属于NP。

由于精确求解NP优化问题通常是困难的,我们转向寻找近似算法。对于一个最小化问题,如果一个算法对任何实例 x 产生的解的成本满足 cost(ALG(x)) / cost(OPT(x)) ≤ C,则称该算法为 C-近似算法。这里 C ≥ 1。对于最大化问题,通常的定义是 cost(OPT(x)) / cost(ALG(x)) ≤ C(此时 C ≥ 1),或者等价地 cost(ALG(x)) ≥ (1/C) * cost(OPT(x))

近似复杂度类

基于可达到的近似比,我们可以对NP优化问题进行分类:

  • PTAS:多项式时间近似方案。对于任意固定的 ε > 0,都存在一个 (1+ε)-近似算法(运行时间关于输入规模是多项式,但关于 1/ε 可以是任意函数)。
  • APX:存在某个常数 C > 1,使得问题有 C-近似算法。
  • Log-APX:存在 O(log n)-近似算法。
  • Poly-APX:存在 n^ε-近似算法(对于某个常数 ε < 1)。

显然,PTAS ⊆ APX。若 P ≠ NP,则该包含关系是严格的,即存在属于APX但不属于PTAS的问题。

近似保持归约与不可逼近性

为了证明一个问题是APX难(即不存在PTAS,除非P=NP),我们需要使用近似保持归约。这类归约比NP归约更强,它不仅要将一个问题的实例转化为另一个问题的实例,还要能将后者的解高效地转化回前者的解,并保证近似比不会恶化太多。

以下是几种重要的归约类型:

  • PTAS归约:如果问题B有PTAS,则通过该归约,问题A也有PTAS。这用于证明问题的PTAS不可存在性。
  • AP归约:近似比的变化是线性的。如果B有 f(n)-近似算法,则A有 O(f(n))-近似算法。
  • L归约:这是一种更易于使用的归约,它蕴含AP归约。一个从问题A到问题B的L归约包含两个多项式时间可计算的函数 FG,并满足两个条件:
    1. 最优值有界OPT_B(F(x)) ≤ α * OPT_A(x),其中 α 是常数。
    2. 误差有界:对于 F(x) 的任何可行解 y',其对应的A的解 y = G(x, y') 满足 |cost_A(y) - OPT_A(x)| ≤ β * |cost_B(y') - OPT_B(F(x))|,其中 β 是常数。

L归约非常强大,它甚至允许在最小化和最大化问题之间进行归约。

经典的APX完全问题

通过L归约,我们可以建立一系列APX完全问题(即APX中最难的问题)。以下是部分重要问题及其已知的最好近似结果:

  • Max 3SAT:给定一个3-CNF公式,最大化可满足的子句数。它有常数近似比,但没有PTAS。
  • Max 3SAT(3):每个变量恰好出现3次的Max 3SAT。同样是APX完全的。证明中使用了扩展图来强制变量的多个副本取值相同,而不显著增加误差。
  • 独立集(度数有界):在最大度数为常数的图中寻找最大独立集。有常数近似算法,且是APX完全的。可以从Max 3SAT(3)规约得到。
  • 顶点覆盖(度数有界):在最大度数为常数的图中寻找最小顶点覆盖。有2-近似算法,且是APX完全的。可以通过与独立集的“互补”关系,从独立集问题L归约得到。
  • 支配集:在图中寻找最小的支配集。在度数有界图中是APX完全的,可以从顶点覆盖问题规约。

总结

本节课中我们一起学习了近似算法理论的基础。我们定义了优化问题、近似比和各类近似复杂度类(PTAS, APX)。为了证明一个优化问题不存在PTAS(即具有不可逼近性),我们引入了近似保持归约的概念,特别是强大且实用的L归约。最后,我们看到了如何利用L归约,从诸如Max 3SAT这样的基础问题出发,证明一系列经典图优化问题是APX完全的,从而确定了它们近似能力的下界。这为我们理解哪些问题可以“几乎最优”地近似,哪些问题只能“大致”近似提供了理论基础。

011:不可近似性示例

在本节课中,我们将继续探讨近似算法的下界,特别是通过L归约来证明问题的APX完全性。我们将回顾L归约的定义,并通过一系列具体的归约示例,展示如何将已知的APX完全问题(如Max 3SAT)归约到其他优化问题(如Max Cut、边匹配拼图等),从而证明这些问题的不可近似性。课程最后将简要介绍复杂度层次中高于APX的类别。

L归约回顾

上一节我们介绍了多种归约,特别是PTAS归约、AP归约和L归约。本节我们将主要使用L归约。

L归约旨在将问题A归约到问题B。给定问题A的一个实例X,我们通过函数F将其转换为问题B的一个实例X'。然后,假设我们以某种方式获得了X'的一个解Y'(属于B的解空间)。在归约中,我们需要能够通过函数G将任何这样的解Y'映射回问题A的实例X的一个解Y。

这需要满足两个条件:

  1. 对于F,X'的最优解值最多是X的最优解值的某个常数倍。即,我们不会过度放大最优解的值。
    公式:OPT_B(X') ≤ α * OPT_A(X)
  2. Y的成本与X的最优解之间的绝对差值,应在Y'的成本与X'的最优解之间的绝对差值的某个常数倍之内。这意味着,如果我们得到一个非常接近X'最优的解Y',那么我们产生的解Y也将非常接近X的最优解。我们希望在加法意义上保持这种关系。
    公式:|cost_A(Y) - OPT_A(X)| ≤ β * |cost_B(Y') - OPT_B(X')|

这种加法意义上的保持将意味着在乘法意义上也是良好的。我们上次证明了对于最小化问题,如果你在B这边有一个常数因子近似,你将在A这边保留一个常数因子近似,并且只会损失一个合理的因子。同样,如果你能在B这边得到一个PTAS(任意好的近似),你在A这边也能得到一个PTAS。

需要注意的是,对于最大化问题,L归约并不完全意味着AP归约,因为存在非线性项。但对于最小化问题,L归约确实意味着AP归约。

从独立集到Max 2SAT

我们之前证明了Max E3SAT-5(每个子句恰好3个不同文字,每个变量恰好出现5次)是APX完全的。基于Max 3SAT是APX完全的假设,我们将其归约到了Max 3SAT-3(每个变量最多出现3次),然后又归约到了有界度图中的独立集、顶点覆盖和支配集等问题。

现在,让我们进行更多的APX归约。下一个问题是Max 2SAT。在优化世界中,2SAT和3SAT的区别并不那么重要,事实证明Max 2SAT也将是APX完全的。

我们将从度数为3的图中的独立集问题出发,进行一个L归约到Max 2SAT。

归约方法如下:

  • 对于每个顶点V,我们创建一个子句:V。这表示我们希望尽可能地将V放入独立集中。
  • 对于每条连接V和W的边,我们创建一个子句:¬V ∨ ¬W。这表示我们不希望V和W同时出现在独立集中。

这样,我们就模拟了独立集。给定变量赋值(每个变量对应一个顶点是否在独立集中),我们可以声称存在一个最优解满足所有的边约束子句。因为违反一条边约束(即V和W同时为真)只会让你从顶点子句VW中获得一点好处,但却可能因为违反多条边约束而损失更多。因此,总可以转换为一个满足所有边约束且不损失最优性的解。此时,解就对应了一个合法的独立集。

于是,Max 2SAT实例的最优解值等于独立集实例的最优解值加上总边数。由于我们假设图是有界度的,边数是顶点数的线性倍,因此独立集的最优解值也是顶点数的线性倍(Ω(n))。这样,添加的边数不会使OPT过度放大,满足L归约的第一个条件。第二个条件中,常数β为1。因此,Max 2SAT是APX难的。

有趣的是,Max E2SAT-3(每个变量恰好出现3次)也是APX完全的。

从Max 2SAT到Not-All-Equal 3SAT

接下来,我们归约到Not-All-Equal 3SAT (NAE-3SAT)。我们将从刚证明为APX完全的Max 2SAT出发,进行一个严格归约(比L归约更强)。

归约非常简单。假设我们从Max 2SAT开始,所有子句形如X ∨ Y(文字可能被否定)。我们将其转换为NAE-3SAT子句:NAE(X, Y, A),其中A是一个在每个子句中都出现的新变量。

Not-All-Equal具有很好的对称性。通过可能的全局位翻转,我们可以假设A = 0。一旦A=0,NAE(X, Y, 0)就意味着X和Y不能同时为0,这等价于X ∨ Y。因此,最优解值得以保留。任何解都可以先通过翻转使得A=0,然后直接提取X和Y的赋值,解的大小和最优解都完全保持不变。这是一个严格归约,因此NAE-3SAT也是APX完全的。

从NAE-3SAT到Max Cut

下一个问题是Max Cut(最大割)。给定一个图,希望将其划分为两部分,以最大化两部分之间的边数。这等价于Max Positive 1-in-2SAT,或者Max 2-XOR-SAT。

我们将从Max NAE-3SAT进行归约。这个归约的核心是,可以用一个三角形上的割来表示一个NAE-3SAT子句。在三角形中,如果三个顶点颜色全部相同,则没有割边;如果颜色不全相同,则恰好有两条割边。对于二元子句,可以用一个二边形(一条边)类似表示。

我们还需要处理变量的否定。我们为每个变量及其否定形式构建一个变量 gadget:用许多平行边连接X¬X。如果变量出现k次,我们就用2k条平行边。在最优解中,我们可以论证X¬X必然在割的不同侧,因为如果它们在同侧,你会损失这2k条边的收益,而翻转其中一个最多只会影响k个子句(每个最多损失2点),净收益非负。因此,可以假设变量 gadget 被正确设置,从而整个问题归约到了NAE-3SAT。

这个归约得到的图也是有界度的(基于变量出现次数,可以限制为3)。因此,Max Cut在度数为3的图上也是APX完全的。

这一系列归约展示了我们熟悉的许多NP完全问题,在前面加上“Max”优化后,都变成了APX完全问题(对于有界度图,它们都有常数因子近似,但没有PTAS)。

CSP问题的近似性分类定理

在可满足性(SAT)领域,有Schaefer二分定理,它描述了哪些类型的子句集合使得SAT问题是多项式时间可解的。

对于优化版本(约束满足问题,CSP),存在一个类似的、但更复杂的分类定理,它详尽地描述了对于不同类型的子句函数族,其对应的最大化/最小化约束满足或最大化/最小化真变量数问题的近似复杂度。定理将问题分为四类:Max CSP、Min CSP、Max Ones、Min Ones。对于每一类,都给出了多项式时间可解、APX完全、Poly-APX完全(近似因子为n^(1-ε))或不可行(找到可行解即NP难)的完整条件。这个定理非常强大,如果你遇到任何类似CSP的问题,可以查阅此定理进行分类。

从Max 3DM到边匹配拼图

现在,让我们通过归约,接触到我们在早期课程中见过的“边匹配拼图”问题。我们有方形瓦片,边上有颜色,目标是最大化满足的边匹配约束数量(相邻边颜色相同)。

首先,我们需要另一个APX完全问题作为起点:三正则三边可着色图中的最大独立集。我们可以将其等价于一个三维匹配(3DM)的变体:Max 3DM-2,即选择尽可能多的三元组,使得它们在A、B、C三个坐标上都不重复,且每个元素恰好出现在两个三元组中。

归约思路是:用三种边颜色代表A、B、C集合,图的每个顶点(关联三种颜色的边各一条)对应一个三元组。选择顶点(三元组)构成独立集,等价于选择的三元组集合没有共享元素。

接下来,我们从Max 3DM-2归约到边匹配拼图。构造的核心思想是:每个三元组用一组特定的瓦片表示,这些瓦片在拼图的底行强制形成特定的颜色序列。如果你选择该三元组,可以在顶行放置一组“完美匹配”的瓦片,获得满分。如果未选择该三元组,则必须使用一些“填充”瓦片,这些瓦片会产生一个固定的不匹配惩罚。通过精心设计瓦片集合,使得总得分等于一个基础分减去未选择的三元组数量。因此,最大化拼图得分等价于最大化选中的三元组数量,这是一个L归约。

高于APX的复杂度层次

我们主要关注了没有PTAS但有常数因子近似的APX完全问题。需要指出,存在一些常数因子可近似、没有PTAS、但又不是APX完全的问题,称为APX中间问题。例如装箱问题、最小最大度生成树、最小边着色等。

对于对数因子近似,最经典的问题是集合覆盖支配集,它们可以互相L归约,并且已知具有Θ(log n)的近似上界和下界,是“log-APX”完全问题的代表。许多问题的不可近似性可以归约为集合覆盖的难度。

在更高的层次上:

  • Poly-APX完全:近似因子为n^(1-ε)。代表问题是最大团最大独立集
  • Exp-APX完全:近似因子需要达到指数级。代表问题是非度量旅行商问题(TSP),其中边权可以是指数级大。
  • NPO PB完全:问题中数字是多项式有界的,但优化本身极其困难,例如在布尔公式中最大化真变量权重(权重多项式有界)。
  • NPO完全:最困难的类别,包含所有NP优化问题中近似性最难的一类,例如最小独立支配集、最长诱导路径等。

这些分类给出了不同难度级别的标准问题,用于证明新问题的近似难度下界。

总结

本节课我们一起学习了如何使用L归约来证明优化问题的APX完全性。我们从Max 2SAT出发,通过一系列归约证明了Not-All-Equal 3SAT、Max Cut等问题的APX难度,并了解了如何将Max 3DM归约到边匹配拼图问题。最后,我们概览了高于APX的复杂度层次,包括对数近似、多项式近似、指数近似以及更难的NPO完全类别的代表性问题。这些归约技术和复杂度分类为我们理解优化问题的内在计算难度提供了强大的工具。下一节课,我们将探讨另一种证明不可近似性的方法:间隙保持归约。

012:差距与PCP

在本节课中,我们将学习一种证明优化问题不可近似性的不同方法,称为“差距问题”。我们将探讨差距保持归约,并在此过程中证明最大3SAT问题的最优下界以及其他有趣的结果。

差距问题概述

上一节我们介绍了近似算法和不可近似性的概念。本节中,我们来看看一种将优化问题转化为决策问题的新方法:差距问题。

差距问题是一种将优化问题转化为决策问题的方式。我们已知一种方法:对于一个NPO优化问题,可以将其转化为一个明显的决策问题(例如,对于最小化问题,判断最优值是否至多为K),这通常是NP完全的。但从可近似性的角度来看,我们希望得到更有用的结果。

其核心思想是定义一个不同的问题:我们不是简单地判断最优值是否至多为K,而是要区分以下两种情况:

  • 最优值至多为K。
  • 最优值至少为C × K(对于某个值C)。

这里的类比对象是C-近似算法。C不一定必须是常数,它可以是n的函数(例如log n, n^ε)。对于最小化问题,这里存在一个介于K和C×K之间的“差距”。关键在于,我们被“承诺”输入实例必定属于这两种类别之一。我们需要判断它属于哪一类。我们称前一种为“是”实例,后一种为“否”实例。

如果某个问题的C-差距版本是NP难的,那么对该问题进行C-近似也是NP难的。这让我们可以通过思考决策问题的NP难性来证明不可近似性结果,这在概念上更简洁。

PCP定理简介

接下来,我们介绍一个与差距问题直接相关的重要概念:PCP定理。

PCP代表“概率可检查证明”。这涉及到另一个复杂性类别,通常写作PCP[O(log n), O(1)],我们简称为PCP。在PCP中,问题的“是”实例拥有多项式长度的证书(就像NP一样),但存在一个验证算法,它仅使用O(log n)的随机位和常数运行时间,就能以高概率检查证书的正确性。

具体来说:

  • 对于“是”实例和正确的证书,算法总是接受(无错误)。
  • 对于“否”实例,无论提供什么证书,算法以至少某个常数概率拒绝。

PCP定理指出:NP = PCP。这意味着所有NP问题都存在这样的高效概率验证算法。我们不会证明这个定理,但会看到它如何直接导致差距问题的NP难性。

从PCP到差距硬度

PCP定理与差距问题紧密相连。首先,考虑最大3SAT的差距版本:区分“所有子句可满足”(最优值=1)和“最多有常数比例A的子句可满足”(最优值≤ A)的实例。我们声称这个问题在PCP类中。

验证算法可以这样设计:证书是一个变量赋值。算法随机选择一个子句(使用O(log n)随机位),检查该子句在证书下是否满足(常数时间)。如果实例完全可满足,算法总是接受;如果最多只有比例A的子句可满足,则算法拒绝的概率至少为(1-A)。因此,该差距问题属于PCP。

更重要的是其逆命题:如果(普通的)3SAT在PCP中(根据NP=PCP,这是真的),那么其差距版本就是NP难的。论证如下:

  1. 利用3SAT的PCP算法,该算法在常数时间内运行。
  2. 该算法可以表示为一系列(由随机位选择的)常数大小的逻辑公式。
  3. 由于只有O(log n)随机位,可能的随机选择是多项式多个。
  4. 我们构造一个新公式:它是所有可能随机选择对应的公式的合取
  5. 如果原3SAT公式可满足,则新公式100%可满足(是实例)。
  6. 如果原公式不可满足,根据PCP定义,至少有一个常数比例的随机选择会导致验证失败,这意味着新公式中至少有一个常数比例的子句是不可满足的(否实例)。

这样,我们就将普通的3SAT归约到了其差距版本,从而证明了差距版本的NP难性。这本质上是一个“差距产生”归约,它从无差距的问题产生了常数差距。

差距保持归约与最大E3SAT的紧下界

一旦我们有了差距硬度结果,就可以通过“差距保持归约”将其传播到其他问题,从而获得更强的不可近似性下界。

考虑从“最大E3线性方程”问题(每个方程形如 x_i XOR x_j XOR x_k = 0/1,恰有三个变量)到“最大E3SAT”问题(每个子句恰有三个文字)的归约。已知前者具有 (1/2+ε, 1-ε) 的差距NP难性(即区分“至少(1-ε)比例方程可满足”和“至多(1/2+ε)比例方程可满足”是NP难的)。

以下是归约方法:将每个线性方程替换为4个特定的3SAT子句。分析表明:

  • 如果方程可满足,则对应的4个子句全部可满足。
  • 如果方程不可满足,则对应的4个子句中恰好有3个可满足。

现在,我们进行差距分析:

  • 是实例:假设有M个方程,至少 (1-ε)M 个可满足,至多 εM 个不可满足。在3SAT实例中,满足的子句数至少为 4*(1-ε)M + 3*εM = (4 - ε)M
  • 否实例:至多 (1/2+ε)M 个方程可满足,至少 (1/2-ε)M 个不可满足。满足的子句数至多为 4*(1/2+ε)M + 3*(1/2-ε)M = (7/2 + ε)M

3SAT实例总子句数为 4M。因此,我们得到了一个从 (7/8 + ε', 1 - ε') 差距的归约(其中 ε' 为某个小常数)。这意味着区分“满足至少(1-ε')比例子句”和“满足至多(7/8+ε')比例子句”是NP难的。因此,最大E3SAT不存在优于 7/8 的近似算法(除非P=NP)。这与随机赋值算法的性能匹配,从而得到了一个紧下界。

标签覆盖与更强的不可近似性

最后,我们介绍一个作为许多不可近似性结果起点的强大问题:标签覆盖(Label Cover)。它有两个版本:最大可重复覆盖(Max Rep)和最小可重复覆盖(Min Rep)。

问题定义如下:给定一个二分图,左右顶点集各自被划分为K个组。目标是选择顶点的子集。

  • Max Rep中,约束是每组中必须恰好选一个顶点,目标是最大化被“覆盖”的超边数(超边连接两个组,如果所选顶点在该组间有边相连,则被覆盖)。
  • Min Rep中,约束是必须覆盖所有超边,目标是最小化所选顶点的总数。

对于这些问题,存在极强的差距硬度结果:

  • Max Rep 具有 (ε, 1) 差距的NP难性(即区分“覆盖所有超边”和“最多覆盖ε比例超边”是NP难的)。
  • 更强的结果指出,对于某些常数c,如果存在解决 (1/(log n)^c, 1) 差距的 n^{O(k)} 时间算法,则NP ⊆ DTIME(n^{O(k)})。这意味着,如果假设NP没有拟多项式时间算法,那么Max Rep甚至不存在 1/2^{log^{1-ε} n} 因子的近似算法。

许多优化问题(如有向Steiner森林、节点加权Steiner树)的近似下界,都是通过从标签覆盖问题进行差距保持归约来证明的。

唯一游戏猜想

作为尾声,我们提及一个著名的猜想:唯一游戏猜想。这是标签覆盖的一个特例,其中每组间的边构成一个匹配(即左组的一个选择唯一决定了右组中能与之匹配的选择)。

唯一游戏猜想断言:对于任意常数ε > 0,(ε, 1-ε) 差距的唯一游戏问题是NP难的。这个猜想尚未被证明或证伪,但它在近似算法领域极具影响力。如果该猜想成立,那么对于一大类约束满足问题(CSP),其最佳近似比恰好等于某个特定半定规划松弛的“整数间隙”。这为理解近似算法的极限提供了一个统一而优美的框架。

总结

本节课中,我们一起学习了:

  1. 差距问题:一种通过承诺输入存在性能差距来刻画优化问题难度的决策问题形式。
  2. PCP定理:证明了NP = PCP,为产生差距硬度提供了关键工具。
  3. 差距保持归约:如何将一个问题上的差距硬度转移到另一个问题,从而证明其不可近似性。我们以此证明了最大E3SAT的 7/8 近似下界是紧的。
  4. 标签覆盖:一个具有极强差距硬度的问题,是许多不可近似性结果的源头。
  5. 唯一游戏猜想:一个重要的开放性猜想,如果成立,将完美刻画一大类CSP问题的近似难度。

通过差距和PCP的视角,我们获得了证明优化问题不可近似性的强大范式,并理解了近似算法理论中一些最深刻结果的来源。

013:W层次结构

在本节课中,我们将学习参数化复杂性的基本概念,特别是W层次结构。我们将了解如何通过引入额外参数来分析问题的计算难度,并学习区分“固定参数易处理”问题和那些可能更难处理的问题。课程将涵盖核心定义、关键问题示例以及它们之间的归约关系。

概述

参数化复杂性是计算复杂性理论的一个较新领域,它通过引入一个额外的参数 K 来补充传统的问题规模 n,旨在将指数级复杂度从 n 转移到 K 上。如果对于小的 K 值,我们能得到 f(K) * poly(n) 的运行时间,那么即使 n 很大,问题也可能是实际可解的。本节课将介绍参数化复杂性的基本框架,包括固定参数易处理性、参数化归约,以及用于对参数化问题难度进行分类的W层次结构。

参数化问题与复杂度类

一个参数化问题由一个决策问题加上一个参数函数 K 构成,该函数将问题实例映射到一个非负整数。通常,n 表示输入规模,K 是额外的参数。

我们的目标是获得对 n 的良好依赖(例如多项式时间),同时允许对 K 有较差的依赖(例如指数时间)。这引出了两个重要的复杂度类:

  • XP:可在 n^{f(K)} 时间内解决的问题集合,其中 f 是任意函数。这意味着对于每个固定的 K,问题是多项式时间可解的,但多项式的次数随 K 增长。
  • FPT(固定参数易处理):可在 f(K) * n^{O(1)} 时间内解决的问题集合。这里,对 n 的依赖被限制为多项式,且多项式的次数是常数(不依赖于 K)。这是更理想、更强大的性质。

一个关键定理是,FPT 也等价于可在 f(K) + n^{O(1)} 时间内解决的问题集合。

上一节我们介绍了参数化问题的基本概念和复杂度类,本节中我们来看看一个具体的FPT算法例子。

顶点覆盖问题的FPT算法

考虑顶点覆盖问题的自然参数化:给定图 G 和参数 k,判断是否存在大小不超过 k 的顶点覆盖。

一个简单的XP算法是尝试所有大小为 k 的顶点子集,共有 C(n, k) 种可能,检查每个子集是否是顶点覆盖需要 O(n) 时间。这证明了该问题属于XP。

要证明它属于FPT,我们可以使用一个分支算法:

  1. 选择任意一条边 (u, v)。在任何一个大小不超过 k 的顶点覆盖中,uv 至少有一个必须被选中。
  2. 递归地分支两种情况:将 u 加入覆盖,并从图中删除 u 及其关联的所有边;或者将 v 加入覆盖,并做类似删除。
  3. 重复此过程。如果递归深度超过 k 仍未覆盖所有边,则回溯。
  4. 如果在深度 k 内找到了一个顶点覆盖,则回答“是”。

这个算法探索了一棵深度为 k 的二叉树,因此运行时间为 O(2^k * n),属于FPT。

参数化归约与W层次结构

为了证明某些问题可能不属于FPT,我们需要一个归约框架。参数化归约类似于NP归约,但有一个额外条件需要保持参数“可控”。

具体来说,要从参数化问题 A(参数 K)归约到问题 B(参数 K‘),我们需要一个在多项式时间内计算的函数,将实例 x 映射到实例 x’,使得:

  • xA 的“是”实例当且仅当 x‘B 的“是”实例。
  • 新参数 K’(x‘) 以原参数 K(x) 的某个可计算函数 g 为上界,即 K’ <= g(K)

如果 B 属于FPT,并且存在这样的归约,那么 A 也属于FPT。反之,如果我们相信 A 不属于FPT,那么 B 也不属于FPT。

W1完全问题:一个核心难题

在参数化复杂性中,我们相信存在一个不属于FPT的“核心”难题,用它来证明其他问题的难度。一个这样的问题是 K步非确定性图灵机问题

  • 输入:一个非确定性图灵机(具有 O(n) 个状态和指令),以及参数 k
  • 问题:是否存在一条长度不超过 k 的计算路径,使机器输出“是”?

直观上,由于机器每一步可能进行 O(n) 种非确定性选择,暴力搜索需要大约 n^k 时间,这属于XP但不像是FPT。这个问题被定义为 W1完全 的。W1类包含了所有能通过参数化归约约化到此问题的问题。

独立集问题也是W1完全的。这意味着,如果存在从K步非确定性图灵机问题到独立集的参数化归约(反之亦然),那么独立集也与该核心难题同样困难。

更多W1完全问题及其归约

从独立集或团问题出发,可以证明许多其他问题是W1完全的。以下是几个例子及其归约思路:

正则图中的团问题

问题:在最大度为 Δ 的正则图中寻找大小为 k 的团。
归约(来自团问题):对于给定图 G 的每个顶点 v,创建 Δ 个副本。如果 v 在原图中的度为 d < Δ,则添加 Δ - d 个新顶点,并将它们与 v 的所有 Δ 个副本相连,形成一个二分团。这确保了所有顶点度都变为 Δ,并且没有引入新的三角形,因此团的大小保持不变。

部分顶点覆盖问题

问题:给定图 G 和参数 k, L,是否存在 k 个顶点,覆盖至少 L 条边?(注意:参数是 k
归约(来自正则图中的独立集):假设图是 Δ-正则的。存在大小为 k 的独立集,当且仅当存在 k 个顶点恰好覆盖 Δ * k 条边。因为独立集中的顶点互不相邻,每个顶点覆盖其 Δ 条关联边,且边无重复。

多色团问题

问题:给定一个 k-着色的图,问是否存在一个团,恰好包含每种颜色一个顶点。
归约(来自团问题):对原图 G 的每个顶点 v,创建 k 个副本 v_1, ..., v_k,并赋予第 i 个副本颜色 i。对于原图中的每条边 (u, v),在新图中连接所有 u_iv_j(其中 i != j)。这样,新图中的团对应于原图中的团,并且必须包含所有颜色。

多色团问题是一个非常有用的起点,可以简化许多问题的W1-硬度证明。

支配集与W2层次

有些问题比W1完全问题更难,属于 W2完全 类。一个典型的例子是支配集问题:

  • 问题:给定图 G 和参数 k,是否存在大小不超过 k 的支配集(即每个顶点要么在集合中,要么与该集合中的某个顶点相邻)?

我们可以从多色团问题归约到支配集问题,证明支配集是W1-难的。实际上,支配集被证明是 W2完全 的。集合覆盖问题也是W2完全的,因为支配集可以很容易地归约到集合覆盖。

W层次结构的定义

W层次结构基于一个称为加权电路可满足性的问题来定义。

  • 问题:给定一个布尔电路(有单个输出)和参数 k,是否存在一个汉明权重为 k(即恰好 k 个输入为1)的输入赋值,使电路输出1?
  • 所有能参数化归约到此问题的问题构成类 WP

通过限制电路的结构,我们得到W层次结构。定义电路的深度为最长路径。定义电路的为任意输入到输出路径上“大”门(输入数大于常数的门,例如输入数>2的门)的最大数量。

那么,对于常数 t,类 W[t] 定义为所有能参数化归约到常数深度、纬为 t 的加权电路可满足性问题的问题集合。

根据这个定义:

  • 独立集可以写成一个深度为2、纬为1的电路(第一层是多个“大”的OR门,表示每条边的两个端点不能同时被选;第二层是一个“大”的AND门,要求所有边约束满足)。因此独立集属于 W[1],并且是W[1]完全的。
  • 支配集在一般图上需要深度为2、纬为2的电路(第一层是多个“大”的OR门,表示一个顶点可以被其邻居或自身支配;第二层是一个“大”的AND门,要求所有顶点都被支配)。因此支配集属于 W[2],并且是W[2]完全的。

大多数自然出现的问题都属于W[1]或W[2]。CNF-SAT(加权版本)是W[2]完全的,而3-SAT(加权版本)是W[1]完全的。

与近似算法的联系:高效PTAS

参数化复杂性与近似算法有一个有趣的联系。回顾一下,一个多项式时间近似方案 的运行时间可能是 n^{f(1/ε)}。如果运行时间是 f(1/ε) * n^{O(1)},则称为高效PTAS

可以证明,如果一个优化问题的自然参数化版本是FPT的,那么它就存在一个高效PTAS。反之,如果一个问题(在标准假设下)不是FPT的,那么它就不可能有高效PTAS。这为证明某些问题不存在高效PTAS提供了强有力的工具。

总结

本节课中我们一起学习了参数化复杂性的基础知识。我们首先了解了参数化问题、FPT和XP类的定义。然后,我们探讨了参数化归约的概念,并引入了W层次结构作为对参数化问题难度进行分类的工具。我们看到了几个核心的W[1]完全问题(如独立集、团)和W[2]完全问题(如支配集),并通过归约示例了解了如何证明问题的参数化难度。最后,我们简要讨论了参数化复杂度与高效PTAS之间的联系。理解这些概念有助于我们判断一个难解问题在参数较小时是否可能被有效解决,或者其近似算法的效率下限。

014:指数时间假说与平面固定参数可解性

在本节课中,我们将学习指数时间假说及其对算法复杂度,特别是参数化复杂度领域的影响。我们将看到,这个假说如何帮助我们推导出各种问题精确的时间下界,并区分平面图问题与非平面图问题的难度差异。

指数时间假说概述

指数时间假说是一个关于3-SAT问题计算复杂度的猜想。其核心主张是:对于3-SAT问题,不存在运行时间为 \(2^{o(n)}\) 的算法,其中 \(n\) 是变量数。当然,我们可以对任意 \(k\)\(k\)-SAT 提出类似的假设,但通常认为对于任何固定的 \(k\),都不存在 \(2^{o(n)}\) 时间的算法。2-SAT是简单的多项式时间可解问题,因此不在讨论之列。

我们支持这个假说的证据仅仅是:迄今为止,我们尚未找到这样的算法。目前已知的最佳算法运行时间约为 \(1.31^n\),这是三年前的研究成果。许多研究者致力于寻找更好的SAT算法,但猜想认为,你无法得到像 \(2^{\sqrt{n}}\) 这样的亚指数时间算法。对于3-SAT,\(2^{cn}\) 或等价地 \(c^n\)\(c\) 为常数)似乎是正确的复杂度级别。

这里需要简要说明的是变量 \(n\) 的定义。通常,\(n\) 指变量数,\(m\) 指子句数。由于每个子句包含三个变量,在考虑指数时间假说时,我们可以认为 \(m\)\(n\) 是线性相关的,这得益于“稀疏化引理”。该引理指出,一个具有超线性子句数的公式,可以转化为多个(例如 \(2^{\epsilon n}\) 个)每个都具有线性子句数的公式。因此,在考虑指数时间假说时,我们可以认为子句数和变量数是线性相关的。

当然,我们无法证明这个假说。如果能够证明,它将意味着 \(P \neq NP\)。从SAT的角度看,这是 \(P \neq NP\) 的一种更强形式。因为我们有许多从SAT出发的归约,如果我们假设关于SAT的这个下界,就可以证明其他问题的相应下界。

除了指数时间假说,还有一个更强的版本,称为强指数时间假说。它主张:对于CNF SAT,不存在 \((2 - \epsilon)^n\) 时间的算法(对于任意 \(\epsilon > 0\))。其思想是,对于每个 \(k\)-SAT,存在一个理想的基础常数 \(c_k\),但当 \(k\) 趋于无穷时,这个常数趋于 \(2\)。也就是说,对于子句长度非常大的SAT问题,你无法击败 \(2^n\)。本节课我们不讨论需要这个强假设的内容。

回顾经典归约与规模膨胀

上一节我们介绍了指数时间假说,本节中我们来看看它如何通过经典归约影响其他问题。关键在于分析归约过程中的“规模膨胀”。

一个NP归约(Karp风格)中,我们从实例 \(x\)(规模为 \(n\))出发,通过归约函数 \(f\) 构造实例 \(x'\)(规模为 \(n'\))。\(n'\) 应是 \(n\) 的多项式,这个多项式就是规模膨胀函数。

如果膨胀是线性的,即 \(n' = O(n)\),那么指数时间假说的结论得以保留。具体来说,如果问题 \(A\) 没有 \(2^{o(n)}\) 时间的算法,那么问题 \(B\) 也没有 \(2^{o(n)}\) 时间的算法。因为你可以将 \(A\) 的实例线性地转化为 \(B\) 的实例,然后运行 \(B\) 的算法。如果 \(B\) 存在 \(2^{o(n)}\) 的算法,那么 \(A\) 就存在 \(2^{o(n)}\) 的算法,这与假设矛盾。

更一般地,如果膨胀函数是 \(b(n)\),即 \(n' \leq b(n)\),并且问题 \(A\) 没有 \(2^{o(n)}\) 时间的算法,那么问题 \(B\) 将没有 \(2^{o(b^{-1}(n))}\) 时间的算法。例如,如果膨胀是平方级的(\(b(n) = n^2\)),那么 \(B\) 将没有 \(2^{o(\sqrt{n})}\) 时间的算法。

以下是我们在之前课程中看到的一些具有线性规模膨胀的归约例子:

  • 三染色:从3-SAT归约。如果3-SAT实例有 \(n\) 个变量和 \(m\) 个子句,构造出的图将有 \(O(n + m)\) 个顶点和边。因此,假设指数时间假说,对于顶点数和边数为 \(O(n)\) 的图,三染色问题没有 \(2^{o(n)}\) 时间的算法。
  • 顶点覆盖:从3-SAT归约。每个子句和变量出现都对应常数个顶点和边,总构造规模为 \(O(n + m)\)。因此,假设指数时间假说,对于顶点数和边数为 \(O(n)\) 的图,顶点覆盖问题没有 \(2^{o(n)}\) 时间的算法。
  • 支配集:从顶点覆盖归约。该归约也是线性膨胀,因此支配集同样没有 \(2^{o(n)}\) 时间的算法(假设指数时间假说)。
  • 哈密顿路径:从3-SAT归约(有向图最大度3版本)。该归约构造的图规模也是线性的。因此,哈密顿路径问题也没有 \(2^{o(n)}\) 时间的算法(假设指数时间假说)。
  • 独立集:从3-SAT归约(通过3-SAT-3)。该归约的构造规模也是线性的。因此,独立集问题也没有 \(2^{o(n)}\) 时间的算法(假设指数时间假说)。注意,独立集与团问题在复杂度上紧密相关,但团问题通常对应稠密图,其边数可能是顶点数的平方,因此结论表述上需稍加注意。

所有这些结果都适用于一般(非平面)图问题。

平面图问题的差异

上一节我们看到,对于一般图,许多NP难问题在指数时间假说下具有 \(2^{o(n)}\) 的时间下界。然而,对于平面图,情况有所不同。平面图问题往往存在 \(2^{O(\sqrt{n})}\) 时间的算法,并且在指数时间假说下,这个界限是紧的。

原因在于,将3-SAT归约到平面图问题时,通常需要引入“交叉 gadget”来处理边在平面嵌入中的交叉。在最坏情况下,交叉的数量可能是 \(O(n^2)\) 个。因此,归约的规模膨胀是平方级的。根据之前的分析,这意味着下界变为 \(2^{o(\sqrt{n})}\)

具体来说,对于以下平面图问题,假设指数时间假说,不存在 \(2^{o(\sqrt{n})}\) 时间的算法:

  • 平面3-SAT
  • 平面三染色
  • 平面顶点覆盖
  • 平面支配集
  • 平面哈密顿路径
  • 平面独立集

这些问题的证明都涉及从(平面)3-SAT出发的归约,并且都包含了交叉 gadget,导致了平方级的规模膨胀。

这个结果在某种意义上表明,即使平面图问题是NP难的,它们也比对应的非平面图问题“稍微容易一些”。事实上,许多平面图问题确实存在 \(2^{O(\sqrt{n})}\) 时间的算法,例如通过“提升与分隔”或利用平面图具有 \(O(\sqrt{n})\) 树宽的性质。

对参数化复杂度的影响

我们刚刚讨论了指数时间假说对经典算法复杂度的定量影响。现在,让我们转向参数化复杂度的世界,看看它在那里产生的影响,这甚至更为显著。

首先,我们可以得到一些简单的推论。对于以自然参数 \(k\)(如顶点覆盖大小、路径长度、支配集大小、独立集大小)参数化的问题,假设指数时间假说,不存在 \(2^{o(k)} \cdot \text{poly}(n)\) 时间的算法。因为当 \(k = n\) 时,这就退化为经典情况。这至少给出了参数部分 \(f(k)\) 的下界。

  • 对于顶点覆盖最长路径,它们是FPT问题,存在 \(c^k \cdot \text{poly}(n)\) 时间的算法。指数时间假说表明这个 \(c^k\) 的形式是紧的,不存在更好的 \(2^{o(k)} \cdot \text{poly}(n)\) 算法。
  • 对于支配集独立集,我们知道它们是W[1]-难或W[2]-难的,通常认为没有FPT算法。指数时间假说允许我们证明更强的结论:不存在 \(f(k) \cdot n^{o(k)}\) 时间的算法(对于任何可计算函数 \(f\))。这远比“不是FPT”要强。

接下来,我们证明关于团问题的这个强下界。

定理:假设指数时间假说,则 \(k\)-团问题不存在 \(f(k) \cdot n^{o(k)}\) 时间的算法(对于任何可计算函数 \(f\))。

证明思路:我们通过反证法,从三染色问题归约到 \(k\)-团问题。

  1. 给定一个 \(n\) 个顶点的图 \(G\)(三染色实例)。
  2. 将顶点集划分为 \(k\) 组,每组大约 \(n/k\) 个顶点。
  3. 构造新图 \(G‘\):对于每一组,考虑该组顶点所有可能的三染色方案(最多 \(3^{n/k}\) 种),每个方案对应 \(G’\) 中的一个顶点。
  4. \(G‘\) 中,不同组对应的两个顶点(染色方案)之间连边,当且仅当这两个染色方案对于连接这两组的所有边是兼容的(即不会产生单色边)。
  5. 这样,在 \(G‘\) 中寻找一个大小为 \(k\) 的团,等价于在 \(G\)\(k\) 个组中各选一个兼容的染色方案,这等价于 \(G\) 存在三染色。
  6. 通过巧妙地将 \(k\) 设置为 \(n\) 的某个缓慢增长的函数(使得假设存在的 \(k\)-团算法在代入 \(G‘\) 的规模后,其运行时间会违反指数时间假说),我们导出矛盾。

这个证明的关键在于,归约的参数 \(k‘\)(团的大小)等于我们设定的 \(k\),并且问题规模膨胀是 \(k \cdot 3^{n/k}\)。通过精细的计算,可以得出假设的 \(k\)-团算法将导致三染色问题存在 \(2^{o(n)}\) 的算法,与指数时间假说矛盾。

这个结果非常重要。此后,在参数化归约中,我们不仅关心参数 \(k\) 是否被某个函数 \(g(k)\) 限制,还关心这个函数的具体形式。如果是线性函数(\(k‘ = O(k)\)),我们就能保留“不存在 \(f(k) \cdot n^{o(k)}\) 算法”的强下界。如果是平方函数(\(k‘ = O(k^2)\)),那么下界会弱化为“不存在 \(f(k) \cdot n^{o(\sqrt{k})}\) 算法”。

平面图问题的参数化下界

上一节我们看到了对于一般图问题的强参数化下界。对于平面图问题,我们之前提到经典复杂度下界是 \(2^{o(\sqrt{n})}\)。相应地,在参数化 setting 下,我们通常会得到 \(f(k) \cdot n^{o(\sqrt{k})}\) 形式的下界。

这引出了一个核心工具:网格铺砖问题。该问题由 Daniel Marx 在2007年提出,是连接一般图参数化难度与平面/几何图参数化难度的桥梁。

网格铺砖问题定义

  • 输入:一个 \(k \times k\) 网格,每个格子 \((i, j)\) 对应一个集合 \(S_{ij} \subseteq [n]^2\)(即一些二维坐标对的集合)。
  • 输出:从每个格子 \(S_{ij}\) 中恰好选择一个元素 \(x_{ij} = (a_{ij}, b_{ij})\),使得:
    • 在同一行 \(i\) 中,所有被选元素的第二坐标 \(b_{ij}\) 相等。
    • 在同一列 \(j\) 中,所有被选元素的第一坐标 \(a_{ij}\) 相等。

这个问题被证明是W[1]-难的(参数为 \(k\)),并且在指数时间假说下,不存在 \(f(k) \cdot n^{o(k)}\) 时间的算法。注意,虽然我们选择 \(k^2\) 个元素,但参数是网格的边长 \(k\)

网格铺砖问题的威力在于,它的约束是局部的(只需要相邻格子间协调),因此可以嵌入到平面图或几何结构中。当我们进行这种嵌入时,通常会将参数 \(k\)(网格边长)转化为问题规模的一部分,导致在最终问题中参数变为 \(k^2\),从而产生 \(n^{o(\sqrt{k})}\) 的下界。

以下是两个平面/几何问题的例子,它们通过从网格铺砖问题(或其变种)归约,证明了相应的参数化下界:

  1. 分散集问题(Scattered Set):在图中寻找 \(k\) 个顶点,使得它们两两之间的距离至少为 \(D\)\(D\) 是输入的一部分,不作为参数)。当 \(D=2\) 时即为独立集。对于平面图,该问题参数化于 \(k\) 是W[1]-难的,并且假设指数时间假说,不存在 \(f(k) \cdot n^{o(\sqrt{k})}\) 时间的算法。存在匹配的 \(n^{O(\sqrt{k})}\) 算法,因此界限是紧的。

  2. 单位圆盘图独立集问题:给定平面上一些点(代表单位圆盘中心),如果两点距离 \(\leq 1\) 则连边,在此图中寻找大小为 \(k\) 的独立集。该问题同样是W[1]-难的(参数为 \(k\)),并且假设指数时间假说,不存在 \(f(k) \cdot n^{o(\sqrt{k})}\) 时间的算法。同样存在匹配的 \(n^{O(\sqrt{k})}\) 算法。

这些归约都利用了网格铺砖问题及其变种(如带单调递增约束的版本),通过精巧的几何构造,将网格的约束编码到平面距离或圆盘相交的条件中。

总结

本节课中,我们一起学习了指数时间假说及其深远影响。

我们首先介绍了指数时间假说,它是对3-SAT问题计算难度的一个定量猜想。通过分析经典NP归约中的规模膨胀,我们看到了该假说如何为一系列NP难问题提供精确的指数时间下界,并清晰地区分了平面图问题(\(2^{\Theta(\sqrt{n})}\))与非平面图问题(\(2^{\Theta(n)}\))的复杂度差异。

接着,我们将视角转向参数化复杂度。指数时间假说在这里产生了更强的影响。我们证明了对于像 \(k\)-团这样的问题,不仅没有FPT算法,甚至不存在 \(f(k) \cdot n^{o(k)}\) 时间的算法。我们引入了“网格铺砖”这一核心工具,它作为许多平面图和几何问题参数化难度的来源。通过从网格铺砖问题归约,我们为如“分散集”和“单位圆盘图独立集”等问题建立了 \(f(k) \cdot n^{o(\sqrt{k})}\) 的紧下界,并指出了匹配的上界算法。

这些结果不仅深化了我们对计算问题内在难度的理解,也将近似算法、精确算法和参数化算法的下界研究统一到了一个共同的复杂性假设之下。

015:#P与ASP

在本节课中,我们将学习如何从算法角度“计数”,并证明计数类问题的计算难度。与输出为“是/否”的决策问题不同,计数问题的输出是一个整数。我们将定义比NP问题更强的概念,并引入#P复杂性类。我们还将探讨其与ASP(另一个解)问题的关系。

概述

我们将从定义NP搜索问题及其对应的计数问题开始。接着,我们会引入#P复杂性类,并讨论用于证明#P难度的归约类型,特别是保真归约和倍乘归约。然后,我们会回顾之前证明过的一些问题,检查它们的归约是否保真,从而判断其计数版本是否#P完全。最后,我们将深入探讨一个核心的#P完全问题——矩阵积和式,并展示如何将其简化为0-1矩阵的积和式问题,进而与二分图完美匹配计数问题联系起来。

从搜索问题到计数问题

上一节我们介绍了NP决策问题。本节中,我们来看看如何将其扩展为搜索问题和计数问题。

首先,一个NP搜索问题定义如下:给定一个实例,目标是找到一个“解”。这里没有目标函数,所有解都是平等的。这与优化问题不同,优化问题追求最优解。对于一个NP搜索问题,存在一个多项式时间算法,可以验证给定的候选解是否有效。

几乎我们定义过的每个NP决策问题,背后都有一个对应的搜索问题。例如,对于SAT问题,搜索问题是找到一个满足所有子句的变量赋值。

给定这样一个搜索问题A,我们可以定义其对应的计数问题#A。该问题的目标是:对于给定的实例,计算其解的数量。显然,知道解的数量至少能回答“是否存在解”这个决策问题,因此计数问题严格难于对应的决策问题。

#P复杂性类与归约

上一节我们定义了计数问题。本节中,我们来看看如何定义其计算难度。

P被定义为所有此类计数问题构成的复杂性类。从计算视角看,一个非确定性图灵机在计算结束时,会输出所有接受路径的数量,而不是简单地判断是否存在一条接受路径。

为了定义#P难度,我们需要使用归约。这里我们允许使用非常强大的归约:多调用Cook归约。在这种归约中,我们可以多次调用一个能解决目标问题B的“预言机”,并结合一些多项式时间的计算,来解决源问题A。

然而,对于许多问题,我们可以使用一种更简单、更熟悉的归约:保真归约。这是一种针对NP搜索问题的归约,类似于NP归约,但有一个更强的条件:归约函数f必须将实例x映射到实例x‘,使得x的解的数量精确等于x’的解的数量。这意味着它不仅保持了“解是否存在”的性质,还精确保持了解的数量。因此,如果A的决策版本是NP难的,那么B的决策版本也是NP难的;更重要的是,如果#A是#P难的,那么#B也是#P难的。

另一种有用的归约是倍乘归约。在这种归约中,我们只要求x‘的解的数量等于x的解的数量乘以一个固定的常数C(C可以依赖于问题规模n,但不能依赖于具体实例x)。由于我们可以先计算#B,再除以已知的常数C来得到#A,所以这对于证明#P难度同样有效。

回顾经典问题的#P完全性

上一节我们介绍了证明#P难度的归约方法。本节中,我们应用这些方法,检查之前学过的一些NP完全性证明是否保真。

以下是几个通过保真归约证明是#P完全的问题:

  • 平面单调正矩形3SAT:其归约中引入的变量都是原有变量的拷贝或取反,因此解的数量被精确保持。
  • Shikaku谜题:归约中,代表变量的“导线”恰好有两种填充方式(真/假),子句部分在满足时也只有唯一的填充方式,因此是保真的。
  • 平面最大度3图的哈密顿环计数:原始的归约不保真,但通过使用更复杂的“异或”、“或”和“蕴含”构件,可以构造出一个保真的归约。
  • 数织谜题:从平面最大度3哈密顿环问题归约而来。其构件中,每个顶点的遍历方式(直行、左转、右转)都是唯一的,因此该归约是保真的。

然而,并非所有NP难的证明都是保真的。例如,平面1-in-3 SAT的第一个归约证明在某些情况下会产生两个解,而在其他情况下只产生一个解,因此不是保真或倍乘归约。不过,其第二个针对平面正矩形1-in-3 SAT的归约证明是保真的。

积和式:一个核心的#P完全问题

上一节我们看了一些组合问题的#P完全性。本节中,我们转向一个更代数化的问题:矩阵积和式。

矩阵A的积和式Perm(A)定义与行列式Det(A)类似,但求和中不包含置换的符号项。计算一般矩阵的积和式是#P完全的。我们可以通过一个倍乘归约(C是子句数量的函数)从#3SAT证明这一点。

该归约将3SAT实例转化为一个带权有向图,其构造包含变量构件和子句构件。关键在于一个特殊的4x4矩阵X(对应图中的构件),它具有以下性质:在任何非零权重的环覆盖中,若进入该构件的左侧顶点,则必须遍历其所有四个顶点并从右侧离开,且这样的遍历方式恰好贡献权重4。最终,整个图的所有环覆盖权重之和(即积和式)等于原SAT实例解的数量乘以一个固定的倍数(4的某次幂)。因此这是一个倍乘归约。

0-1积和式与完美匹配

上一节我们证明了一般矩阵积和式的#P难度。本节中,我们将其简化为只包含0和1的矩阵积和式问题。

首先,利用中国剩余定理和模运算,我们可以将计算一般矩阵积和式的问题,转化为多项式次调用“计算积和式模R”的问题。由于在模R下,负数可以转化为正数,我们只需处理非负权重的边。

接着,对于一条权重为k(k>1)的边,我们可以用一个特定的子图结构来模拟。该子图保证:如果不使用原边,有1种方式覆盖子图;如果使用原边,则有恰好k种方式覆盖子图。这样,我们就在模R的意义下,用0-1权重的图模拟了非负权重的边。

因此,计算0-1矩阵的积和式也是#P完全的。0-1积和式有一个重要的组合解释:它等价于计算对应二分图的完美匹配的数量。这解释了为什么虽然能在多项式时间内找到二分图的一个完美匹配,但计数所有完美匹配却是#P完全的难题。

更多计数问题与ASP

上一节我们建立了积和式与匹配计数的联系。本节中,我们看看由此衍生出的其他计数问题,并介绍ASP概念。

利用数论和构造技巧,我们可以证明更多匹配计数问题是#P完全的:

  • 最大匹配计数:通过将原图的每个顶点“膨胀”成n个顶点的团,并巧妙分析解的数量级,可以从完美匹配计数归约得到。
  • 所有匹配计数:通过为每个顶点添加k个叶子节点,构造一系列图G_k,并利用多项式插值技术,可以从最大匹配计数归约得到。

此外,正2SAT(即每个子句都是两个正文字)的计数也是#P完全的。这可以通过从二分图完美匹配计数进行保真归约来证明:将每条边关联一个布尔变量(True表示边不在匹配中),那么对于两条相邻的边,必须有子句保证至少有一条不在匹配中(即变量至少一个为True)。这建立了匹配与正2SAT解的一一对应。

最后,我们简要介绍ASP(另一个解)问题。对于一个搜索问题,ASP问题是指:给定一个实例及其一个解,判断是否存在另一个不同的解。许多设计谜题时(希望解唯一)需要考虑这个问题。如果一个保真归约同时能在多项式时间内将解双向转换,那么该归约也能证明ASP完全性。我们之前讨论的许多保真归约(如Shikaku、数织)同样也是ASP完全的。

总结

本节课中,我们一起学习了算法中的计数问题及其计算难度。我们定义了#P复杂性类,并介绍了用于证明#P难度的多调用归约、保真归约和倍乘归约。通过重新审视多个NP完全问题的证明,我们确认了平面3SAT、Shikaku、数织等问题的计数版本也是#P完全的。我们深入探讨了矩阵积和式这一核心的#P完全问题,并利用数论技巧将其简化为0-1积和式,从而与二分图完美匹配计数等价。由此,我们还得到了最大匹配计数、所有匹配计数以及正2SAT计数等问题的#P完全性。最后,我们了解了与#P紧密相关的ASP问题,它在确保谜题解唯一性方面有重要意义。

016:NP与PSPACE电子游戏

概述

在本节课中,我们将学习如何通过“元定理”来证明电子游戏的复杂性。我们将探讨两种主要类型的元定理:一种用于证明NP难度,另一种用于证明PSPACE难度。这些元定理提供了一套通用技术,可以应用于大量不同的游戏,通过分析游戏中的特定机制(如位置遍历、单次使用路径、压力板、按钮和门)来证明其计算复杂性。

元定理1:NP难度证明

上一节我们介绍了课程背景,本节中我们来看看第一个元定理,它用于证明游戏的NP难度。

元定理1的核心思想是:如果一个游戏设定在二维平面环境中,玩家需要访问特定的位置(位置遍历),并且游戏中存在只能使用一次的路径(单次使用路径),那么这个游戏通常是NP难的。

这个证明基于从平面、最大度为3的哈密顿路径问题进行的归约。以下是归约的基本思路:

  • 将原图中的每个顶点转换为游戏中必须访问的位置。
  • 将原图中的每条边转换为一条单次使用路径。

由于每条边只能使用一次,并且每个顶点最多连接三条边,玩家必须找到一条访问所有顶点的路径,这正好对应了寻找哈密顿路径的问题。

基于这个元定理,我们可以证明多款经典游戏的NP难度。

以下是应用此元定理证明NP难度的游戏示例:

  • 推石头:通过放置钻石实现位置遍历,通过可推动的石头(一旦推动就会挡住回头路)实现单次使用路径。
  • 淘金者:通过放置黄金实现位置遍历,通过挖掘的坑洞(一旦掉入,该方格会在一段时间后恢复,但玩家无法通过)实现单次使用路径。
  • 塞尔达传说2:林克的冒险:通过钥匙实现位置遍历(需要收集足够钥匙开门),通过消失的桥梁实现单次使用路径。

元定理2:NP难度证明的变体

上一节我们介绍了基于单次使用路径的NP难度证明,本节中我们来看看一个使用不同机制的变体。

元定理2与元定理1设定类似,但使用“令牌”和“收费道路”来模拟单次使用路径。玩家一次只能携带一个令牌,而某些道路(收费道路)需要支付一个令牌才能通过。

归约思路如下:

  • 在每个顶点放置一个令牌(实现位置遍历)。
  • 将每条边设置为收费道路。

玩家必须访问每个顶点以获取令牌,然后用它来通过一条相邻的边。这同样强制了玩家找到一条哈密顿路径。

这个变体可以用来证明吃豆人是NP难的。在归约中,豆子作为令牌,而幽灵的移动模式被精心设计,使得某些路径只有在玩家拥有“令牌”(即处于某种状态)时才能安全通过。

PSPACE难度基础与元定理3

前面我们讨论了NP难度,现在我们将目光转向更复杂的PSPACE难度。首先,我们需要了解一些PSPACE完全问题作为归约的起点。

PSPACE是可以在多项式空间内解决的问题的集合。它包含NP,并且等于非确定性多项式空间。一个关键的PSPACE完全问题是量化布尔公式可满足性问题(QBF或QSAT),即判断一个带有全称量词和存在量词的布尔公式是否为真。

与SAT类似,QSAT也有多种变体是PSPACE完全的,包括平面QSAT和平面1-in-3 QSAT。

有了基础问题,我们现在可以介绍用于证明PSPACE难度的元定理。

元定理3的设定如下:玩家在一个平面环境中,需要从起点A到达终点B。游戏中有“门”和“压力板”机制。每扇门有对应的“打开”和“关闭”压力板。踩上“打开”压力板会使门开启(可通过),踩上“关闭”压力板会使门关闭(不可通过)。每扇门恰好有一对这样的压力板。

这个构造是PSPACE完全的,证明是从Q3SAT(量化3SAT)问题归约而来。归约的核心是构建量词 gadget:

  • 存在量词 gadget:为玩家提供两条路径选择,分别对应将变量设为真或假。
  • 全称量词 gadget:强制玩家依次尝试变量的两种赋值(真和假),并且两种赋值下剩余的公式都必须为真,玩家才能继续前进。

子句 gadget 则由多扇门实现,只要对应子句中至少有一个文字为真(即其门是打开的),玩家即可通过。

基于这个强大的元定理,我们可以证明许多带有压力板机制的游戏是PSPACE完全的。

以下是应用此元定理证明PSPACE难度的游戏示例:

  • 魔法门之英雄无敌等早期RPG:拥有直接的压力板开门机制。
  • 毁灭战士:虽然没有直接的压力板,但可以通过触发器(如走过某处使墙壁出现或消失)来模拟门和压力板。
  • SCUMM引擎冒险游戏(如《猴岛小英雄》):其脚本系统可以模拟压力板的效果,通过对话或行动改变游戏状态,开启新的路径。
  • 波斯王子:拥有直接的压力板机制。虽然玩家可以跳跃,但通过将压力板放在必须攀爬的平台上,可以强制玩家触发。

元定理4:从压力板到按钮

上一节我们使用了压力板,本节中我们看看一个更常见的机制——按钮。

元定理4指出,如果将压力板替换为“按钮”,并且每个按钮可以同时控制三扇门的开关状态,那么游戏仍然是PSPACE完全的。

证明思路是将压力板 gadget 模拟为按钮 gadget。通过精巧的布置,使得按下一个按钮会产生一系列连锁反应,最终效果等同于踩下一个特定的压力板(打开或关闭某扇门)。

这个机制在游戏中更为常见。

以下是应用此元定理的游戏示例:

  • 古墓丽影:开关可以控制门的开启。
  • 刺猬索尼克:按按钮可以打开门。
  • 失落的维京人:角色按按钮可以同时打开两扇门。

元定理5:门与交叉点

元定理5是元定理3的另一种具体实现和简化。它直接关注“门”这一核心元素。

该定理指出,只要游戏中存在可以打开/关闭的“门” gadget,以及允许路径交叉的“交叉点” gadget,那么游戏就是PSPACE完全的。

这里的门 gadget 有多个连接点:一个用于通行(当门开时),一个用于打开门,一个用于关闭门。这本质上是对压力板功能的重新包装。

这个框架被应用于多款任天堂游戏的PSPACE难度证明中。

以下是应用此元定理进行PSPACE难度证明的经典游戏:

  • 塞尔达传说:众神的三角力量:实现了门 gadget。游戏中的开关是翻转式的(按一次状态改变),但通过结合单向传送点等机制,可以模拟出所需的打开/关闭行为。
  • 大金刚国度:该系列三部曲分别使用不同的游戏元素实现了门 gadget。
    • 第一部:使用“轮胎”作为可移动障碍物来实现门的状态。
    • 第二部:使用“气球”在气流中的升降来实现门的状态。
    • 第三部:使用“跟踪桶”的左右移动来实现门的状态。
  • 超级马里奥兄弟:实现了门 gadget 和交叉点 gadget。门的状态由一个“刺猬”敌人的位置决定,玩家可以通过顶砖块来改变它的位置,从而“打开”或“关闭”门。交叉点则利用马里奥的跳跃物理特性实现。

案例研究:旅鼠的PSPACE难度

最后,我们来看一个特别复杂和精彩的证明:《旅鼠》的PSPACE难度。

《旅鼠》是一款实时策略游戏,玩家需要指挥旅鼠使用各种技能(如挖掘、建造)到达终点。即使假设“建造者”和“挖掘者”技能数量无限,仅使用一个旅鼠,并且有关卡陷阱,游戏仍然是PSPACE完全的。

证明同样遵循元定理5的框架,但需要极其精确地分析旅鼠的像素级物理规则:

  • 基本移动:定义了旅鼠如何行走、掉落和转向。
  • 挖掘者技能:分析了水平挖掘的精确条件和停止机制(包括对“钢块”的特殊检测)。
  • 建造者技能:分析了建造楼梯的精确步骤和停止条件。
  • Gadget 构建:基于上述物理规则,构建了:
    • 交叉点 gadget:利用地形引导旅鼠单向交叉。
    • 分岔点 gadget:允许玩家选择让旅鼠走上方或下方路径。
    • 门 gadget:利用陷阱和可破坏的方块来实现门的打开、关闭和通行逻辑。

这个证明展示了如何将严谨的元定理应用于一个物理规则异常复杂的游戏,是算法下界领域的一项杰作。

总结

本节课中我们一起学习了如何通过一系列元定理来证明电子游戏的NP硬度和PSPACE硬度。我们从需要位置遍历和单次路径的NP难度框架开始,进而探讨了基于压力板、按钮和门机制的PSPACE难度框架。通过将这些框架应用于《推石头》、《吃豆人》、《毁灭战士》、《塞尔达传说》、《大金刚》、《超级马里奥兄弟》和《旅鼠》等众多经典游戏,我们不仅证明了它们固有的计算复杂性,也展示了理论计算机科学与流行文化之间深刻而有趣的联系。这些证明的核心在于,即使是最娱乐性的问题,也可能隐藏着与最深奥的计算复杂性类别的等价关系。

017:非确定性约束逻辑

在本节课中,我们将学习一个用于证明谜题基于棋子完备性的通用理论——约束逻辑。我们将重点介绍其一个特定方面:非确定性约束逻辑。这是一种非常有用的框架,尤其适用于证明滑块类谜题的基于棋子的难度结果。

概述

非确定性约束逻辑通常简称为 NCL。它提供了一个强大的基础结构,用于证明各种谜题问题是 PSPACE 完备的。我们将从定义约束逻辑的基本概念开始,然后探讨如何利用它来构建复杂的归约证明。

约束逻辑基础

我们从一个无向图的概念开始,这可以看作是一个计算模型。图中包含红色边和蓝色边,红色边的权重为 1,蓝色边的权重为 2。

一个约束图的配置,就是对该图的一个定向,使其成为一个有向的红蓝图。这个定向必须满足一个约束:在每个顶点处,总流入权重至少为 2。这意味着,要么至少有一条蓝色边流入,要么至少有两条红色边流入。

用公式表示,对于一个顶点 v,其约束为:
总流入权重(v) ≥ 2
其中,红色边权重为 1,蓝色边权重为 2。

我们感兴趣的是通过每次反转一条边来对约束图进行重新配置。每次移动后,图必须始终保持为一个有效的约束图,即满足流入约束。

这就是游戏的规则。在每个时间步,你可以进行任何有效的移动。这种可以自由选择移动的特性,就是“非确定性”的体现,它模拟了大多数谜题的特点。

NCL 决策问题

基于上述模型,我们可以定义两个决策问题。

第一个也是最常见的问题是:给定一个约束图和一个指定的目标边,是否存在一系列移动,使得最后一次移动恰好反转了这条目标边?

第二个问题是:给定一个约束图的两种有效配置(即两种满足约束的定向),是否存在一系列单边反转操作,可以从一种配置到达另一种配置?

我们将证明,即使在图的最大度数为 3,并且只包含两种特定类型的顶点的情况下,这两个问题都是 PSPACE 完备的。

基本顶点类型:与门和或门

在 NCL 中,我们主要使用两种顶点类型来构建逻辑电路。

与门顶点 由两条红色边(作为输入)和一条蓝色边(作为输出)构成。其特性是:只有当两个输入边都处于激活状态(即都指向该顶点)时,输出边才有可能被激活(即从该顶点指出)。

或门顶点 由两条蓝色边(作为输入)和一条蓝色边(作为输出)构成。其特性是:只要至少有一个输入边处于激活状态,输出边就有可能被激活。

这里对“激活”的定义是不对称的:对于输入边,激活意味着它指向该顶点;对于输出边,激活意味着它从该顶点指出。这种定义使得在连接两个顶点时,一条边对于一端是输出,对于另一端是输入,其激活状态是一致的。

一个重要的点是,在这个框架下,我们无法构建非门。因为流入约束是一个下界(至少为2),它总是“希望”有更多的输入激活,这与非门需要“输入激活则输出不激活”的逻辑相悖。

辅助结构与归约

为了构建复杂的逻辑电路,我们还需要一些辅助结构。

选择顶点 是一个由三条红色边构成的顶点,其约束是:必须有两条边指向该顶点(即最多一条边指出)。这可以模拟为一个三角形结构。

红蓝转换器 用于在需要时将红色信号转换为蓝色信号,反之亦然。这通过一个小的固定结构实现,确保转换过程中权重约束始终满足。

终端器 用于处理度数为 1 的顶点,使其融入三正则图中。根据需求,可以是无约束的(边可自由指向),也可以是受约束的(强制边指向特定方向)。

利用这些基本结构,我们可以模拟布尔电路。例如,通过“双轨逻辑”来表示变量及其非,我们可以构建合取范式公式。一个边能否被反转,当且仅当该公式是可满足的。这证明了约束图可满足性问题(给定无向红蓝图,寻找一个有效定向)是 NP 完备的。

证明 PSPACE 完备性

为了证明 NCL 的重新配置问题是 PSPACE 完备的,我们从量化的布尔公式问题进行归约。

我们构建一系列量词器件(存在量词和全称量词)和一个用于表示 CNF 公式的电路。这些器件通过“锁存器”连接,锁存器是一种可以存储一位信息(如变量赋值)的单元,其状态可以非确定性地设置并锁定。

  • 存在量词器件 相对简单:当被激活时,它可以非确定性地选择将变量设置为真或假,并将其锁定,然后激活后续计算。
  • 全称量词器件 更为复杂:它需要验证变量无论取真值还是假值,公式的剩余部分都能被满足。这涉及到设置变量、检查满足性、回滚计算、更改变量值、再次检查满足性等一系列操作,最终报告结果。

通过将这些器件与表示布尔公式的电路链接起来,我们构造出一个约束图。图中一条特定边的反转是可能的,当且仅当原始量化布尔公式为真。这就证明了“反转指定边”的问题是 PSPACE 困难的,从而是 PSPACE 完备的。

平面图与更简单的门

上述构造可能产生非平面图。为了证明即使对于平面图,问题也是 PSPACE 完备的,我们需要平面交叉器件。我们可以构建蓝-蓝交叉、红-蓝交叉和红-红交叉的模拟器件。

此外,为了简化后续归约中构建器件的难度,我们引入了保护型或门的概念。保护型或门看起来像普通或门,但要求最多只有一个输入被激活。如果两个输入同时激活,整个系统可能会进入无效或不可分析的状态。重要的是,我们可以用保护型或门来构建出功能完整的普通或门。因此,我们只需要能够实现与门和保护型或门,就足以证明平面图上的 NCL 是 PSPACE 完备的。

应用实例:滑块谜题

NCL 的强大之处在于,许多谜题可以相对容易地模拟这些基本器件。一个经典的例子是滑块谜题

在滑块谜题中,我们有一个棋盘和若干滑块,目标通常是将一个特定滑块移动到指定位置。通过设计巧妙的滑块布局,我们可以模拟与门和保护型或门。

  • 与门模拟:一个滑块要向下移动一格,必须要求左侧和上方的两个特定滑块先移开,以腾出必要的空间。
  • 保护型或门模拟:一个滑块要向下移动,只需要左侧或上方的某一个特定滑块移开即可。如果两个滑块都错误地移开,可能会导致布局“崩溃”,使得谜题无法解决,这正好符合保护型或门的特性。

通过将这样的器件嵌入到网格中,并用“导线”(即滑块通道)连接起来,我们就可以将任意一个平面 NCL 问题转化为一个滑块谜题实例。这就证明了滑块谜题是 PSPACE 完备的。

更多应用

NCL 的框架被广泛应用于证明各种游戏的 PSPACE 完备性,包括:

  • 推箱子 及其变体。
  • 滚动方块 谜题。
  • 木板渡河 谜题。
  • 动态地图标注 的连续重新配置问题。
  • 激光搜索 问题。

这些证明的核心思想都是相似的:在目标游戏中,设计出模拟 NCL 中与门和保护型或门的“小装置”,然后将这些装置组合起来,模拟一个已知的 PSPACE 困难问题(通常是平面 NCL)。

总结

本节课我们一起学习了非确定性约束逻辑这一重要理论。我们定义了约束图、有效配置和移动规则。我们看到了如何用简单的与门和或门顶点来模拟布尔逻辑,并证明了与之相关的配置可达性和边反转问题是 PSPACE 完备的,即使对于平面图也是如此。最后,我们探讨了 NCL 在证明各种实际谜题和游戏 PSPACE 完备性方面的强大应用,其核心在于将复杂的游戏机制归约为简单的约束逻辑器件,从而快速得到难度证明。

018:0人和2人游戏

在本节课中,我们将学习零人游戏和两人游戏的计算复杂性。我们将从经典的零人游戏“生命游戏”开始,探讨其如何达到P空间完全性甚至不可判定性。接着,我们将转向两人游戏,特别是多项式步数有界的游戏,并了解它们如何达到P空间完全性。我们将通过约束逻辑的视角来统一理解这些复杂性结果。


零人游戏:生命游戏与复杂性

上一节我们介绍了游戏的一般分类。本节中,我们来看看零人游戏,其中最经典的例子是康威的“生命游戏”。

生命游戏定义在一个无限网格上,每个细胞有两种状态:存活(黑色)或死亡(白色)。游戏根据以下规则同步更新所有细胞:

  • 一个存活的细胞将继续存活,当且仅当其八个邻居中有两到三个存活细胞。
  • 一个死亡的细胞将变为存活(诞生),当且仅当其八个邻居中恰好有三个存活细胞。

这些简单的规则可以产生极其复杂的行为,例如静态图案(静物)、周期振荡(如脉冲星)以及移动的图案(如滑翔机和飞船)。

计算问题与复杂性

对于生命游戏,我们可以提出不同的计算问题,其复杂性取决于游戏空间的设定:

  • 多项式空间有界(有限棋盘或环面):如果游戏在有限空间内进行,且最大步数由空间大小多项式限定,那么预测其行为是P空间完全的。这可以通过构造模拟图灵机(或其等价物,如双栈下推自动机)的生命图案来实现。
  • 无限空间(有限初始图案):如果游戏在无限棋盘上进行,但初始只有有限区域有存活的细胞,那么某些问题(如“所有细胞最终会全部死亡吗?”)是不可判定的。这可以通过构造一个能模拟通用图灵机并自动扩展其“磁带”的生命图案来证明。

证明技巧:滑翔机逻辑

生命游戏复杂性证明的核心是利用滑翔机构建数字逻辑电路。以下是关键组件:

  • 信号(比特):一列滑翔机代表比特流。有滑翔机代表1,无滑翔机代表0。
  • 导线:滑翔机的对角线路径。
  • “吞噬者”:一种静物结构,能吸收撞上的滑翔机,用作导线终端或逻辑门的一部分。
  • 滑翔机枪:一种周期结构,能持续发射滑翔机,用作常量信号源。
  • 逻辑门:通过精心安排滑翔机枪和滑翔机流的碰撞,可以构建与门、或门等。例如,通过让一个信号流与一个常量流碰撞并湮灭,可以实现信号取反。
  • 交叉:通过“稀释”信号流(例如,每10个位置才有一个滑翔机),并精心安排两条流的相位,可以实现无碰撞交叉。
  • 存储器(计数器):使用特定的静物图案(如2x2方块)代表非负整数,并通过发送特定模式的滑翔机波来对其进行递增、递减和零值检测。

通过组合这些组件,可以在生命游戏中构建出能够进行任意计算的电路,甚至是能够模拟图灵机的米insky机(双计数器机),从而证明其P空间完全性或不可判定性。


零人游戏:确定性约束逻辑

现在,我们从生命游戏转向一个更抽象的模型——确定性约束逻辑,它为零人游戏的复杂性提供了统一的框架。

确定性约束逻辑是我们在上节课介绍的非确定性约束逻辑的“零玩家”版本。在DCL中,边的翻转不是由玩家选择,而是由确定性的规则驱动。

模型定义

在DCL中,除了每条边有方向(红边要求入权重大于等于1,蓝边要求入权重大于等于2)外,系统还有“活跃”状态。

  • 活跃边:在上一时间步刚刚翻转过的边。
  • 活跃顶点:如果刚翻转的入边(即活跃入边)满足了该顶点的权重约束,则该顶点被激活。
  • 更新规则:在每一轮中,同时翻转两类边:
    1. 指向活跃顶点的非活跃边。
    2. 指向非活跃顶点的活跃边。
      新翻转的边成为下一轮的活跃边。

一个示例:信号分离器

考虑一个简单的结构:一条边指向一个蓝顶点,该顶点另有两条出边。如果初始只有输入边是活跃的,且没有其他输入,信号会在这个顶点处“反弹”。但是,如果同时有另一个输入激活,使得该顶点的约束被满足,那么信号就会成功分离并沿着两条出边传播出去。这类似于非确定性约束逻辑中的分离器。

P空间完全性证明

我们可以证明,判定“在DCL中,某条特定的边是否会被翻转”是P空间完全的。证明思路仍然是量化布尔公式的归约,但需要处理确定性问题带来的时序挑战。

  • 存在量词 gadget:使用一个循环结构,依次尝试变量的“假”和“真”赋值,而不是让玩家选择。
  • 全称量词 gadget:结构类似,但需要验证所有分支。
  • 逻辑门 gadget:为了确保确定性下的稳定操作,需要更复杂的门电路,引入“确认”信号来同步输入输出。
  • 平面化与度数简化:通过边的细分(例如,将每条边替换为长度为4的路径)可以消除度为2的顶点,并将所有边转换为“蓝-蓝”或“红-蓝”类型。同时,也有特定的交叉结构可以在保持时序的情况下实现平面化。

因此,对于平面图,确定性约束逻辑是P空间完全的,这为证明许多零人游戏的硬度提供了有力工具。


两人游戏:概述与复杂性类别

现在,我们转向两人游戏。在完美信息、确定性的游戏中,两人以上的游戏在复杂性上通常可以简化为两人游戏,因为所有对手可以视为一个联合的“对手”玩家。

对于多项式步数有界的两人游戏,其决策问题(先手是否有必胜策略?)自然属于P空间。这是因为必胜策略可以表述为一个交替量词(“存在先手的一步,使得对于对手的所有应对,存在先手的下一步...”)的命题,而游戏规则和终局条件可以写成多项式大小的布尔公式。

我们的目标是证明这类游戏的P空间硬度。可以从一些逻辑游戏开始。

基于SAT的两人游戏

考虑将布尔可满足性问题转化为两人游戏。玩家轮流为变量赋值,最终根据公式的真值决定胜负。根据赋值规则(玩家可以赋值任何未赋变量,或只能赋值属于自己颜色的变量)和胜利条件(最后公式为真则先手胜 / 首先使公式为真者胜 / 首先使公式为真者负),可以衍生出多种游戏变体。例如:

  • ** impartial game positive 11 CNF-SAT**:任何玩家可为任何变量赋值(但公式只含正文字,且每个子句恰好有11个文字),先手目标是使公式最终为真。此问题是P空间完全的。
  • ** partisan game CNF-SAT**:变量分为白方和黑方,玩家只能给己方变量赋值,公式为一般CNF,先手目标是使公式最终为真。此问题也是P空间完全的。

许多此类组合都被证明是P空间完全的,为归约提供了丰富的来源。

其他经典的P空间完全两人游戏

  • 地理游戏:给定一个有向图和一个起点,玩家轮流将令牌沿有向边移动,不允许重复访问节点(顶点地理)或不允许重复使用边(边地理)。最后无法移动者输。有向图上的顶点地理和边地理都是P空间完全的。
  • 黑白棋:在多项式步数内(棋盘会被下满),判定给定局面下黑方是否有必胜策略是P空间完全的。证明通常从地理游戏归约,利用“威胁”机制:一方制造必须立即应对的威胁,从而迫使对方按预定路径行动。

两人游戏:有界约束逻辑

最后,我们介绍两人游戏约束逻辑框架,称为有界两人约束逻辑

模型定义

在有界两人约束逻辑中:

  • 每条边被标记为白色黑色,同时也标记为红色蓝色(定义权重约束)。
  • 白方玩家只能翻转白色边。
  • 黑方玩家只能翻转黑色边。
  • 每条边在整个游戏中最多只能被翻转一次(“有界”)。
  • 顶点约束与之前相同(红边入权重大于等于1,蓝边入权重大于等于2)。

P空间完全性证明

我们可以证明,判定“在白方先手的情况下,白方是否有必胜策略?”是P空间完全的。我们从一个已知的P空间完全问题——** impartial game positive CNF-SAT**——进行归约。

  • 变量 gadget:使用一个特殊的顶点,有一条白入边和一条黑入边。谁先翻转了己方的边,就相当于设置了变量(白方翻转为真,黑方翻转为假),并会阻止对方翻转另一条边。
  • 逻辑传播:公式的结构用标准的与门、或门约束逻辑顶点来构建,但输入信号来自变量gadget。
  • 胜利条件:白方的目标是翻转一条特定的目标边。这对应于在游戏结束时,所有变量赋值使得CNF公式为真。
  • 交叉与保护:存在交叉gadget。此外,可以使用“自由边”(可随时翻转的边)来构建受保护的或门,确保逻辑正确运作。

通过这种归约,我们建立了有界两人约束逻辑的P空间完全性。这可以作为跳板,进一步证明许多具体的有界两人棋盘游戏(如亚马逊棋、康纳棋等)也是P空间完全的。


总结

本节课中我们一起学习了:

  1. 零人游戏的复杂性,以生命游戏为例,展示了其如何从P空间完全到不可判定的惊人能力。我们还介绍了确定性约束逻辑这一抽象模型,它为零人游戏的P空间完全性提供了统一证明框架。
  2. 两人游戏的复杂性,特别是多项式步数有界的情况。我们看到了从逻辑游戏(如SAT变体)到经典游戏(如地理游戏、黑白棋)的P空间完全性结果。最后,我们介绍了有界两人约束逻辑模型,它能够归约许多具体的两人游戏,是证明其硬度的有力工具。

通过这些内容,我们看到了即使在没有玩家选择(零人)或仅有简单交替移动(两人有界)的游戏中,计算问题也可以达到极高的复杂性等级。这深刻揭示了计算现象在游戏和谜题中的普遍性。

019:无界游戏

在本节课中,我们将学习双人无界游戏,即移动步数可能呈指数级增长的游戏。我们将探讨这类游戏的计算复杂性,并了解一些经典游戏(如国际跳棋、国际象棋和围棋)如何被证明是EXPTIME完全的。


概述

上一节我们介绍了移动步数多项式有界的双人游戏,并证明了它们是PSPACE完全的。本节中,我们将转向移动步数无界的双人游戏。这类游戏的状态空间可能呈指数级增长,其决策问题属于EXPTIME复杂性类。我们将看到,约束逻辑和多个经典棋盘游戏都属于此类。


有界双人约束逻辑回顾

首先,我们快速回顾一下有界双人约束逻辑,它是PSPACE完全的。其核心思想是模拟一个布尔公式求值游戏:白方玩家通过翻转特定的边来将变量设为真,黑方玩家则通过翻转其他边来将变量设为假。如果公式最终被满足,则白方获胜。这个框架被用来证明多个实际游戏的PSPACE完全性。

为了将约束逻辑的硬度结果应用到具体游戏中,我们通常需要一些基本构件,例如选择变量受保护或门。这些构件允许我们在平面图中构建交叉结构,并确保信号传播的正确性。


具体游戏示例:亚马逊棋

亚马逊棋是一款在棋盘上进行的双人游戏,每位玩家控制四个“亚马逊”皇后。一个回合包含两步:移动一个己方皇后(沿任意方向走任意格,但不能穿过障碍),然后从新位置“射箭”到另一个格子(同样遵循皇后移动规则),被箭射中的格子永久变为障碍。游戏目标是分割出比对手更多的领地,当一方无法移动时即告负。

以下是证明亚马逊棋是PSPACE完全的核心构件:

  • 导线:通过一系列皇后的移动和射击,将信号从一个位置传递到另一个位置。
  • 变量构件:模拟玩家设置变量真值的初始阶段。白方或黑方谁先占据关键位置,就决定了该“变量”的状态。
  • 与门构件:需要两个输入信号都被激活,才能触发输出信号。
  • 或门构件:两个输入信号中任意一个被激活,即可触发输出信号。
  • 选择构件:一个输入信号可以激活两个输出路径中的一条,且只能选择一条。
  • 分裂构件:将一个输入信号复制并传递到两个输出路径。

通过将这些构件组合,我们可以从有界双人约束逻辑规约到亚马逊棋,从而证明其PSPACE完全性。


具体游戏示例:Kōnane

Kōnane是一种古老的夏威夷跳棋游戏。棋盘布满黑白棋子(类似国际跳棋开局)。玩家轮流移动,移动方式是让己方棋子跳过一条连续的对方向色棋子链(每次跳过一颗),被跳过的棋子被移除。移动必须沿直线进行,且不能在一次移动中改变方向。

以下是其PSPACE完全性的证明思路:

  • 导线:通过一系列跳跃传递信号。
  • 变量构件:同样,哪位玩家先占据关键位置,就设置了变量。
  • 或门/选择构件:同一个结构可以充当或门或选择门,取决于信号来源。
  • 与门/分裂/移位构件:一个复杂的构件可以模拟与门(需要两个输入按顺序激活)、分裂门(一个输入激活两个输出)或移位门(调整信号时序)。

游戏的关键在于设计安全的中间位置,防止对手在信号传递过程中进行破坏性捕获。通过精心安排棋子和跳跃路径,可以模拟约束逻辑,证明Kōnane是PSPACE完全的。


具体游戏示例:Cross Purposes

Cross Purposes是一款较新的游戏。棋盘上有一些竖立的黑色方块(“塔”)。两位玩家分别称为“水平”玩家和“垂直”玩家。水平玩家只能将塔向左或右推倒,垂直玩家只能将塔向上或下推倒。推倒后的塔变为“白色”并占据两格,无法再次移动。最后无法移动的玩家输掉游戏。

其PSPACE完全性证明同样基于有界双人约束逻辑:

  • 导线:通过触发一系列塔的推倒来传递信号。垂直玩家(假设是我们希望获胜的一方)推倒一个塔后,水平玩家将被迫推倒下一个,依此类推。
  • 变量构件:在游戏初始阶段,哪位玩家先推倒关键塔,就设置了变量。
  • 受保护或门:确保最多只有一个输入信号能成功通过,避免浪费触发机会。
  • 选择构件:输入信号可以选择两条输出路径之一。
  • 与门/分裂/移位构件:一个多功能构件,通过控制塔的推倒顺序和路径,模拟与门、分裂门和移位门的功能。

证明中需要仔细设计,确保水平玩家除了被强制回应外没有其他有效移动,从而控制游戏进程。


随机游戏与PSPACE

我们简要讨论一种变体:双人有界随机游戏。在这种游戏中,一位玩家是对手,另一位玩家是随机(例如掷骰子)的。研究表明,这类游戏的决策问题同样是PSPACE完全的。直觉上,随机性似乎比对抗性对手要弱,但通过概率放大论证,可以证明它们在计算难度上大致相当。目前,还没有已知的经典骰子游戏被证明属于此类,这是一个有趣的研究方向。


迈向EXPTIME:无界游戏

现在,我们进入本节课的核心:移动步数无界的双人游戏。由于状态数量可能呈指数级增长,对这些游戏进行最优策略决策通常需要指数时间,对应的复杂性类是EXPTIME。

公式游戏家族

一系列被称为G1到G6的公式游戏被证明是EXPTIME完全的。它们是理解更复杂游戏硬度的基础。我们以G3为例:

  • 状态:一组布尔变量(分属黑白双方)的赋值,以及一个指示轮到谁的变量。
  • 移动:玩家必须翻转(即取反)一个己方颜色的变量。不允许跳过。
  • 输掉条件:如果玩家在移动后使某个特定的DNF公式为真,则该玩家立即输掉游戏。

其他变体(G1, G2, G4, G6)在移动规则(如设置变量值而非翻转、可跳过)和获胜条件(玩家自己的公式、共同公式、CNF公式等)上有所不同,但都被证明是EXPTIME完全的。

为何属于EXPTIME?

对于这些游戏,一个状态可以用多项式长度的字符串表示(变量赋值和当前玩家)。因此,可能的状态总数最多是 2^(多项式) = 指数级。要判断初始状态是否为必胜态,最直接的方法是构建整个指数大小的状态转移图,然后通过逆向归纳(从立即输的状态开始标记)来确定每个状态的胜负。这个过程可以在指数时间内完成。


具体EXPTIME完全游戏:国际跳棋

国际跳棋(英式)被证明是EXPTIME完全的,这是一个非常精巧的证明。其核心思想是从G3公式游戏进行规约。

  • 变量构件:用棋盘上的特定国王棋子在两个位置(代表真/假)之间移动来模拟变量翻转。
  • 强制吃子规则:这是构造的关键。通过精心布置棋子,可以迫使对手沿着我们预设的路径进行一系列连续吃子,从而“激活”或“发送”信号。
  • 子句构件:DNF公式的每个子句对应一个复杂的区域。白方需要将其所有相关变量(通过国王移动)以正确的赋值“发送”到该区域,并触发一系列连锁吃子。如果所有条件满足,白方将获得一系列“自由步数”。
  • 外部螺旋与获胜机制:棋盘外围有一个巨大的螺旋结构,包含许多国王。如果白方通过满足公式获得了足够多的自由步数优势,它就可以进入螺旋,利用步数差逐步捕获所有黑方国王,从而锁定胜局。螺旋的规模确保了其步数资源远超内部构件的可能步数。

整个构造极其复杂,涉及奇偶性调整、防御路径、冗余设计等,但最终成功模拟了G3,证明了国际跳棋是EXPTIME完全的。


其他EXPTIME完全游戏

  • 国际象棋:通过类似的原理(主要使用兵和象),也被证明是EXPTIME完全的。证明更为复杂。
  • 围棋(日本规则):围棋的EXPTIME完全性证明基于G3。虽然棋盘空间有限,但“劫”的规则(禁止立即回提)使得游戏可以进入极长的、非重复的循环威胁状态,从而可能产生指数长度的对局。日本规则禁止重复上一回合的全局局面,状态图仍为指数大小。
  • 无界双人约束逻辑:允许玩家多次翻转边。通过从G6规约,可以证明其也是EXPTIME完全的。证明涉及“锁定”变量、攻击阶段以及精妙的时序平衡。

超越EXPTIME:更复杂的规则

如果我们为游戏添加更严格的历史记录规则,复杂性会进一步提升:

  • 超级劫规则(如中国规则):禁止重复任何曾经出现过的全局局面。这要求记住指数长的历史,可能将问题推入EXPSPACE。围棋在此规则下的确切复杂度是悬而未决的。
  • 禁止局面重复规则:在G1-G3等公式游戏中,额外加入“如果重复任何过去的游戏配置则输”的规则。这使游戏变为EXPSPACE完全。
  • 带有X/Y变量的重复规则:加入两个特殊变量X和Y。规则变为:如果重复了过去的配置,并且自那个过去配置以来,X和Y中最多只有一个被改变过,则输。这使游戏变为双重指数时间(2-EXPTIME) 完全。
  • 不完全信息游戏:当玩家无法看到对手的全部状态时(私人信息),复杂性也可能达到双重指数时间或指数空间。

这些结果展示了游戏规则细微变化如何导致计算复杂性的巨大飞跃。


总结

本节课中,我们一起学习了双人无界游戏的计算复杂性。我们从PSPACE完全的有界游戏出发,探讨了亚马逊棋、Kōnane和Cross Purposes等例子。然后,我们进入了EXPTIME领域,理解了为何无界游戏通常需要指数时间求解,并看到了国际跳棋、国际象棋和围棋如何被证明是EXPTIME完全的。最后,我们瞥见了当引入局面重复禁止或不完全信息规则时,游戏复杂性如何进一步提升到EXPSPACE甚至双重指数时间。这些结果深刻揭示了即使是我们熟悉的棋盘游戏,其最优策略的寻找在计算上也是异常困难的。

020:不可判定与P-完全问题

在本节课中,我们将学习算法下界理论中的两个重要概念:不可判定问题和P-完全问题。我们将首先探讨团队不完美信息游戏如何导致不可判定性,然后转向计算复杂性理论中的P-完全问题,了解哪些多项式时间可解的问题难以并行化。


团队不完美信息游戏与不可判定性

上一节我们介绍了不同玩家数量下的游戏复杂性分类。本节中,我们来看看团队不完美信息游戏。当游戏步数有多项式上界时,其复杂性对应于NEXPTIME(非确定性指数时间)。当游戏步数无界(可能接近无限多步)时,问题将变得不可判定,即不存在任何算法可以解决它。

以下是游戏复杂性分类矩阵的总结:

  • 有界步数团队不完美信息游戏: 复杂性为NEXPTIME。一个潜在的实例是桥牌的单手牌局。
  • 无界步数团队不完美信息游戏: 复杂性为不可判定。一个候选实例是“盲棋团队围棋”。

有界情况:DQBF与团队私有约束逻辑

我们从一个称为DQBF的问题开始,它是QBF(量化布尔公式)的一个变体。

在标准QBF中,量词交替出现,且每个量词可以依赖于之前所有变量的值。在DQBF中,我们有两组并行的存在量词,但存在变量的选择只能依赖于指定的全称变量子集。

公式描述如下:
∀x1∀x2 ∃y1(x1) ∃y2(x2) φ(x1, x2, y1, y2)

这里,y1的选择只能依赖于x1y2的选择只能依赖于x2φ是一个合取范式公式。这个问题可以看作一个三玩家游戏(一个黑方团队,两个白方玩家),且信息不完美。可以证明,DQBF是NEXPTIME完全的。

接下来,我们可以将DQBF归约到一个称为有界团队私有约束逻辑的游戏。在这个游戏中:

  • 有三名玩家:一个黑方玩家,两个白方玩家。
  • 游戏在一个有向图上进行,边被标记为对特定玩家可见或可翻转。
  • 玩家只能翻转他们可见且合法的边。
  • 游戏的目标是翻转某个特定的目标边。

通过精巧的构造,我们可以用TPCL来模拟DQBF,从而证明有界TPCL也是NEXPTIME完全的。有趣的是,在这种团队不完美信息设置下,单轮游戏和多轮游戏具有相同的计算能力(NEXPTIME完全),这与大多数其他游戏设置不同。

无界情况:从停机问题到团队计算游戏

现在,我们转向更令人兴奋的无界步数情况,这将导致不可判定性。我们从一个经典问题开始:图灵机停机问题。给定一个图灵机(初始磁带为空),判断它是否会最终停机。这个问题是众所周知的不可判定问题。

为了将其转化为一个使用有限资源的游戏,我们引入团队计算游戏。该游戏设置如下:

  • 玩家: 一名黑方玩家,两名白方玩家(白1和白2)。
  • 游戏机制
    1. 黑方被强制运行一个给定的算法(或图灵机)K步(K为常数)。
    2. 如果算法输出结果(黑方胜或白方胜),游戏结束。
    3. 如果算法没有输出,则黑方可以选择设置两个比特x1x2(取值A或B),作为给白方玩家的消息。
    4. 白方玩家i只能看到对应的xi,并以此设置一个内存单元Mi的值,作为其回合操作。
    5. 游戏重复进行。
  • 决策问题: 白方团队是否有必胜策略?

这个游戏的关键在于,白方玩家必须协同“模拟”一个给定的图灵机。黑方通过选择x1x2的序列,非确定性地查询白方维护的“指针”。白方要获胜,必须保证无论黑方如何选择查询序列(即无论图灵机的执行路径如何),它们模拟的计算历史都是有效的,并且最终能进入停机状态。

通过精心设计检查算法,我们可以将任意图灵机的停机问题归约到这个团队计算游戏,从而证明后者是不可判定的。其核心思想是利用了“白方必须应对黑方所有可能选择”这一全称量化特性,来强制白方进行正确的模拟。

随后,我们可以将团队计算游戏进一步归约为公式游戏,并最终归约为无界团队私有约束逻辑,从而证明它也是不可判定的。


P-完全问题与并行计算

现在,让我们切换到另一个极端,从不可判定性回到多项式时间可解的问题,但关注其并行计算的难度。

P类与NC类

我们熟知P类,即所有多项式时间可解的问题。在并行计算中,一个强大的模型是NC类。NC问题可以在多项式数量的处理器上,以多对数时间(即(log n)^O(1))解决。这等价于由多项式大小、多对数深度的布尔电路族可计算的问题。

显然,NC ⊆ P。一个重要的复杂性理论假设是 NC ≠ P,即并非所有P中的问题都能被高效并行化。P-完全问题就是那些属于P,并且至少和P中所有问题一样“难”并行化的问题。如果某个P-完全问题属于NC,那么将推出P = NC,这与我们的假设矛盾。因此,P-完全问题被认为是“固有串行”的。

基础的P-完全问题

首先,我们有一个非常自然的P-完全问题:(一元编码的)有界图灵机模拟。给定一个图灵机和一个用一元编码的步数上限T,判断机器是否在T步内停机。由于T以一元编码,我们可以在O(T)时间内直接模拟,故该问题属于P。而P中任何问题都可以归约到它,所以它是P-完全的。

更实用、更适合用于归约的是各种电路值问题

  • CVP: 给定一个布尔电路(无环)及其所有输入位的赋值,求输出位的值。
  • 单调CVP: 电路只包含AND和OR门,没有非门。
  • 交替单调CVP: 在单调CVP基础上,要求从任意输入到输出的任何路径上,AND和OR门严格交替出现,并且以OR门开始和结束。
  • AM2CVP: 在交替单调CVP基础上,要求每个门的入度和出度恰好为2
  • 同步AM2CVP: 在AM2CVP基础上,要求电路是同步的,即每一层深度的门同时接收输入。

我们可以通过一系列保持P-完全性的归约,从单调CVP得到同步AM2CVP。这些归约技巧包括:用树结构限制扇出/扇入、插入冗余门来保证交替性和度数、通过复制和延迟门来实现同步等。同步AM2CVP的简单结构使得它非常适合用于证明其他问题的P-完全性。

一个优雅的归约示例:词典序最大独立集

考虑以下问题:给定一个图,求其词典序第一个极大独立集(即按顶点编号顺序,能加就加)。一个简单的串行算法如下:

S = ∅
for i = 1 to n:
    if vertex i is not adjacent to any vertex in S:
        add i to S

判断某个特定顶点v是否在这个算法输出的集合S中,是一个P-完全问题。

我们可以从NOR电路值问题(将同步AM2CVP中的门替换为NOR门)归约到这个问题:

  1. 为电路中的每个输入和门创建一个对应的顶点。
  2. 添加一个特殊顶点“0”,将其连接到所有赋值为0的输入顶点。
  3. 根据电路的拓扑序为所有顶点编号(拓扑排序可在NC内完成)。
  4. 在生成的图上运行上述串行算法。
  5. 可以证明,一个顶点被加入独立集S,当且仅当它在原电路中输出值为1。

这个归约简洁地展示了如何用图上的一个简单贪婪算法来模拟电路计算。

更多P-完全问题示例

以下是一些有趣的P-完全问题:

  • 生命游戏: 给定初始配置和一元编码的时间T,判断特定细胞在T时刻是否存活。
  • 无环图上的广义地理学: 在无环有向图上进行的双人游戏。
  • 凸包层: 给定平面点集,反复计算并移除凸包,判断一个点是否在第k层。
  • 多列表排名: 合并多个已排序列表后,求某个元素的排名。
  • 线性规划: 即使系数仅为0和1。
  • 最大流问题: 属于“弱”P-完全(如果允许权重很大)。
  • 开放问题: 判断两数是否互质、模幂运算a^b mod c、有界度图同构等,被猜想是P-完全的。

总结

本节课中,我们一起学习了算法下界中的两个高级主题。

  1. 不可判定性: 我们探讨了团队不完美信息游戏如何通过模拟图灵机,导致即使在有限资源下也产生不可判定的问题。从停机问题出发,我们介绍了团队计算游戏,并最终将其与约束逻辑联系起来。
  2. P-完全性: 我们转向了多项式时间内的计算难度。通过引入并行计算模型NC,我们定义了P-完全问题——那些在P中但被认为难以并行化的问题。我们学习了一系列基础的P-完全问题(如各种电路值问题),并通过一个优雅的归约示例(词典序最大独立集)展示了如何证明P-完全性。最后,我们列举了现实中的一些P-完全问题及其开放猜想。

这两个主题分别代表了计算可行性光谱的两个极端:不可判定(无算法可解)和P-完全(有算法但固有串行),极大地丰富了我们对问题内在难度的理解。

021:3SUM与APSP问题复杂度 🔍

在本节课中,我们将探讨多项式时间层次结构中的“低端”问题,即区分线性时间与非线性时间(特别是二次方或三次方时间)的复杂性。我们将重点关注一个核心问题——3SUM问题,并了解其如何作为证明其他问题计算下界的基础。课程将介绍3SUM问题的定义、已知算法、相关猜想,以及一系列被证明是“3SUM困难”的计算几何和图形问题。最后,我们会简要提及与全对最短路径(APSP)问题相关的立方时间下界猜想。

3SUM问题及其复杂性

3SUM问题定义如下:给定一个包含n个整数的集合,需要判断是否存在其中三个数之和为零。一个简单的立方时间算法是测试所有三元组。然而,也存在更高效的二次方时间算法。

以下是两种已知的二次方时间算法:

  1. 随机化算法:首先构建一个包含所有整数的哈希表。然后,计算所有两两之和 a + b,并检查其相反数 -(a + b) 是否存在于哈希表中。由于 a + b + c = 0 等价于 a + b = -c,此算法能在期望的 O(n²) 时间内运行。
  2. 确定性算法:首先对整数进行排序(O(n log n))。对于每个目标值 -c,使用双指针技术在排序后的数组中找到两个数,使其和等于 -c。对n个目标值各执行一次线性扫描,总时间为 O(n²)

3SUM猜想认为,在最坏情况下,不存在运行时间为 O(n^(2-ε))(对于任意 ε > 0)的算法。这个猜想催生了“3SUM困难性”的概念:如果一个问题是3SUM困难的,那么除非3SUM猜想错误,否则该问题也不存在真正的次二次方时间算法(即 O(n^(2-ε)))。

需要指出,当整数范围受限时(例如在 -UU 之间),可以通过快速傅里叶变换(FFT)在 O(U log U) 时间内解决。因此,在讨论下界时,通常假设数字足够大(例如,大于 )。此外,存在一些在特定计算模型下的次二次方算法(如字RAM模型、实数RAM模型或决策树模型),但它们要么需要随机化,要么在实际中难以高效实现,因此并未推翻关于标准计算模型的3SUM猜想。

K-SUM问题

3SUM问题可以推广为K-SUM问题:给定n个整数,判断是否存在其中K个数之和为零。

  • 计算复杂性:当K较大时(例如K ≈ n/2),该问题实际上是NP难的(可规约到划分问题)。在指数时间假设(ETH)下,可以证明不存在 n^(o(k)) 时间的算法。
  • 已知算法与猜想:存在一个简单的随机化算法,时间复杂度为 O(n^(ceil(k/2)))。例如,对于3SUM(K=3),这就是 O(n²);对于5SUM(K=5),则是 O(n³)。相应的 K-SUM猜想 认为,这个时间复杂度是最优的,即不存在 O(n^(ceil(k/2) - ε)) 时间的算法。

3SUM困难性与规约

我们称一个问题为 3SUM困难 的,如果该问题存在 O(n^(2-ε)) 时间的算法将意味着3SUM问题也存在 O(n^(2-ε)) 时间的算法,从而与3SUM猜想矛盾。

证明3SUM困难性通常通过 3SUM规约 实现。规约必须满足以下条件:

  • 可以将3SUM问题实例在次二次方时间内转化为目标问题实例。
  • 目标问题实例的规模 n' 必须是原问题规模 n 的线性倍数(即 n' = O(n))。
  • 只能进行常数次数的目标问题“调用”。

这样,如果目标问题存在真正的次二次方算法,将其与高效的规约过程结合,就能得到3SUM问题的次二次方算法,从而违背猜想。

接下来,我们将从几个基础的核心3SUM困难问题出发。

核心的3SUM困难问题

以下三个基本问题是等价的(相互间存在次二次方规约),常作为证明其他问题3SUM困难性的起点:

  1. 标准3SUM:如前所述。
  2. 3SUM‘(ABC版本):给定三个整数集合A、B、C,判断是否存在 a ∈ A, b ∈ B, c ∈ C 使得 a + b = c。这本质上是3SUM的一个变体。
  3. 几何基问题(Geometric Base):给定二维平面上位于三条水平线(y=0, y=1, y=2)上的点集,判断是否存在一条非水平直线穿过三个点(每条线上各一个)。可以通过将3SUM‘中的数字映射为点的x坐标来规约。

上一节我们介绍了几个等价的基准问题。本节中,我们将利用它们来证明一系列计算几何问题的3SUM困难性。

计算几何中的3SUM困难问题

许多计算几何问题可以被证明是3SUM困难的,这意味着它们很可能需要二次方时间来解决。以下是一些例子及其规约思路:

  • 共线性检测:给定平面上的n个点,判断是否存在三点共线。可以通过将3SUM中的每个数x映射到点 (x, x³) 来规约。代数上可以证明,三个点共线恰好对应原始三个数之和为零。
  • 直线分离线段:给定n条线段,判断是否存在一条直线能将它们分成两个非空集合,且不接触任何线段。可以通过从几何基问题规约,将点替换为围绕该点的微小间隙,使得分离线存在当且仅当原三点共线。
  • 条带覆盖矩形:给定一个轴对齐矩形和若干平行条带(由两条平行线界定的区域),判断这些条带的并集是否完全覆盖矩形。这可以通过对“直线分离线段”问题的实例进行对偶变换得到。
  • 三角形覆盖三角形/并集面积/并集空洞:给定一个大三角形和许多小三角形,判断小三角形是否完全覆盖大三角形(覆盖问题)、计算小三角形并集的面积(面积问题)、判断并集是否包含空洞(空洞问题)。这些问题都可以从“条带覆盖矩形”问题规约,通过用三角形拼接来模拟条带和矩形。
  • 点覆盖(线性规划近似):给定二维平面上n个半平面和一个整数k,判断是否存在一个点至少被k个半平面包含。这可以通过从“条带覆盖矩形”问题规约,巧妙地将条带和矩形的约束转化为半平面的计数条件。
  • 弱可见性:给定两条线段(或一个点与一个三角形),判断它们是否弱可见(即存在各自上的一点,其连线不被其他障碍物阻挡)。对于线段弱可见性或点能否看到三角形等问题,可以规约自三角形覆盖问题。
  • 运动规划
    • 平面运动规划:给定一个可平移旋转的线段机器人、障碍物以及起点终点,判断是否存在可行路径。可以构造类似几何基问题的障碍物布局,使得机器人通过当且仅当存在特定的分离线(即原三点共线)。
    • 三维平移运动规划:机器人是一个垂直线段,障碍物是水平三角形,只允许平移。同样可以构造一个“笼子”,使得机器人逃脱当且仅当笼子底部存在未被三角形覆盖的空隙。

这些规约展示了3SUM猜想在计算几何领域的深远影响,将众多看似不同的问题的复杂性联系在了一起。

图论中的类似下界猜想

除了二次方时间下界,在立方时间领域也有类似的核心猜想,主要围绕 全对最短路径(APSP) 问题。

APSP猜想 认为,在带权图中计算所有顶点对之间的最短路径距离,需要 Ω(n^(3-ε)) 时间(对于稠密图,n为顶点数)。基于此猜想,一系列问题被证明是 APSP困难 的,即如果它们存在真正的次立方时间算法,则APSP也存在。

一些APSP困难的问题包括:

  • 检测负权三角形:图中是否存在总权重为负的三角形。
  • 图的半径/中位数:计算图的半径(所有顶点偏心率的最小值)或中位数(到所有其他顶点距离之和最小的顶点)。
  • 列出所有三角形:在无权重图中列出所有三角形。

值得注意的是,目前 3SUM猜想APSP猜想 之间尚未建立正式的规约关系,但它们共同构成了理解多项式时间低端复杂性的重要框架。

总结

本节课中我们一起学习了计算复杂性理论中关于“低端”多项式时间的问题。我们深入探讨了3SUM问题及其猜想,它是证明许多问题需要二次方时间的基础。我们看到了如何通过规约,将3SUM的困难性传递到一系列计算几何问题,如共线性检测、运动规划、覆盖问题等。最后,我们简要介绍了图论中基于APSP猜想的立方时间下界研究。这些猜想和规约技术,帮助我们理解了许多自然问题为何看似需要二次方或立方方时间,并描绘了算法下界研究中的一个活跃而有趣的领域。

算法下界:22:PPAD 完全性入门

在本节课中,我们将学习一个名为 PPAD 的计算复杂性类。这个类源于对纳什均衡、布劳威尔不动点定理和斯佩纳引理等存在性定理的计算复杂性研究。我们将了解为什么传统的 NP 完全性框架不足以描述这些问题,并探索 PPAD 的定义及其第一个完全问题。


动机:三个经典的存在性定理

上一节我们介绍了课程背景,本节中我们来看看驱动 PPAD 类定义的三个核心数学定理。

纳什定理
纳什定理指出,任何有限博弈(即玩家数量有限、策略集有限)都存在一个混合策略纳什均衡。在一个博弈中:

  • 有 N 个玩家。
  • 每个玩家 i 有一个策略集 S_i。
  • 每个玩家 i 有一个收益函数 u_i,它将所有玩家的策略组合映射到一个实数。

一个混合策略是玩家在其策略集上的一个概率分布。一组混合策略 (x_1, ..., x_N) 构成一个纳什均衡,当且仅当对于每一个玩家 i,给定其他玩家的策略,玩家 i 无法通过单方面改变自己的策略来获得更高的期望收益。

用公式表示,对于所有玩家 i 和所有可能的替代混合策略 x_i‘,有:
E_{s~x}[u_i(s)] >= E_{s_{-i}~x_{-i}, s_i~x_i'}[u_i(s)]
其中 x 表示所有玩家的混合策略组合。

布劳威尔不动点定理
布劳威尔定理指出,任何从一个紧致凸集到其自身的连续函数,都存在一个不动点(即 f(x) = x 的点)。例如,将一个圆盘旋转、收缩平移或连续变形到自身内部,总有一个点保持不变。

斯佩纳引理
斯佩纳引理是一个组合拓扑引理。考虑一个被三角化的正方形(或 n 维单形),其顶点用有限种颜色着色。如果边界上的着色满足特定条件(例如,在正方形的三条边上分别缺少某种颜色),那么无论内部顶点如何着色,内部至少存在一个“全色”三角形(其三个顶点颜色互不相同)。事实上,全色三角形的数量是奇数。


计算问题与 NP 的局限性

上一节我们了解了这些定理保证了解的存在性,本节中我们来看看它们的计算版本。

我们可以定义对应的搜索问题:

  1. NASH:给定一个博弈描述和一个精度参数 ε,找到一个 ε-近似纳什均衡(即没有玩家能通过单方面偏离获得超过 ε 的收益改善)。
  2. BROUWER:给定一个对紧致凸集到自身的连续函数的简洁描述(例如一个电路),以及一个精度参数 ε,找到一个 ε-近似不动点(即满足 ||f(x) - x|| < ε 的点 x)。
  3. SPERNER:给定一个对指数级大规模三角化着色实例的简洁描述(例如一个能根据坐标输出颜色的电路),其边界着色满足斯佩纳条件,找到一个全色三角形。

这些问题都是“完全”的:对于任何有效输入,解都存在。它们属于复杂度类 TFNP(Total Function NP),即那些解总存在且验证容易的 NP 搜索问题。

然而,传统的 NP 完全性概念(如 SAT 问题)并不适用于它们。因为要将 SAT 归约到 SPERNER,你必须将可能无解的 SAT 实例映射到总有解的 SPERNER 实例。如果归约后 SPERNER 的“解”(全色三角形)总是存在,那么你总能将其转换回 SAT 的“解”(可满足赋值),但这对于原本不可满足的 SAT 实例是不可能的。因此,不存在这种保持解存在性的归约。我们需要一个新的框架来刻画这类“总是有解”的难题。


从证明到复杂性类:PPAD 的诞生

上一节我们指出了传统框架的不足,本节中我们深入探讨斯佩纳引理的证明,它将引导我们定义 PPAD。

斯佩纳引理的标准证明使用了一个“路径追踪”论证:

  1. 在三角化网格外引入一个额外的“虚拟”全色三角形。
  2. 定义一条行走路径:从虚拟三角形开始,反复穿过“红-黄”边(且黄在左)进入相邻三角形。
  3. 由于边界着色特性,路径无法走出网格,也不会循环(因为进入和离开一个三角形需通过不同的边),并且网格是有限的。
  4. 因此,路径必须终止于某个内部的全色三角形。这个终点就是我们要找的解。

这个证明可以抽象为在一个有向图中寻找一个“不平衡”顶点(入度不等于出度):

  • 将每个三角形视为图的一个顶点。
  • 如果三角形 A 能通过一条“红-黄”边(黄在左)走到三角形 B,则连一条从 A 到 B 的有向边。
  • 在这个有向图中,每个顶点的入度和出度最多为 1(因为最多只有一条边进入和一条边离开)。因此,整个图由一些路径和环组成。
  • 虚拟三角形是一个不平衡顶点(只有出边,没有入边)。
  • 在这样的图中,如果存在一个不平衡顶点,则必定存在另一个不平衡顶点(由奇偶性保证)。而全色三角形恰好对应图中的不平衡顶点(度数为 1)。

于是,证明的核心被简化为一个组合事实:在一个每个顶点入度和出度至多为 1 的有向图中,若存在一个不平衡顶点,则必存在另一个不平衡顶点。


定义 PPAD 与 END-OF-THE-LINE

基于上述洞察,我们可以定义一个计算问题,它捕获了在“简洁描述”的指数级大图中寻找另一个不平衡顶点的复杂性。

END-OF-THE-LINE 问题
输入由两个多项式规模电路描述:

  • P (可能的“前驱”电路)
  • N (可能的“后继”电路)
    这两个电路试图描述一个顶点集为 {0,1}^n 的有向图 G。对于顶点 u 和 v,当且仅当 v = N(u)u = P(v) 时,图中存在一条从 u 到 v 的有向边。这保证了每个顶点的入度和出度至多为 1。
    已知:顶点 0^n(全零串)在 G 中是不平衡的(通过查询 P 和 N 容易验证)。
    任务:输出另一个不平衡的顶点。

复杂度类 PPAD
PPAD 被定义为所有可以多项式时间归约到 END-OF-THE-LINE 问题的 TFNP 中的问题。PPAD 代表“有向图奇偶论证”(Polynomial Parity Argument on Directed graphs)。

直观理解:END-OF-THE-LINE 问题就像是给定了两个“黑盒”函数,让你在一个可能是指数大的路径/环结构中,从起点 0^n 出发,找到路径的终点或另一个分支点(即另一个不平衡顶点)。斯佩纳引理的构造正是这种问题的一个具体实例。


PPAD 完全性初步

上一节我们定义了 PPAD,本节中我们来看看 PPAD 完全性的第一个关键问题。

研究证明,SPERNER 和 BROUWER 都是 PPAD 完全问题。这意味着它们不仅属于 PPAD,而且和 END-OF-THE-LINE 一样难。一个更核心的 PPAD 完全问题是算术电路可满足性问题的一个近似变体。

近似算术电路可满足性 (Approximate Circuit Sat)
输入:一个由特殊门电路组成的算术电路,允许循环。门类型包括:

  • = (赋值):y = x
  • + (加法):z = min(x + y, 1)
  • - (减法):z = max(x - y, 0)
  • *c (乘常数):z = min(c * x, 1) (c 为常数)
  • == (比较):如果 x > y,则 z 必须为 0;如果 x < y,则 z 必须为 1;如果 x = y,则 z 可以是 [0,1] 中任意值。
    所有变量和门的输出值被限制在区间 [0, 1] 内。
    任务:为所有变量和门输出分配 [0,1] 之间的值,使得所有门的关系被近似满足(允许一定的计算误差)。

这个问题被证明是 PPAD 完全的。它扮演的角色类似于布尔电路可满足性问题 (SAT) 之于 NP 完全性。从这个问题出发,可以构造出到 NASH 等其他自然问题的归约。

例如,考虑一个简单电路:

A -----> (==) ----> (=1/2) ----> C
        比较门        赋值门
        |
        v
        B

其中 (=1/2) 门强制 C = 1/2。分析可知,唯一能(近似)满足所有约束的解是 A = B = C = 1/2。比较门在输入相等时,其输出可以是任意值(这里设为 1/2),从而满足赋值门的要求。


总结与展望

本节课中我们一起学习了:

  1. 动机:纳什均衡、布劳威尔不动点、斯佩纳引理等存在性定理引出了对“总有解但难找”问题的计算复杂性研究。
  2. 局限性:传统的 NP 完全性框架无法很好地刻画这类总搜索问题。
  3. 核心洞察:斯佩纳引理的证明可抽象为在特定结构的有向图中寻找不平衡顶点。
  4. 定义 PPAD:基于上述洞察,定义了 END-OF-THE-LINE 问题及复杂度类 PPAD,用以捕获这类基于有向图奇偶论证的复杂性。
  5. PPAD 完全性:斯佩纳、布劳威尔以及一个近似的算术电路可满足性问题被证明是 PPAD 完全的。

在下节课中,我们将看到如何利用这个算术电路问题,证明寻找纳什均衡是一个 PPAD 完全问题,从而在计算复杂性上确认其内在的难度。

023:PPAD 归约

在本节课中,我们将学习PPAD类及其完全性证明,特别是如何将算术电路满足性问题归约到纳什均衡问题。我们还将简要介绍其他基于存在性论证的复杂性类,如PPA、PLS和PPP。


课程回顾

上一节我们介绍了拓扑学中的有趣定理(纳什、斯佩纳、布劳威尔),并定义了相应的问题。由于这些定理的存在,对应的搜索问题总是有解的。我们研究了TFNP中那些总是有解的问题,并试图找出使它们“总有解”的组合论证。这个论证被证明是基于有向图的奇偶论证。基于此,我们定义了PPAD类,并引入了PPAD完全问题——算术电路满足性问题。本节课,我们将从该问题出发,展示一系列PPAD硬度归约。

首先,让我们回顾一下PPAD类的核心定义。PPAD类具有组合特性。其定义方式是:在所有可能的n位字符串(一个指数级大的集合)上定义一个图。通过提供两个电路P(可能的前驱)和N(可能的后继),我们可以在字符串V1和V2之间建立一条有向边,条件是它们满足父子关系(即V2认为V1是其父节点,且V1认为V2是其子节点)。对所有字符串对进行此操作后,我们得到一个图。问题“线尾”是:给定这两个电路及其定义的图,如果全零字符串的入度与出度不同(即不平衡),则要求你找到另一个不平衡的节点(字符串)。PPAD类就是所有在多项式时间内可归约到“线尾”问题的TFNP搜索问题。

需要记住的是,由这两个电路定义的图具有特定结构:每个顶点的入度和出度最多为1。因此,图由一些路径和环组成。我们寻找的是所有“红色”点(即除全零点外的任何不平衡点)。

另一方面,我们最初的目标问题(纳什均衡、布劳威尔不动点)具有更“连续”的特性。因此,我们没有直接尝试将“线尾”问题归约到纳什或布劳威尔问题,而是引入了一个更接近连续领域的问题——算术电路满足性问题,并声称它是PPAD完全的。这使其成为归约的自然起点。

以下是该问题的定义:

输入:一个电路,包含两种节点:变量节点(V1 到 Vn)和门节点(G1 到 Gm)。每个门节点有六种可能类型之一:赋值门、加法门、减法门、设为常数门、乘以常数门、比较门。根据类型,门节点有0到2个输入,并总是有1个输出。该电路没有输入变量,允许循环。关键点是:每个变量节点的入度为1;每个门节点的输入数(0、1或2)取决于其类型;边只存在于变量节点和门节点之间(或门节点和变量节点之间),变量节点之间或门节点之间没有边。

任务:为电路中的变量分配一个在[0,1]区间内的实数值,使得所有门的约束条件得到满足。以下是门约束:

  • 赋值门:输出变量的值等于输入变量的值。
  • 加法门:输出变量的值等于两个输入变量值之和(但需限制在[0,1]内,即若和大于1则取1,小于0则取0)。
  • 减法门:输出变量的值等于第一个输入减去第二个输入的值(同样限制在[0,1]内)。
  • 设为常数门:输出变量被设为一个特定常数值c(在[0,1]内)。
  • 乘以常数门:输出变量的值等于输入变量乘以一个常数c(结果限制在[0,1]内)。
  • 比较门:如果第一个输入值大于第二个,则输出为1,否则为0。

我们上次声称,对于任何这样的电路,总存在一个满足所有约束的赋值(这需要通过不动点定理来论证)。我们还声称,找到这样一个赋值是PPAD完全的。此外,我们可以在门约束中允许±ε的误差,这个ε也是输入的一部分。也就是说,我们可以要求满足近似约束。

上次我们还简要展示了纳什均衡PPAD硬度的证明结构:将通用的PPAD完全问题“线尾”嵌入到三维立方体的几何中,定义斯佩纳引理的一个版本,然后将其归约到算术电路满足性问题。我们没有展示归约的细节,因为那部分很复杂。本节课,我们将展示如何从算术电路满足性问题归约到纳什均衡问题,以说明使用该问题向其他问题归约的便利性。

这就是上节课的回顾。本节课,我们将重点讨论纳什均衡的PPAD完全性证明,简要介绍来自组合数学的其他两个例子,最后讨论其他存在性论证及其定义的复杂性类(PPA、PPP、PLS)。在开始之前,回答上节课的一个问题:PPAD代表“有向图的多项式奇偶论证”,反映了该类是基于有向图的奇偶论证这一事实。


从算术电路满足性到纳什均衡的归约

我们将重点关注从算术电路满足性到纳什均衡的归约。在展示归约之前,需要先介绍一个概念:图形博弈和其特例多矩阵博弈

图形博弈由Kearns、Littman和Singh在2001年引入,旨在刻画玩家的收益仅依赖于少数其他玩家行动的场景(例如,由于地理或通信限制)。在图形博弈中,玩家是(有向)图中的节点,一个玩家的收益仅依赖于她自己的策略以及指向她的玩家的策略。

多矩阵博弈是图形博弈的一个特例,出现得更早。在多矩阵博弈中,节点的收益函数是可加分离的。具体来说,一个玩家V的收益,作为所有人混合策略的函数,可以分离为所有指向她的边上的某个双人收益函数的和。由于玩家独立随机化,任何关于一对玩家策略的期望(其分布是乘积分布)都可以写成一个二次型。因此,多矩阵博弈可以由一个有向图定义,其中每条有向边关联一个矩阵(定义该边上的双人收益)。之所以叫“多矩阵”,是因为它涉及许多矩阵(而两人博弈只需要两个矩阵)。

现在,我们想要做的是:为了将算术电路满足性归约到纳什均衡,我们首先将其归约到寻找多矩阵博弈的纳什均衡。这一步完成后,我们再将其归约到两人博弈。第一步(到多人博弈)实际上是简单的部分,之前(从其他问题归约到算术电路满足性)的部分才是困难的。

那么,如何将算术电路满足性问题归约到多矩阵博弈的纳什均衡问题呢?类似于NP完全性归约中的“ gadget ”思想,我们需要找出在多矩阵博弈中能够模拟电路中各种运算的小型构件。我们将引入所谓的博弈构件——即执行算术运算的小型多矩阵博弈,然后将它们组合起来以模拟一个算术电路满足性实例。

我们将以加法构件为例来展示。该构件包含四个玩家,每个玩家只有两个纯策略:0和1。因此,一个玩家的混合策略就是她以概率p选择1,p是[0,1]区间的一个实数。构件的结构如下:有四个玩家X、Y、W、Z。X和Y是构件的输入玩家,W是辅助玩家,Z是输出玩家。输入玩家指向W,但W和Z的行动不影响X和Y。输出玩家Z的收益依赖于W。我们需要定义W和Z的收益函数,使得在这个小博弈的任何纳什均衡中,加法运算得以体现。

具体定义如下:

  • 玩家W的收益:若W选择策略0,则其期望收益为 Prob(X=1) + Prob(Y=1)。若W选择策略1,则其期望收益为 Prob(Z=1)
  • 玩家Z的收益:若Z选择策略0,则无论W做什么,其收益恒为0.5。若Z选择策略1,则其收益为 1 - Prob(W=1)

可以构造具体的收益矩阵来实现这些期望收益。

我们的主张是:在任何包含此构件的大型多矩阵博弈的纳什均衡中,输出玩家Z以概率1行动的概率,等于输入玩家X和Y以概率1行动的概率之和(当然,结果被限制在[0,1]之间)。可以通过简单的案例分析来证明这一点。关键在于,算术运算实际上发生在玩家选择的混合策略概率中。

类似地,我们可以定义减法构件,只需将W选择0时的收益改为 Prob(X=1) - Prob(Y=1),证明思路完全相同。

我们声称,可以实现模拟算术电路满足性所需的所有类型的门。以下表格总结了所需构件(用 p(Node) 表示节点以概率1行动的概率):

门类型 条件(在纳什均衡中需满足)
赋值 p(Z) = p(X)
加法 p(Z) = min(p(X) + p(Y), 1)
减法 p(Z) = max(p(X) - p(Y), 0)
设为常数 c p(Z) = c
乘以常数 c p(Z) = min(c * p(X), 1)
比较 p(X) > p(Y),则 p(Z)=1;若 p(X) < p(Y),则 p(Z)=0;相等时任意。

因此,给定一个算术电路满足性实例,我们可以通过组合对应的构件来创建一个多矩阵博弈,使得该博弈的任何纳什均衡都满足所有门条件。这样,通过找到该博弈的一个纳什均衡,我们就解决了初始的算术电路满足性实例。这也间接证明了每个算术电路满足性实例都必然有解(因为纳什定理保证纳什均衡存在)。此外,可以证明解可以用有理数表示,且其描述复杂度是输入规模的多项式。

关于比较构件,我们可以展示其简单实现:输出玩家Z的收益设计为,当 p(X) > p(Y) 时,Z倾向于选择1;当 p(X) < p(Y) 时,Z倾向于选择0;相等时则无差异。这很容易通过收益矩阵实现。


从多矩阵博弈到两人博弈

接下来,我们需要从多矩阵博弈(多人)归约到两人博弈。首先要注意,我们实现的所有门构件都可以用二分图来表示。也就是说,我们可以用两种颜色(例如红色和蓝色)给构件中的玩家着色,使得输入和输出玩家在同一侧,辅助玩家在另一侧。我们声称所有需要的门都可以用这种二分图结构的多矩阵博弈实现。

基于此,我们可以创建“律师”游戏。我们将有一个红方律师和一个蓝方律师。红方律师的策略集是其所有红色客户策略集的并集(而非笛卡尔积,否则归约规模会指数膨胀)。蓝方律师同理。

在律师游戏中,如果红方律师选择红色客户U的策略i,蓝方律师选择蓝色客户V的策略j,那么他们的收益就是原多矩阵博弈中客户U和V在采取策略(i, j)时会获得的收益。如果U和V在原博弈中没有边相连,则双方收益均为0。

一个美好的设想是:如果(x, y)是律师游戏的一个纳什均衡,那么观察律师分配给各个客户的边缘概率分布,这些分布构成的集合就是原多矩阵博弈的一个纳什均衡。然而,这只是一个设想,因为律师可能只代表有利可图的客户,给某些客户的概率分配为0,导致边缘分布未定义。

为了解决这个问题,我们引入一个高赌注游戏,让律师们在玩原游戏的同时也玩这个游戏。假设每个律师都有n个客户(可通过填充虚拟玩家使数量相等)。我们将客户任意标记为1到n。

高赌注游戏的规则如下:当红蓝律师选择策略时,如果他们选择的策略所属的客户标签相同,则红方律师获得一大笔钱M,蓝方律师损失M。如果他们选择的客户标签不同,则双方收益均为0。这本质上是一个零和游戏,红方律师试图“抓住”蓝方律师(选择相同标签),蓝方律师试图“躲避”。

可以证明,在这个高赌注游戏的任何纳什均衡中,每个律师都以均匀的概率(1/n)选择代表每个客户的策略集(至于在每个客户的具体策略间如何分配概率则是任意的)。

现在,我们将要用于归约的最终两人博弈定义为原律师游戏高赌注游戏(即收益相加)。我们选择M为一个极大的数,远大于原博弈中的最大收益。

可以分析这个组合游戏的纳什均衡。由于M极大,在决定如何将总概率质量分配给不同客户时,高赌注游戏占主导地位,因此律师们会以近似均匀的概率代表每个客户。而在决定了分配给某个客户U的总概率质量X_U后,律师如何在其具体策略间分配X_U,则主要由原律师游戏部分决定,因为不同策略间的收益差不再包含巨大的M。

通过分析均衡条件,我们可以推导出,由此产生的边缘概率分布构成了原多矩阵博弈的一个近似纳什均衡。近似误差可以通过选择更大的M来控制。由于我们的算术电路满足性问题允许门约束有±ε的误差,因此这个近似纳什均衡对应了原问题的一个近似解,并且该归约保持了PPAD难度。

这就是从多矩阵博弈到两人纳什均衡归约的核心思想。最初的归约论文是到了四人博弈(因为当时使用的乘法门构件需要四部分图),但后续研究(由Chen和Deng完成)发现我们实际并未使用通用的乘法门,所有必需的门都可以用二分图实现,因此可以归约到两人博弈。


其他存在性论证与复杂性类

PPAD建立在有向图奇偶论证之上。组合数学中还有其他自然的存在性论证,每个都对应一个不同的复杂性类。

  1. 无向图奇偶论证:如果一个无向图有一个奇度顶点,那么它必有另一个奇度顶点(握手引理)。这定义了 PPA 类(多项式无向图奇偶论证)。
  2. 局部搜索:每个有向无环图(DAG)都有一个汇点。这定义了 PLS 类(多项式局部搜索)。
  3. 鸽巢原理:如果一个函数将n个元素映射到n-1个元素,则必然存在碰撞。这定义了 PPP 类(多项式鸽巢原理)。

PPA类

类似于PPAD,输入是一个电路C,输入n位,输出一个包含k个n位字符串的列表。该电路在所有字符串上诱导一个无向图:在V1和V2之间连边,当且仅当V2在V1的邻居列表中,且V1在V2的邻居列表中。这样定义的图,每个顶点的度数最多为2k。问题“奇度节点”是:如果全零字符串的度数为奇数,则找到另一个度数为奇数的节点。PPA类就是所有可多项式时间归约到该问题的TFNP搜索问题。一个著名的PPA完全问题是史密斯问题:给定一个三正则图及其中的一个哈密顿回路,找到另一个不同的哈密顿回路(史密斯定理保证了其存在性)。

PLS类

输入是两个电路。一个电路C将n位字符串映射到一个邻居列表(多个字符串)。另一个电路S为每个字符串计算一个“分数”(有理数)。由此诱导一个有向无环图:从V1到V2有边,当且仅当V2在V1的邻居列表中,且S(V2) > S(V1)。问题“寻找汇点”是:找到一个顶点X,其分数不低于任何邻居。PLS类就是所有可归约到该问题的TFNP搜索问题。一个例子是局部最大割问题:给定一个带权图,找到一个割,使得无法通过移动单个顶点来增加割的权值。对于任意权重,该问题是PLS完全的。

PPP类

输入是一个电路C,将n位字符串映射到n位字符串。问题“寻找碰撞”是:要么找到一个X使得C(X) = 0^n,要么找到两个不同的X, Y使得C(X) = C(Y)。鸽巢原理保证了解的存在。PPP类就是所有可归约到该问题的TFNP搜索问题。

这些类之间存在包含关系:PPAD ⊆ PPA,PPAD ⊆ PPP。PPAD也是PLS的子集吗?这需要具体验证,但通常认为它们互不包含。

最后,回答一个关于为什么需要定义这些特定类而不是直接研究TFNP完全问题的重要问题:TFNP不是一个“语法类”。也就是说,给定一个图灵机,你无法判定它是否计算一个总问题(即对所有输入都有输出)。因此,我们必须关注那些由特定存在性论证保证“总有解”的问题类别,这样才能为这些类别定义复杂性类并证明完全性结果。否则,我们得到的将是“承诺类”,不利于建立完全性理论。


总结

本节课我们一起学习了:

  1. PPAD类的回顾,其基于有向图的奇偶论证。
  2. 算术电路满足性问题作为PPAD完全问题的核心地位。
  3. 如何通过设计博弈构件(如加法、减法、比较构件),将算术电路满足性问题归约到多矩阵博弈的纳什均衡问题。
  4. 如何通过创建“律师”游戏和“高赌注”游戏,将多矩阵博弈进一步归约到两人纳什均衡问题,从而证明寻找纳什均衡是PPAD难的。
  5. 简要介绍了其他基于组合存在性论证的复杂性类:PPA(无向图奇偶论证)、PLS(局部搜索)、PPP(鸽巢原理),并给出了各类中的典型问题。
  6. 理解了定义这些特定类的必要性在于它们是由语法上可检查的存在性定理所保证的“总有解”问题类,便于建立完全性理论。

这些概念构成了理解算法下界中基于拓扑和组合论证的复杂性类的基础。

posted @ 2026-03-29 09:22  绝不原创的飞龙  阅读(6)  评论(0)    收藏  举报