复性论
"Were-you-last?" Game
Description
\(m\) 个人以任意顺序进入房间。房间里有无穷格 \(0/1\) 内存,每个人进入房间后,可以执行不超过 \(t\) 次:读取某格内存,然后写入信息。
- 只在意访问次数,相关计算时间可以忽略。
- 读取完后必须立刻写入:读入格 \(1\)、读入格 \(2\)、写入格 \(1\),这需要三次操作。
是否存在一种确定性策略,使得无论以何种顺序进入,最后一个进入房间的人都知道他是最后一个进入的?
Log Solution
维护一个 \(\log_2m\) 位的 counter。进房间的人如果发现 counter 为零则将其设为 \(m\),否则将其减一,且如果减一后为零则得知自身是最后一个进的。
有 \(t=\log_2m\),且占用 \(\log_2m\) bit 的内存。
Twice-Log Solution
我们只在意 01 连续段:段数不超过 \(\log_2m\),且每一段长度不超过 \(\log_2m\)。因此,可以用 \(\log_2\log_2m\) 位维护一个段数计数器,再用 \(\log_2m\) 个 \(\log_2\log_2m\) 位维护每一段长度。需要使用一个栈式的结构,最低位在栈顶,因为视情况而定需要在最低位处增删段。
每次修改至多干涉到最低位的 \(2\) 段以及计数器,因此有 \(t=O(\log_2\log_2m)\),但是占用内存数反倒增加为 \(\log_2m\cdot\log_2\log_2m\)。这表明,不能通过对压缩后的策略再次压缩来达到更少的开销。
但是,第一个人一次只能初始化 \(\log_2\log_2 m\) 位,怎么办?
- 解法一:默认当前的 state 存储的信息其实是 state xor \(m\)。就算异或了 \(m\),单纯的自减还是只会影响到不超过 \(3\) 段。
- 解法二:让前 \(\log_2m\) 个人协作初始化。需要一个额外的 counter 来调控这个过程。
Optimality-Symmetric Strategy
上述解法已经达到了下界:不存在 \(t\leq0.4\log_2\log_2m\) 的解法。
考虑令 \(S_i\) 为所有可能被第 \(i\) 个人访问的位构成的集合。则因为“第 \(i\) 个人访问的第 \(j\) 位是 \(0/1\)”分别会引发两种可能的子决策态,会有 \(|S_i|\leq2^t-1\)。
如果所有人的策略都是相同的 (Symmetric Strategy),即所有 \(S_i\) 都等于同一个 \(S\),则当 \(t<\log_2\log_2m\) 时,即有 \(|S|<\log_2m\);那么,\(S\) 中所有位的所有可能状态即有 \(2^{|S|}<m\),此时对于任何访问顺序都存在两个人 \(i<j\),在其离开后 \(S\) 的状态全同。此时,顺序 \(1,\dots,i,i+1,\dots,j,j+1,\dots,m\) 和 \(1,\dots,i,j+1,\dots,m\) 不可区分。
Optimality-Asymmetric Strategy
如果所有人策略并非全同呢?
假设存在 \(p\) 个人 \(S_1,\dots,S_p\),其中两两交集均为同一个集合 \(S\)。则此时 Adversary 可以先任意排列剩余 \(m-p\) 个人的顺序,然后剩下这 \(p\) 个人唯一通讯手段就是共有交集 \(S\)。则只要保证 \(|S|<\log_2p\),全同时的分析即可直接被迁移。
现在问题是如何找到这些人。两两交集均相同的集族被称作 sunflower,且有所谓的 Sunflower Lemma:
- 对于大小均不超过 \(l\) 的集合 \(S_1,\dots,S_m\),只要 \(m>(p-1)^{l+1}l!\),则必然存在包含 \(p\) 个集合的 sunflower。
关于 \(l\) 归纳。
- 当 \(l=1\) 时,所有集合都只含单一元素;则只要 \(m>(p-1)^2\),由抽屉原理,要么存在至少 \(p\) 个相同的集合,要么存在至少 \(p\) 个不同的集合,哪种场合都可以找到 sunflower。
- 对于 \(l\geq2\),取尽量多的两两不交集合 \(S_1,\dots,S_t\)。如果 \(t\geq p\) 则它们是交为空的 sunflower;否则,令 \(S=\bigcup S_i\),则 \(|S|\leq(p-1)l\),且 \(B\) 与所有集合都有交(否则可以将其引入并扩大 \(t\))。既然 \(m>(p-1)^{l+1}l!\),则由抽屉原理必然存在一个元素 \(x\in B\),其被包含于 \(\dfrac m{|S|}>\dfrac{(p-1)^{l+1}l!}{(p-1)l}=(p-1)^l(l-1)!\) 个集合中。自这些集合中删去 \(x\),规约到 \(l-1\) 的 case,找到其中一个 size 为 \(p\) 的 sunflower 然后再往里面全都插入 \(x\) 即可。
在这个场合,有 \(|S_i|\leq l=2^t-1\)。若有 \(t=0.4\log_2\log_2m\),则有 \(l<(\log_2m)^{0.4}\),同时有 \(({\color{red}2^l})^{l+1}l!<(2^l)^{l+1}l^l=2^{l^2+l+l\log+2l}<m\)。因此,即有 \(p>{\color{red}2^l}\),则有 \(|S_i|\leq l<\log_2 p\)。
Comparison-Based Sorting
堆排和归并排序都是基于比较的排序,且做到了最坏场合复杂度 \(\Theta(n\log n)\)。
存在 \(\Omega(n\log n)\) 的下界:比较的决策树是完全二叉树,且需要有 \(n!\) 个叶子,于是深度要至少是 \(\log_2(n!)\),使用 Stirling 公式得到其为 \(n\log n\)。
优化的方式有计数排序 (counting sort)、基数排序 (radix sort) 和桶排 (bucket sort),但它们都不是基于比较的排序。
Cell Probe Model
Definition
除了访问内存操作以外其它操作均不计时间的 RAM 机。
RAM 机:可以使用地址进行访问的机器(对比 Turing Machine 这样必须一步步移动指针的机器)
一个支持信息检索 (Information Retrivial) 的数据结构 (Data Structure) 由两个阶段组成:
- 预处理阶段 (preprocessing phase) 接受输入并对内存进行一些处理。
- 询问阶段 (query phase) 判断一个元素是否属于输入。
- 此外,动态 (dynamic) 的数据结构在询问阶段还可以进行更新 (update),对输入进行修改。
考虑输入集合 \(S\),令集合大小 \(|S|=n\),而其中所有键值都是 \([1,m]\) 中整数。
如果 \(M=O(n)\),则直接计数排序即可。因此我们显然只关心 \(m\gg n\) 的场合。
Common Schemes
常见的两种解法:
- 二分查找。Worst Case 下是 \(\left\lceil\log_2(n+1)\right\rceil\) 的。
- 哈希表。虽然平均是 \(O(1)\) 的,但是 Worst Case 是 \(O(n)\) 的。
\(\left\lceil\log_2(n+1)\right\rceil\) 是 worst case optimal 的吗?
将模型形式化:键值空间是 \(\cur{1,\dots,m}\),我们关心如何将包含 \(n\) 个不同键值的集合 \(S\) 存在一个大小为 \(n\) 的表中。表结构 (table structure) 可以被看做一个函数 \(T\),它把所有 \(n\)-键值集合 \(S\) 映到它的重排;而与之并立的是搜寻策略 (search strategy) \(S\)。二者共同确定最坏场合查询次数 \(\t{Cost}(S,T)\)。
Simple Case: \(n=2\)
如果 \(m=3\) 时,\(n=2\) 可以循环放置 (12/23/31),这样询问一个即可获知另一个。因此,只需一次询问即可。
相反,当 \(m=4\) 时,考虑 \(S=\cur{x,y}\) 时是按照 \(x\mid y\) 还是 \(y\mid x\) 的顺序排,分别在图上添加 \(x\to y\) 或 \(y\to x\) 的有向边。则只要存在一个非循环的三元环,worst case 就需要两次询问,而 \(m=4\) 时竞赛图必然存在非循环三元环。
Generalized Case: Fixed Permutation
如果 \(n\geq2\) 且 \(m\geq2n-1\),且 \(T\) 总是将集合以递增序排列,则 worst case 下即需 \(\left\lceil\log_2(n+1)\right\rceil\) 次询问,因为一次询问唯一能获得的信息就是二分信息。
进一步,如果 \(T\) 总是将集合以某种确定方式 \(\sigma\) 排列,则仍然是 worst case \(\left\lceil\log_2(n+1)\right\rceil\) 的。
Universal Case: Intro
对于所有 \(n\),当 \(m\) 足够大时,对于一切 \(T\) 都存在键值集合 \(\Gamma\sube\cur{1,\dots,m}\) 其中 \(|\Gamma|=2n-1\),且所有 \(\Gamma\) 的 \(n\)-子集都以某个固定的 \(\sigma\) 排列。
这是因为,令集族 \(\c A\) 是 \(\cur{1,\dots,m}\) 的全体 \(n\)-子集,则它关于排列方式 \(\sigma\) 可以被分到 \(n!\) 个桶里。
Interlude: Ramsey Theorem
Ramsey 定理:对于边双色染色的完全图,当图的大小足够大时,必然可以找到至少某阈值的单色团。
其第一个扩展是 Ramsey 数 \(R(r,s)\),是红蓝双色染色 \(n\)-点图中,满足必然存在 \(r\)-红团或 \(s\)-蓝团的最小 \(n\)——此时阈值 \(r,s\) 解耦。
有 \(R(r,s)\leq R(r-1,s)+R(r,s-1)\)。
考虑一个 \(n=R(r-1,s)+R(r,s-1)\) 点的图。任取其中一点 \(x\),其邻域中或者有 \(R(r-1,s)\) 个通过红边相连的点,或者有 \(R(r,s-1)\) 个通过蓝边相连的点。前者若存在 \(r-1\)-红团则加入 \(x\),否则存在 \(s\)-红团;后者同理。
其第二个扩展是多(但有限)色 Ramsey 数 \(R(n_1,\dots,n_k)\)。只要颜色数目有限,则多色 Ramsey 数仍然是有限的。
其第三个扩展是超图下的扩展 Ramsey 定理。\(m\)-超图 (hypergraph) 是每条边恰连接 \(m\) 个不同点的图,而 完全 \(m\)-超图 (complete \(m\)-hypergraph) 即为全体 \(m\)-子集都是边的图。于是即有 \(m\)-超图 Ramsey 定理:
- 对于一切 \(m,c\) 和一切 \(n_1,\dots n_c\),存在一个整数 \(R(n_1,\dots,n_c;c,m)\) 满足所有 \(R(n_1,\dots,n_c;c,m)\)-点 \(c\)-色完全 \(m\)-超图都必然存在一个 \(i\),使得存在 \(n_i\)-点 \(i\)-单色团。
Universal Case: Return
使用扩展 Ramsey 定理,可以知道在完全 \(n!\)-色 \(n\)-超图中,当点数足够大时必然存在某色下的 \(2n-1\)-点单色团 \(\Gamma\),此时 \(\Gamma\) 就是一个固定集合问题,是 worst-case \(\left\lceil\log_2(n+1)\right\rceil\) 的。
Dynamic Partial Sum
Definition
维护数组,支持单点增加和前缀求和。
模型是 RAM,所有元素属于一个群 \(\bb G\),其中 \(|\bb G|=2^\delta\) 因此储存需要 \(\delta\)-位。电脑的字长是 \(w\geq\delta\)。单点增量 \(\Delta\) 不超过 \(\delta\)-位。
Results
[Mihai Pătraşcu, Erik Demaine]:需要 \(\Omega(\dfrac\delta w\log n)\) 的平均单次运行时间。证明通过构建困难实例达成。
Difficult Instance: Interleave Information
选择随机排列 \(\pi\in\bb S_n\),随机修改列 \((\Delta_1,\dots,\Delta_n)\in\bb G^n\),然后循环 \(t\) 从 \(1\) 到 \(n\),为 \(\pi(t)\) 增加 \(\Delta_t\) 后询问 \(\pi(t)\) 的前缀和。
则询问 \(\pi(t)\) 的实质是询问 \([0,t]\times[0,\pi(t)]\) 二维数点中的增量之和。
考虑两组时间段 \([t_0,t_1]\) 与 \([t_1,t_2]\)。定义 交织信息 (interleave information) \(\t{IL}(t_0,t_1,t_2)\) 为:
- 将 \(\cur{\pi(t_0),\pi(t_0+1),\dots,\pi(t_2)}\) 排序后,考虑相邻的 \((\pi(i),\pi(j))\) 对:满足有 \(i<t_1\) 但是 \(j>t_1\) 的对数。
这个信息的实质是 \([t_1,t_2]\) 中的询问一共需要多少种 \([t_0,t_1]\) 中的修改的信息:询问将修改划分成了若干连续段,每个连续段中的信息在理想状态下可以作为一个整体被检索,而 \(\t{IL}(t_0,t_1,t_2)\) 就是理想状态下的检索数目,也就是下界。
考虑在 \(t_2-t_1=t_1-t_0=k\) 时,\(\E[\t{IL}(t_0,t_1,t_2)]\)。单独分析每一个相邻对的概率并依照期望线性性求和,即得
因为增量是随机的,所以这可以被看做 \(\t{IL}(t_0,t_1,t_2)\) 个独立随机的 \(\delta\) 位信息。
Interlude: Shannon Entropy
对于概率分布列 \(\cur{p_i}\),有 \(H(p)=-\sum p_i\log_2p_i\)。
如果 \(A\) 有 \(2^k\) 种等概率的分布,那么它的熵是 \(k\),这是任何 \(A\) 的编码需要的期望位长的下界。
令 \(\Delta^*\) 为不在 \([t_0,t_1]\) 范围内的所有修改。则就算给定了 \(\Delta^*\),也有
Difficult Instance: Interleave Transfer
定义 交织转移 (interleave transfer) \(\t{IT}(t_0,t_1,t_2)\) 为所有在 \([t_1,t_2]\) 中的某时刻 \(t_r\) 被读取,且在 \([t_0,t_1]\) 中某时刻 \(t_w\) 被修改但是没有在 \([t_{w+1},t_r]\) 之间被再度修改的位置。
首先考虑在已知 \(\Delta^*\) 的前提下,需要额外「传输多少信息」才能求出 \(\text{answers in }[t_1,t_2]\)。这里传输信息可以简单理解为,总方案数求 \(\log_2\)。因为熵是 任意编码位长的下界,而上述传递信息同样是一种编码,则可以直接得到关系
传递了哪些信息呢?
- 集合的阶 \(|\t{IT}(t_0,t_1,t_2)|\),不超过 \(w\)-bit。
- 集合中每个元素的地址,每个不超过 \(w\)-bit。
- 该地址中存储的东西,每个不超过 \(w\)-bit。
综上,得到
整理后得到
Difficult Instance: Binary Tree Structure
现在考虑将所有操作在时域上建立二叉树。对于树上一个节点 \(v\),定义 \(\t{IT}(v)=\t{IT}(t_0,t_1,t_2)\),\(\t{IL}(v)=\t{IL}(t_0,t_1,t_2)\)。我们需要 bound 住总读写数目 \(\sum_v\E|\t{IT}(v)|\),则有
回忆起有 \(\E[\t{IL}(t_0,t_1,t_2)]=\dfrac k2\),于是有 \(\E_\pi[\sum_v\t{IL}(v)]\approx\dfrac14n\log n\),则有
Dynamic Connectivity
动态图连通性。考虑在动态前缀和问题中,取 \(\bb G=\bb S_\sqrt n\),然后建立一个 \(\sqrt n\times\sqrt n\) 的网格模拟 \(\pi_1\circ\pi_2\circ\dots\circ\pi_\sqrt n\):
- 对于 \(\pi_i\),建立两排点 \(L^i_{1\sim\sqrt n},R^i_{1\sim\sqrt n}\),然后连边 \((L^i_j,R^i_{\pi_i(j)})\)。
- 连接相邻的 \((R^i_j,L^{i+1}_j)\)。
此时,对于 \(\sigma\in\bb G\),验证是否有 \(\sigma=\pi_1\circ\pi_2\circ\dots\circ\pi_\sqrt n\) 可以归结于 \(\sqrt n\) 次连通性查询。
但是,注意到这里的模型需要从求前缀和变为验证前缀和是否等于某个值 (Verify-Sum) 问题。如果我们能在 \(o(\log n)\) 时间内验证单个连通性,则可以在 \(o(\sqrt n\log n)\) 时间内验证全部 \(\sqrt n\) 个连通性进而解决 Verify-Sum。
但是,假设 Verify-Sum 和朴素的 SUM 有相同时间复杂度下界,则因为有 \(\delta=\log|\bb S_{\sqrt n}|\sim\sqrt n\log n\),取字长 \(w=\log n\),得到 \(\Omega(\sqrt n\log n)\) 的下界,因此 \(o(\log n)\) 验证连通性是不可能的,即有 \(\Omega(\log n)\) 的动态图连通性下界。
Basic Complexity Classes
Definition: Time Complexity
对于确定性 TM,它的 运行时间 (running time) 或 时间复杂度 (time complexity) 是函数 \(f:\N\to\N\),其中 \(f(n)\) 是任何长度为 \(n\) 的输入所要消耗的 最大 步数。因此,此处的时间复杂度是最劣情况 (worst case) 复杂度。
复杂度类:
- TIME(\(t(n)\)),能被 \(O(t(n))\) 确定性 TM 判定的语言集合。
- NTIME(\(t(n)\)),NTM。
然后可以定义相应的常见复杂度类:
- P = ∪ TIME(\(n^k\));
- NP = ∪ NTIME(\(n^k\));
- EXP = ∪ TIME(\(2^{n^k}\));也称作 EXPTIME。
- NEXP = ∪ NTIME(\(2^{n^k}\));
Power & Efficiency: Church-Turing & Cobham-Edmonds
Church-Turing 命题:所有(可以无限制访问无限内存的)模型都具有相同的 能力 (power)。但是它们的 效率 (efficiency) 却可能大相径庭。因此,有其扩展:
Cobham-Edmonds 命题:对于一切模型,都可以以多项式级别的代价在其它模型上模拟。即,如果在 \(M_1\) 上的运行时间是 \(T\),则 \(M_2\) 可以用 \(T^k\) 的时间模拟。
Definition: Space Complexity
与时间复杂度相类似,空间复杂度衡量需要的格数目。可以定义 SPACE 和 NSPACE。
定义如下的低空间复杂度类:
- L = SPACE(\(\log n\));
- NL = NSPACE(\(\log n\));
- PSPACE = ∪ SPACE(\(n^k\));
- NPSPACE = ∪ SPACE(\(n^k\));
但是,当输入需要 \(n\) 格时,运行怎么只需要 \(\log n\) 格呢?
因此,此处的模型必须是三带 TM:
- 有一个只读的输入带。
- 有一个可读可写的工作带。
- 有一个只写的输出带。
并只计算工作带的消耗。
一个这样的三带 TM 上的格局 (configuration) 可以只用如下东西定义:
- 工作带的内容。
- TM 的态。
- 输入带指针位置。存储其的开销是对数级别的。
- 工作带指针位置。
- 输出带指针位置……这个不需要!反正是只写的。
因此,一个对数级别内存的 TM 只有多项式级别的格局数目。
Relationships
TIME(\(f(n)\)) ⊆ SPACE(\(f(n)\))。显然。
SPACE(\(f(n)\)) ⊆ TIME(\(2^{O(f(n))}\))。可以大力枚举全体格局数目。
NTIME(\(\color{red}{f(n)}\)) ⊆ SPACE(\(\color{red}{f(n)}\))。可以大力模拟全体 NTM,而所有模拟的空间开销都不超过 \(f(n)\)。
NSPACE(\(\color{red}{f(n)}\)) ⊆ TIME(\(\color{red}{2^{O(f(n))}}\))……为什么?
NTM 可以被 格局图 (Configurations Graph) 所刻画:这样的图中每个节点都是一个格局,而节点间的有向边就是格局间的转移。那么,验证某个串是否被 NTM 所接受就是判定在格局图中其是否可达某个终止格局。那么,NSPACE(\(f(n)\)) 的格局图中有 \(2^{O(f(n))}\) 个节点,把它建出来后,判定可达性即可。
因此目前有复杂度类的包含链:
L ⊆ NL ⊆ P ⊆ NP ⊆ PSPACE ⊆ NPSPACE ⊆ EXPTIME。
事实上,有 PSPACE = NPSPACE。原因将在下文中提到。
Log-Space Reductions and NL-Completeness
称语言 A 是 对数空间可规约 (log space reducible) 至 B 的,如果存在对数空间的 TM \(M\),对于输入 \(w\),输出 \(f(w)\) 满足 \(w\in A\iff f(w)\in B\),记作 A ≤L B。一个语言是 NL-完全 (NL-complete) 的,如果其属于 NL 且所有 NL 中的语言均 L-可规约至其。
首先思考 L-可规约是否符合直觉,例如,是否有“B ∈ L,A ≤L B,则 A ∈ L”?
首先,显然不能先算 \(f(w)\) 然后再接上 B 的判定器:因为 \(f(w)\) 可能需要很大的内存。
正确答案是一位一位地算:将运行带划分成两部分,第一部分作为 B 的判定器,当其需要 \(f(w)\) 的第 \(i\) 位时,在第二部分上模拟算一遍 \(f(w)\),等到其输出第 \(i\) 位时,再回输第一部分。
更一般地,如果 \(f,g\) 都是对数空间可计算的函数,则 \(f\circ g\) 亦然。
对数空间规约似乎比多项式时间规约更弱。但是,目前所有已知的 NP-Complete 问题都可以只用对数空间互相规约。因此,NP-完全性是否在对数空间规约下封闭,仍是 open problem。
Savitch's Theorem
关于对数空间 DTM 和对数空间 UTM,有 L ⊆ NL,正如 P ⊆ NP。但是,与 P ?= NP 仍然 open 不同,L 和 NL 的关系已经被 partially close 了。
这依赖于一个定义:PATH 问题,即所谓的 \(st\)-连通性 (\(st\)-connectivity) 问题,在有向图中判定两点 \(s,t\) 是否有 \(s\) 可达 \(t\)。同理有 USTCON 为无向图的场合。
PATH 是 NL 的,因为存在如下方法:
- 从 \(s\) 出发,不断跳到随机一个邻居。重复 \(|V|\) 次。如果期间碰到了 \(t\),则接受,否则拒绝。
显然,如果 \(s\) 可达 \(t\),则必然存在一种 \(|V|\) 步内游走的策略。而维护 \(|V|\) 的 counter 需要对数位的内存。
进一步,PATH 是 NL-完全的,这是因为,NTM-membership 就是格局图上可达性,而格局图的计算只需要对数空间。
这有一个副产品是 NL ⊆ P(虽然这个已经在前文证过了),因为 PATH ∈ P。
最后,使用 PATH 问题,可以有条件地使用对数空间 DTM 模拟对数空间 UTM。
定义 L2=SPACE(\(\log^2n\)),则有 PATH ∈ L2,因为存在 \(\log^2n\) 空间的确定性 PATH-判定器。
「存在 \(u\) 到 \(v\) 的长度为 \(d\) 的路径」,等效于「存在 \(z\)」且「存在 \(u\) 到 \(z\)、\(z\) 到 \(v\) 的长度为 \(d/2\) 的路径」。建一个使用该方法的递归器,则其递归对数层,每层需要对数的空间,总空间是对数平方的。
既然 PATH 是 NL-完全的,而其又属于 L2,因此得到如下的 Savitch 定理:NL ⊆ L2。
另外,无向图的场合,即 USTCON 问题,随机游走可以证明它是属于 RL,即 随机化多项式空间 (randomized logspace) 的。有 non-trivial 的文献证明它属于 L。
Savitch's Theorem - Cont'd: between PSPACE and NPSPACE
其还可以被推广,得到一般意义的 Savitch 定理:对于 \(S(n)\geq\log n\),有 NSPACE(\(S(n)\)) ⊆ SPACE(\(S(n)^2\))。
这依赖于一个 填充技术 (padding argument)。
首先,先考虑一个例子:证明,如果 P = NP 则 EXP = NEXP。
对于 L ∈ NEXP,存在以 \(2^{n^c}\) 判定之的 NTM \(M\)。
定义 L' 为 L 中的元素 \(x\) 后面接上 \(1^{2^{|x|^c}}\) 后得到的集合,其中 \(1\) 是某个不在字符集中的字符。则因为填了好多无意义东西,因此 L' 可以用多项式时间 NTM 判定,则 L' ∈ NP。
这个映射把 EXP 映到 P,把 NEXP 映到 NP。因此,如果 P=NP,则有 EXP=NEXP——但是反之不亦然,因为这个映射是单向的。
将这个思想泛化。定义一个 \(f:\N\to\N\),其中 \(f(n)\geq\log n\),是 空间可构造 (space constructible) 的,如果输入 \(1^n\)、输出 \(f(n)\) 的二进制表达的函数是 \(O(f(n))\)-空间可计算的。同理,是 时间可构造 (time constructible) 的,如果是 \(O(f(n))\)-时间可计算的。所有常用函数都是时空可构造的。
那么,首先有 NSPACE(\(\log(n)\)) ⊆ SPACE(\(\log^2(n)\));对其用 padding argument。
对于 L ∈ NSPACE(\(S(n)\)),存在输入 \(n\) 位并以 \(O(S(n))\) 的工作带判定其的 NTM ML。定义 \(L'=\cur{x\#0^{2^{S(|x|)}}\mid x\in L}\),则存在输入 \(O(2^{S(|x|)})\) 位的 \(x’\) 并以 \(O(S(|x|))\) 的工作带判定 L' 的 NTM ML':
- 以 \(O(S(|x|))\) 位对结尾的 \(2^{S(|x|)}\) 个 \(0\) 计数。
- 以 \(O(S(|x|))\) 位跑一遍 ML。
则有 L' ∈ NL,则有 L' ∈ SPACE(\(\log^2(n)\)),即存在输入 \(O(2^{S(|x|)})\) 位的 \(x'\) 并以 \(O(S(|x|)^2)\) 的工作带判定 L' 的 NTM M'L'。使用其可以简单构建以 \(O(S(|x|)^2)\) 的工作带(因为输入带中未包括的部分可以被视作 padding)判定 L 的 DTM M'L。于是 L ∈ SPACE(\(S(n)^2\))。
综上,有 NSPACE(\(S(n)\)) ⊆ SPACE(\(S(n)^2\))。特别地,如果 \(S(n)\) 是 \(\t{poly}(n)\),则直接得到推论 NPSPACE ⊆ PSPACE。这一点上,与 P 和 NP 的关系不似。
Immerman-Szelepcsenyi Theorem: between NL and co-NL
定义 NON-PATH 寻求判定 \(s\) 不可达 \(t\)。即,寻求一个 NTM,使得某一个分支接受,如果 \(s\) 不可达 \(t\)。
因为 PATH 是 NL-Complete 的,所以 NON-PATH 是 co-NL-Complete 的。
非常好的是,Immerman-Szelepcsenyi 定理 表明,NON-PATH ∈ NL。这意味着,NL = co-NL。
证明依赖于如下思想:对 \(s\) 可达的点计数。从图中删除 \(t\) 后,再度计数。如果二者有差异,则接受。
首先要枚举一个点 \(v\) 并判定可达性。但是此处可达性不能套用之前的策略(使用多个分支搜索),要考虑到不可达的场合。因此,要加一个是否把 \(v\) 跳过的选项。
总结:枚举 \(v\),非确定性地开启跳过 \(v\) 的分支或考虑 \(v\) 的分支。如果跳过,要确保 \(v\) 从 \(s\) 不可达;如果考虑,则非确定性找一条路径,如果路径不可达则拒绝,可达则令计数器加一并考虑下一个 \(v\)。
现在的重点是如何在跳过时确保 \(v\) 不可达。这又需要一个非常神奇的构造:
定义 \(R(i)\) 为 \(i\) 步内可达的节点数目。在外层枚举 \(i\)。假设我们有确保 \(R(i)\) 正确的算法,然后考虑计算 \(R(i+1)\):
- 枚举 \(v\) 时,如果跳过,则从图中移除所有指向 \(v\) 的点并再算一遍 \(R(i)\)。如果计算结果不变,则 \(v\) 确实不可达;否则 \(v\) 可达,猜测失败,直接拒绝。如果不跳过,则枚举时只枚举到 \(i+1\)。
但是这有一种感觉:算 \(R(i+1)\) 时要调用 \(R(i)\)?
其实不需要!因为我们之前希望求出 精确值,但是猜测时,只需要可以 做出比较 即可。这使得没有必要使用强力的 \(R(i)\) 进行计算,直接考虑如下伪代码:
- 假设我们已知 \(R(i)\)。
- 定义计数器 \(c_1=0\)。
- 枚举 \(v\):
- 非确定性猜测 \(v\) 可达:
- 非确定性寻路,跑 \(i+1\) 步,不可达则拒绝,可达则令 \(c_1\) 自加。
- 非确定性猜测 \(v\) 不可达:
- 定义计数器 \(c_2=0\)。
- 枚举 \(u\):
- 非确定性猜测 \(u\) 是否可达。如果猜测可达,则寻路 \(i\) 步,如果未寻到则拒绝;否则,如果 \(u=v\) 或存在边 \(u\to v\),拒绝;否则,\(c_2\) 自加。如果猜测不可达,跳过。
- 如果 \(c_2\neq R(i)\),拒绝。这一重保险保证了如果 \(u\) 本来可达结果猜了不可达不会出事。
- 则结束后,\(c_1\) 即为 \(R(i+1)\)。
则可以正确计算 \(R(|V|)\),即可达集合。对比保留、删去 \(t\) 后的 \(R\) 和 \(R'\),即可判定 NON-PATH。
于是 NON-PATH ∈ NL,NL = co-NL。
这又可以通过 padding argument 直接得出,对于一切 \(S(n)\geq\log n\),有 NSPACE(\(S(n)\)) = co-NSPACE(\(S(n)\))。
PSPACE-Complete
SAT 问题是 PSPACE 的,因为可以以线性空间枚举全体赋值并检查。既然 SAT 是 NP-Complete 的,可以得到结论:NP ⊆ PSPACE。这两者是否等价尚无定论,但现有证据倾向于不等价。
我们希望构建一个 PSPACE-Complete 的问题,即所谓的 真量词化 Boolean 公式 (True Quantified Boolean Formula, TQBF)。
首先要定义什么是 QBF。QBF 是 \((Q_1x_1)\dots(Q_nx_n)\varphi\)。其中 \(x_i\) 是值域为 \(\cur{0,1}\) 的变量,而 \(Q_i\) 是量词 \(\forall,\exist\) 之一,\(\varphi\) 是不含量词的纯 Boolean 公式。因为 QBF 中没有自由变量,所以 QBF 要么为真要么为假。而 TQBF 是全体真 QBF 构成的集合。
显然,判定 QBF 的真伪仍然可以通过确定每个变量的取值进行处理,因此有 TQBF ∈ PSPACE。
然后要考虑 PSPACE 规约。此处使用常规的 Karp 规约,即 mapping reduction。由此可以有 PSPACE-完全性。
现在有一个判定器,多项式空间 \(S(n)\) 的 TM \(M\)。对于其一个输入 \(x\),构建一个 \(O(S(|x|)^2)\) 的 QBF \(\psi\),其为真当且仅当 \(M\) 接受 \(x\)。
一个格局可以用 \(O(S(|x|))\) 位编码。同样,两个格局是否一步可达,可以用一个长度为 \(O(S|x|)\) 的 BF(注意,此处不需要量词) 判断。
那么,定义 \(\psi_i(C,C')\) 为真,当且仅当存在 \(C\to C'\) 的不超过 \(2^i\) 步路径。有\(\psi_0(C,C')\) 为上述 BF,而 \(\psi_{i+1}(C,C')=(\exists C'')\psi_i(C,C'')\land\psi_i(C'',C')\)。
这个定义不够好,因为 \(\psi_i\) 的规模是倍增的。但是注意到,辅助变量稍微多一点也是无妨的,我们只需要 \(\psi_i\) 足够少即可。因此,可以再用两个辅助量 \(D,D'\),将其写成
则有 \(|\psi_{i+1}|=|\psi_i|+O(S(n))\)。我们需要足够大的 \(m\) 满足 \(2^m\) 超过总格局数,而这样的 \(m=O(S(n))\)。因此,最终构建的 \(\psi_m\) 是 \(O(S(n)^2)\) 的。
上述规约把任何 PSPACE 判定器转化为 TQBF,因此 TQBF 是 PSPACE-Complete 的。从另一个角度来说,上述证明并没有用到该 TM 的确定性,因此 TQBF 同样是 NPSPACE-Complete 的。因此,这从另一个角度证明了 Savitch 定理,即 PSPACE = NPSPACE。
PSPACE-Complete: Optimal Gaming Strategy
PSPACE-Complete 问题的核心特征是,它对应于全信息双人博弈中的必胜 策略。一个策略是无法使用线性信息进行编码与验证的,它必须使用指数位的信息描述,因此即有别于 NP;但是对于某个态,它寻找下一步的过程是可以在多项式空间内实现的。
考虑一些博弈。
例如,QBF 博弈 (QBF Gaming, a.k.a. Formula Gaming) 中,有一个 BF \(\psi\),有 A、E 两方,A 先手,双方交替地依次为 \(x_1,\dots,x_n\) 赋值,而 A 获胜如果 \(\psi\) 为假,反之 E 获胜。
则 E 获胜等效于 \((\forall x_1)(\exists x_2)\dots[\psi]\) 为真。因此,QBF 博弈与一个 TQBF 等价,进而是 PSPACE-Complete 的。特别地,如果限制 QBF 博弈中的 BF 是 3-CNF,其仍然是 PSPACE-Complete 的,因为 3-CNF 足以拼出所有 gate。
使用 QBF 博弈,可以证明其它博弈的 PSPACE-Complete 性。例如,广义地理学游戏 (Generalized Geography Game)。
普通的 地理学游戏 是地名接龙,要求下一个词的首字与上一个词的尾字相同,但是已经说过的词不能重复。广义的场合,是给定起点的有向图上游走,同样不能重复经过同一点。
定义 \(GG=\cur{\ip{G,b}\mid\text{在 }G\text{ 上游走,从 }b\text{ 开始,先手必胜}}\)。则 GG 是 PSPACE-Complete 的。
首先,易知 GG 是 PSPACE 的,因为总是可以删掉 \(b\) 然后对后继讨论。然后,将 QBF 博弈归纳至 GG。WLOG,假设是首尾均为 \(\exists\) 的 3-CNF QBF,即 \((\exists x_1)(\forall x_2)\dots(\exists x_n)[(x_i\lor\bar x_j\lor\bar x_k)\dots]\)
则考虑如下模式:
其中 \(1_a\) 是起点。则蓝方和红方交替地空出 \(1\sim n\) 中 \(i_b/i_c\) 之一,作为 \(x_i/\bar x_i\) 为真的赋值方案。
到达 \(n_d\) 后,令 \(n_d\blueto S\),其中 \(S\) 是一个中继点。然后,\(S\redto c_1,\dots,c_m\),红方选择一个 clause 攻击;\(c_u\blueto u_1/u_2/u_3\),蓝方需求一个项为真;\(u_1\redto i_{b/c}\),红方走最后一步。则如果蓝方和红方在一开始的赋值过程中,红方最后一步能走出来,则蓝方即失败。
于是即将 3-CNF QBF 归纳至 GG,则 GG 亦是 PSPACE-Complete 的。
然后是 五子棋 (Gomoku),横纵斜均计入。其扩展是高维的 tic-tac-toe 游戏。
现在,考虑如下的模式:
- \(n\times n\) 棋盘。
- 初态可以是任意。
- 没有禁招。
尝试将 GG 归约到五子棋。首先考虑受限的 GG:
- 图必须是网格图。
- 每条边的长度为 \(1\) 或 \(2\)。
- 起点没有入度、出度为 \(1\)。
- 除此之外,其它点有不超过 \(3\) 的总度数,且出入边均存在。
- 如果它有两条出边,则它们需要垂直。
通过三连子和四连子,可以构建边,进而把平面 GG 用五子棋刻画。
Diagonalization
Issues about Undecidability of ATM
回忆起我们证明 ATM 不可判定的方法:如果 \(H\) 是其判定器,则定义 \(D(M)\) 会模拟 \(H(M,\ip M)\) 并给出相反结果,则 \(D(\ip D)\) 即出现矛盾。
现在,换一种定义:令 \(D(M)\) 会在 \(M\) 上模拟 \(\ip M\) 不超过 \(|\ip M|^{1.1}\) 步,如果期间 accept 了则 reject,反之即 reject。
这里步数是 \(D\) 的步数而非模拟的步数。这也是为了确保下一行的成立。至于怎么实现(例如得专门用一个 counter 之类的?),别管。
则 \(D\) 属于 TIME(\(n^{1.1}\))。但是,如果考虑 \(D(\ip D)\) 呢?是否会产生矛盾?
注意到 UTM 模拟需要额外开销:模拟用时 \(f(|x|)\) 的 \(M(x)\) 需要 \(c\cdot f(|x|)\cdot\log f(|x|)\) 的总时间。因此,\(D(\ip D)\) 的场合,模拟 \(D(\ip D)\) 根本无法在 \(n^{1.1}\) 步内搞完,所以是自洽的。
特别地,\(L(D)\) 不属于 TIME(\(n\))。这是因为,如果存在一个在 \(cn\) 时间内判定 \(L(D)\) 的 \(M'\),则因为 \(D\) 总会停机,所以对于一切 \(x\) 均有 \(M'(x)=D(x)\)。那么,考虑 \(D(\ip{M'})=M'(\ip{M'})\):因为 \(M'\) 在 \(cn\) 内跑完,所以 \(D\) 模拟 \(\ip{M'}\) 的过程可以结束,则即出现矛盾。于是,\(M'\) 不存在,有 \(L(D)\) 不属于 TIME(\(n\))。
Hierarchy Theorem
时间层次定理 (Time Hierachy Theorem) 表明,对于一切 time constructible 的函数 \(f:\N\to\N\),都存在一个可在 \(O(f(n))\) 时间判定但不可在 \(o(f(n)/\log n)\) 判定的语言。证明直接参考上述方法即可。
空间层次定理 (Memory Hierachy Theorem) 是其空间的对应版本,但是更优秀:对于 space constructible 的 \(f\),存在可在 \(O(f(n))\) 空间判定但不可在 \(o(f(n))\) 判定的语言。其有推论:对于 space constructible 的 \(f,g\),如果 \(f=o(g)\),则 SPACE(\(f\)) ⊊ SPACE(\(g\))。
已知 L ⊆ NL ⊆ P ⊆ NP ⊆ PSPACE。由空间层次定理,必有 L ⊊ PSPACE。那么,中间必有一条是真子集。
Ladner's Theorem
存在很多 P 的问题。存在很多 NP-Complete 的问题。存在很多目前不知道是 P 还是 NP-C 的问题。那么,很自然地,我们猜想:是否所有 NP 问题,都要么是 P 要么是 NP-C 的?
Ladner 定理:假设 P ≠ NP,则存在 NP-中间 (NP-Intermediate) 问题,即属于 NP\P 但非 NP-C 的问题。
证法一:
对于 time-constructible 的 \(H\),定义 \(\t{SAT}_H=\cur{\psi01^{n^{H(n)}}\mid\psi\in\t{SAT},n=|\psi|}\)。即,对长度为 \(n\) 的 SAT \(\psi\) 使用 padding argument 贴一堆不出现的 \(1\) 得到的语言。
现在,构造一个如下的具体的 \(H\) 例子:
- \(H(n)\) 是满足以下条件的最小 \(i\) 值:
- \(i<\log\log n\)。
- 对于满足 \(|x|\leq\log n\) 的全体 \(x\in\cur{0,1}^*\),编码为 \(i\) 的 TM \(M_i\) 在 \(i|x|^i\) 步内输出 \(\t{SAT}_H(x)\)(即,\(M_i\) 是一个能在 \(i|x|^i\) 步内判定 \(\t{SAT}_H(x)\) 中长度不超过 \(\log n\) 部分的 TM)。如果这样的 \(i\) 不存在,则令 \(H(n)=\log\log n\)。
这个 \(H(n)\) 是良定义的,因为:
- \(H(n)\) 的计算依赖 \(\t{SAT}_H(x)\) 中长度不超过 \(\log n\) 部分的 membership,且会确定一部分长度大于 \(n\) 的部分的 membership。因此,计算 \(H(n)\) 时,其所有依赖部分的 membership 已经确定了。
这个 \(H(n)\) 是可计算的,只需要模拟上述流程,且分析可得计算之耗时 \(O(n^3)\)。
声称,\(\t{SAT}_H\in\t{P}\) 当且仅当 \(H(n)=O(1)\)。
- 假设 \(\t{SAT}_H\in\t{P}\),则存在在 \(cn^c\) 步内求解 \(\t{SAT}_H\) 的 TM \(M\)。因为 表示 \(M\) 的编码有无穷个,则总有一个足够大的 \(M_i\)。此时,对于一切满足 \(\log\log n\geq i\) 的 \(n\),均有 \(H(n)\leq i\)。
- 反之,假设 \(H(n)=O(1)\),则 \(H(n)\) 只取有限个值,换言之就存在一个 \(i\) 对无穷个 \(n\) 生效,那么 \(M_i\) 就是一个 \(\t{SAT}_H\) 的 \(O(in^i)\) 判定器。
那么,只要 P ≠ NP 则 \(\t{SAT}_H\) 就非 P 也非 NP-C。
如果 \(\t{SAT}_H\in\t P\),则 \(H(n)\leq C\),那么 \(\t{SAT}_H\) 就是往 \(\t{SAT}\) 的所有实例后面填充多项式个 \(1\) 后得到的语言,其判定器也可以被用来判定 \(\t{SAT}\),则 \(\t{SAT}\in\t P\),P = NP。
如果 \(\t{SAT}_H\in\t{NP-Complete}\),则 \(H(n)\) 随 \(n\) 趋于无穷,同时存在 \(\t{SAT}\) 到 \(\t{SAT}_H\) 的多项式 \(O(n^i)\) 的规约 \(f\)。则这个规约只能将 \(\t{SAT}\) 中实例映到 \(\t{SAT}_H\) 中多项式级别长度的实例,但是 \(\t{SAT}_H\) 在构造时的对应关系,因为 \(H(n)\) 趋于无穷,是非多项式的。这意味着,对于长度 \(n\) 充分大的 \(\t{SAT}\) 实例 \(\varphi\),它会被 \(f\) 映到 \(\psi01^{H(|\psi|)}\),其中 \(\psi\) 的长度可以小于一切多项式级别的 \(n^c\),不妨假设有 \(|\psi|<\sqrt[3]n\)。那么,可以如下构造一个判定 \(\t{SAT}\) 的方法:
- 对于一个 \(\varphi_0\) 的实例,其映射到 \(\tau\),我们要验证是否有 \(\tau=\psi01^{H(|\psi|)}\);因为 \(H(|\psi|)\) 在 \(|\psi|^3\) 时间内可计算,所以可以用 \(n^{1-\epsilon}\) 的时间验证 \(\tau\) 是否满足 padding argument 的格式,然后就只需 verify \(\psi\) 是否属于 \(\t{SAT}\),规模即变为原来的 \(\sqrt[3]n\),这可以令 \(\varphi_1=\psi\) 然后重复下去,递归次数是 \(\log\log n\) 级别的。
同样也可以得到 P = NP。
这个证法很不自然,但这就是我们对角化方法。
附:csy 声称这个证明的思想是,如果往 SAT 后面 pad 太多的东西,则它就属于 P;pad 太少的东西,则属于 NP;因此构造了非常反人类的 \(H\) 来让 padding 适中。
证法二:
可能是更正常的对角化方法。我们希望构造一个语言,使得所有多项式 Turing 机均不能判定它,同时所有自 SAT 出发的多项式规约均不能规约到它。
首先列举所有 P 语言。这可以通过枚举所有 TM,使用 UTM 模拟它的同时在外部安装一个上限为 \(n^i\) 步的计数器。即,\(M_i\) 为编码为 \(i\) 的 TM 附加 \(n^i\) 的步数上限。
所有 \(M_i\) 判定的全体语言即为所有 P 语言。这依赖于每个 TM 都有无穷个等价 TM(或者说,每个语言都有无穷个等价判定器)。
同理,考虑全体自 SAT 出发的多项式规约。直接完成“枚举规约”这件事可能是困难的,不过我们可以通过如下方式间接实现:
- 令 \(f_i\) 为全体 TM,其计算步数不超过 \(n^i\) 的函数。则自 SAT 至任何语言的多项式规约都会被某个 \(f_i\) 描述。(但 \(f_i\) 可以不是规约)
- 当它确实是时,存在一个对应的 \(N_i\),其判定 \(f_i\) 归约到的那个语言。也即,\(x\in\t{SAT}\iff f_i(x)\in L(N_i)\)。但是,这样的 \(N_i\) 真的一定存在吗?确实,\(f_i\) 可能规约到一个 undecidable 的语言,不过这不妨碍我们将其对角化掉。因此,以下,建议把 \(N_i\) 纯粹当成一个 \(f_i\) 规约到语言的 oracle,下文中也没有非这种用法的出现,且在最后提出的算法中并没有提到 \(N_i\)。
- 虽然 \(f_i\) 是否是规约可能也是 undecidable 的,但是我们可以先假装我们仅在枚举全体是规约的 \(f_i\),把算法先 formulate 出来,然后再解决 \(f_i\) 非规约的场合。
我们希望构建一个 TM \(A\),其确定的语言属于 NP,且对于一切 \(i\),都存在某个 \(x\) 使得 \(A(x)\neq M_i(x)\),存在某个 \(y\) 使得 \(A(y)\neq N_i(y)\)。这样,只要 P ≠ NP,则 \(A\) 确定的语言即既非 P 亦非 NP。
观察 \(M_i\) 的性质。我们发现,对于任何 \(M_i\),对于一切阈值 \(x\),我们都可以寻找到 \(z\geq x\) 满足 \(M_i(z)\neq\t{SAT}(z)\)。这是因为,如果存在不满足条件的 \(x\),则对于一切 \(z\geq x\) 都有 \(M_i(z)=\t{SAT}(z)\),则只需要硬编码 \(z<x\) 部分的结果,就可以构造出多项式判定 SAT 的 \(M'_i\),与 SAT 不属于 P 矛盾。
同理,令 \(\t{TRIV}\) 为空语言,则对于任何 \(N_i\),对于一切阈值 \(x\) 都可以寻找到 \(z\geq x\) 满足 \(N_i(z)\neq\t{TRIV}(z)\)。这是因为,如果对于一切 \(z\geq x\) 都有 \(N_i(z)=\t{TRIV}(z)=\t{False}\),则这意味着 \(L(N_i)\) 中只有常数个元素,是 P 的,而 \(f_i\) 把 NP-Hard 的 SAT 规约到了 P 的 \(L(N_i)\),这是不合法的。
现在,考虑对于一切 \(x\),令 \(A(x)=\t{SAT}(x)/\t{TRIV}(x)\) 二者之一,并使得判定选择二者中何者的工作可以在多项式时间内进行,则 \(A\) 即属于 NP。
如何实现?考虑一个增长得非常慢的函数 \(g(n)\),然后对于输入 \(x\), 令 \(n=|x|\),则当 \(n\) 为偶时令 \(A(x)=\t{SAT}(x)\),为奇时令 \(A(x)=\t{TRIV}(x)\)。即,\(A=\t{SAT}\cap\cur{x:|g(x)|\text{ is even}}\)。
思想是,因为 \(g(n)\) 增长得很慢,所以对于 \(M_i\),使用某个位置 \(x\) 处之后的一长段排除之,则因为按照上述分析存在 \(M_i(z)\neq\t{SAT}(z)\) 的 \(z\),所以这个“一长段”长度是有限的,然后可以切换到 \(N_i\) 来排除之。
顺理成章地,我们 formulate 这个方法论:
令 \(g(0)=0\)。确定 \(g(n)\):
- 如果 \(g(n-1)=2i\),则现在来排除 \(M_i\)。
- 如果长度为 \(n-1\) 的全体 \(z\) 中,有满足 \(M_i(z)\neq\t{SAT}(z)\) 的 \(z\),则 \(M_i\) 已经被 \(n-1\) 排除掉了,只需令 \(g(n)=g(n-1)+1\) 即可。
- 否则,\(M_i\) 尚未被排除,因此 \(g(n)=g(n-1)\)。
- 同理,\(=2i+1\) 时,排除 \(N_i\),仍然是寻找 \(|z|=n-1\) 且 \(N_i(z)\neq\t{TRIV}(z)\) 的 \(z\)。
这个东西有一个明显的问题,就是 \(\t{SAT}(z)\) 的计算不是 P 的(这个好解决),以及最重要的:\(N_i(z)\) 没法计算(因为它根本不存在!)。前一半的解决方案是不检查长度为 \(n-1\) 的,而是检查长度为 \(\log\) 级别的;后一半的解决方案则是抛弃 \(N_i\),回归原始定义,即 \(f_i\) 的规约。
具体而言,令 \(g(0)=g(1)=2\)。然后:
- 如果 \((\log n)^{g(n)}\geq n\),则直接令 \(g(n+1)=g(n)\)。否则:
- 如果 \(g(n)=2i\),则排除 \(M_i\)。
- 寻找 \(|z|<\log n\) 且 \(g(|z|)\) 是偶数且 \(\t{SAT}(z)\neq M_i(z)\) 的 \(z\)。找到则 \(+1\),没找到则照抄。
- 枚举 \(z\) 的过程是 \(O(2^{\log n})=\text{poly}\) 的,而判定 SAT 同理。
- 如果 \(g(\cdot)\) 卡在了 \(2i\),这意味着对于今后的全体 \(z\) 都有 \(\t{SAT}(z)=M_i(z)\),违背了前述结论,所以不可能。
- 如果 \(g(n)=2i+1\),则排除 \(N_i\)。回到规约的定义,我们选择枚举 \(x\) 并计算 \(f_i(x)\),然后 如果 \(f_i\) 是 reduction,则当 \(x\in\t{SAT}\) 时,产出的所有 \(f_i(x)\) 即为全体 \(L(N_i)\) 中元素。
- 寻找 \(|x|<\log n\),令 \(z=f_i(x)\),则因为 \(f_i(x)\) 在 \(|x|^i\) 步内停机,且 \(|x|^i<(\log n)^{g(n)}<n\),所以有 \(|z|<n\)(这就是我们为什么一开始要跳过 \((\log n)^{g(n)}\geq n\) 的场合)。则 \(z\) 在 \(A\) 中的 membership 已经被确定了。我们希望 \(A(z)\neq N_i(z)\)。
- 如果 \(g(|z|)\) 是奇数,我们希望有 \(x\in\t{SAT}\),这样即有 \(N_i(z)=\t{True}\),但是 \(A(z)=\t{TRIV}(z)=\t{False}\)。
- 这个因为只要判 \(\t{SAT}(x)\),所以是可以在 \(2^{|x|}\) 内实现的。
- 如果 \(g(|z|)\) 是偶数,我们希望有 \(\t{SAT}(x)\neq\t{SAT}(z)\),因为有 \(N_i(z)=\t{SAT}(x)\),而 \(A(z)=\t{SAT}(z)\)。
- 这个还要判 \(\t{SAT}(z)\)。但是,\(|z|\) 只有 \(n\) 的界,怎么办???
- 答曰:强制要求 \(|z|<\log n\)!!!反正当 \(n\) 足够大时,原本不合法的 \(z\) 也会变得合法,因此表达能力上和原本的模式没区别。
- \(f_i\) 非 reduction 等价于存在 \(x\in\t{SAT}\)、\(x'\notin\t{SAT}\),且 \(f_i(x)=f_i(x')\)。因此,在执行上述操作前,可以先枚举所有 \(|x|,|x'|<\log n\) 并检查,如果通过检查,则就算实际上 \(f_i\) 非 reduction,在算 \(g(n)\) 的过程中表现也和 reduction 别无二致。如果检出了 \(f_i\) 非 reduction,则直接令 \(g(n+1)=g(n)+1\) 即可。(事实上,也许不检查是否是 reduction 也是合法的,但是我懒得讨论非 reduction 时做法是否有效了,所以干脆判掉罢。)
- 如果 \(g(\cdot)\) 卡在了 \(2i+1\):
- 如果 \(f_i\) 非 reduction,则必然存在 \(x,x'\) 对,在 \(n\) 充分大时会检出。
- 如果 \(f_i\) 是 reduction,则随着 \(|x|\) 不断增大,对应的 \(|z|\) 必然无界(不然 \(f_i\) 会把 SAT 映到某个成员长度均有限的语言,后者是 P 的)。而因为从某处往后的全体 \(g(n)=2i+1\),所以若 \(g(|z|)\) 是偶数,则 \(|z|\) 必然有界。这意味着,存在某个阈值 \(n\),全体 \(|x|\geq\log n\) 均有 \(g(|z|)\) 为奇,而其对应的 \(z\) 覆盖了 \(L(N_i)\) 中长度超过某阈值的全体串,按照前述讨论,不可能在所有这些 \(z\) 上都有 \(N_i(z)=\t{TRIV}(z)\)。
综上,上述构造确实排除了全体 \(M_i,N_i\)。并且,自 \(g(0\sim n)\) 算 \(g(n+1)\) 的复杂度是 poly 的,因此 \(A\) 是 NP 的。证毕。
Relativization
对角化做法的三基本条件是:所有 TM 都存在无穷多等价 TM;TM 可以被枚举;存在 UTM。所有仅用此三条件证明的结论都是 相对性 (relativize) 结论。
如果想要证明非相对性性质,只需要引入 Cook-Levin 定理——SAT 是 NP-Complete 的,即可涵盖一切非相对性结论(而不需要把每一条其它性质都依次引入)。这也是为什么 Ladner 定理的证明中必须使用 SAT。
OTM 同样满足对角化条件。因此,相对化结论的另一种理解方式,是关于 Oracle 不变的结论。此外,Cook-Levin 是非相对化结论,它不能关于 Oracle 生效。
如果一个关于 TM 的命题在换成供给 oracle \(A\) 的 OTM 下是错的,那么它不存在相对性证明;更好的场合是,还存在另一个 oracle \(B\),在其下是对的,那么它还不存在相对性证伪!
存在一个 PA = NPA 的 oracle。存在一个 PB ≠ NPB 的 oracle。因此,NP 不存在相对性证明。
在前者的场合,我们需要一个强力的 A,但是它比较偏心,只让 P 变得更强力,NP 则不然,因此使用 SAT 是不行的。但是,A = TQBF 却是可以的,因为 PSPACE ⊆ PTQBF ⊆ NPTQBF ⊆ NPSPACE(天才!),但是却有 PSPACE = NPSPACE。
后者的场合,考虑对于一个已知的语言 \(B\),在其基础上定义另一个语言 \(L(B)=\cur{1^k:\exists x\in B\text{ s.t. }|x|=k}\),则可以寻找到满足 \(L(B)\) 属于 NPB - PB 的语言 \(B\)。
首先,必有 \(L(B)\) 属于 NPB,因为只需要给定一个确实属于 \(B\) 且长度为 \(k\) 的实例即可验证 \(1^k\)。
然后,尝试对角化掉所有的 PB。维护 \(B,X\),初始均等于空集,其中 \(X\) 包括那些自 \(B\) 中排除的元素(它们时刻无交),然后枚举所有的 OTM \(M_i\)(OTM 与 \(B\) 无关),用它们来构建 \(B\):
选择 \(n\) 使得 \(n\) 大于全体目前已经确定归属(即 \(B\cup X\) 中的 \(x\))的 \(|x|\),然后在 \(M_i\) 上以 \(1^n\) 为输入模拟 \(n^{\log n}\) 步;当 \(M_i\) 作出 oracle 询问 \(q\) 的时候,如果 \(|q|<n\),则以当前的 \(B\) 回答,否则一律回答
no
并将 \(q\) 加入 \(X\)。如果 \(M_i\) 接受 \(1^n\),则将全体 \(\cur{0,1}^n\) 统统加入 \(X\),这样 \(1^n\) 就不属于 \(L(B)\) 了;如果其不接受,则将 \(\cur{0,1}^n\setminus X\) 加入 \(B\)。
因为只模拟了 \(n^{\log n}\) 步,而 \(\cur{0,1}^n\) 有 \(2^n\) 种,所以通过调用 oracle 加入 \(X\) 的元素不超过 \(n^{\log n}\) 步,总会有些剩下来的被加入 \(B\),进而 \(L(B)\) 关于 \(1^n\) 也与 \(M_i\) 不同。
那么,\(L(B)\) 即不属于 TIME(\(n^{\log n}\))B,则 \(L(B)\) 不属于 PB。
与同一个 OTM 等价的东西会反复出现,因此就算在当前的 \(n\) 中尚未停机,对于充分大的 \(n\) 而言也是会停机的。于是,这里的 \(n^{\log n}\) 可以被换成一切增速超过一切多项式但达不到 \(2^n\) 的函数。\(B\) 的计算时间不需要担心,反正 \(B\) 是被当作 oracle 用的,只要能停机就行,不需要管限制什么的。
Polynomial Hierachy & Alternating Turing Machine
NP-Intermediate Problems
Ladner 定理给出的构造太不自然了。有没有更自然一点的问题?
首先,对于 NP-C 的问题而言,能判定是否可解,就能求出某一组解。
但是,对于质因数分解问题,其判定性描述(素性检验)是 P 的,而求解它目前认为是非 P 的。同理,对于 Nash 均衡求解问题,Nash 均衡总存在,而求解它同样是非 P 的。因为这些原因,这两个问题一般被认为是介于 P 和 NP 之间的。
而图同构问题,则在另一个角度上,不像是 NP-C 的。
Polynomial Hierarchy: Quantified Definition
与 Turing 度的概念类似,可以定义如下类 Σip:对于 \(i\geq1\),一个语言 \(L\) 属于 Σip,如果存在多项式时间 TM \(M\) 和多项式 \(q\) 使得:
其中,\(Q\) 是一个 Σ-前束范式 (prenex form),即 \(\exists\forall\) 交替出现的谓词,而每个 \(u\) 的取值范围均限定于 \(\cur{0,1}^{q(|x|)}\)——这一点是其区别于 Turing 度的。有时,上标 p 可以被省略。
易知:Σ0p = P;Σ1p = NP(存在一个 poly 的 proof)。定义 多项式层级问题 (Polynomial Hierarchy, PH) 为 PH = ∪iΣip。
同理,可以定义 Πip,其中的 \(Q\) 是 Π-前束范式,即 \(\forall\exists\) 交替出现的谓词。有 Πip = co-Σip。
注意到有 Σip ⊆ Πi+1p ⊆ Σi+2p,因此同样有 PH = ∪iΠip。同时,易知 PH ⊆ PSPACE。
Polynomial Hierarchy: Oracled Definition
PH 同样可以使用 Oracle Turing Machine 定义。
回忆起,OTM 是多带 TM,其中有一根带是特殊的询问带,同时有三个特殊的态 \(q_\t{query},q_\t{yes},q_\t{no}\),在到达 \(q_\t{query}\) 后会根据询问带上结果是否属于 oracle 语言,跳转至 \(q_\t{yes}\) 或 \(q_\t{no}\)。这种跳转只算一步。同样有非确定性 OTM (UOTM)。
对于复杂度类 C 和语言 D,记 CD 为所有装备 D 的 oracle 的 OTM 下的 C 类。但是注意,这只是一种 记号 (shorthand),并非对于所有的 TM 集合 C 都可以定义 CD。
对于 OTM \(M\) 和复杂度类 C,MC 判定某个语言 \(L\),如果对于某个 C 中的语言 \(A\),有 MA 判定 \(L\)。
结合起来,可以对复杂度类 C、D 定义 CD。例如,PNP = PSAT。
一些性质:
- CD = Cco-D。这是因为,D 的 oracle 同时也是 co-D 的 oracle。
- 在记号良定义的时候,有 co-(CD) = (co-C)D。
Σ0 = Π0 = P;Σ1 = NP;Π1 = co-NP;
于是,有 Σ2 = NPNP;Π2 = co-NPNP,且更一般地,有如下结论:
- \(\Delta_{i+1}=\t P^{\Sigma_i},\Sigma_{i+1}=\t{NP}^{\Sigma_i},\Pi_{i+1}=\t{co-NP}^{\Sigma_i}\)。
Alternating Turing Machine
交错 Turing 机 (Alternating Turing Machine, ATM) 是 NTM 的扩展。在 NTM 的每个非终止态上,还有一个额外的记号 \(\land\) 或 \(\lor\),前者称为 全称态 (Universal State),后者称为 存在态 (Existential State)。NTM 接受一个态当且仅当存在一条路径到达接受态,而 ATM 则要分情况讨论:
- 如果当前处于全称态,则其接受一个态,当且仅当它所有子态都被接受。
- 如果当前处于存在态,则接受一个态当且仅当存在至少一个子态被接受。
可以发现,NTM 就是所有节点的态均被设为存在态的 ATM。
类似 N 前缀的一系列复杂度类,可以定义 ATIME 和 ASPACE,以及 AP、APSPACE 和 AL。
有一些基础结论。
- 简单搜索可以证明 ATIME(\(f(n)\)) ⊆ SPACE(\(f(n)\))。
- 另一方面,有 SPACE(\(f(n)\)) ⊆ ATIME(\(f(n)^2\))。
令 \(\psi(u,v,t)\) 为真当且仅当 \(v\) 可以在 \(t\) 步内到达 \(u\)。\(\psi(u,v,1)\) 易计算,\(\psi(u,v,t)=(\exists m)\psi(u,m,t/2)\land\psi(m,v,t/2)\)。
总态数是 \(2^{O(f(n))}\),因此递归深度是 \(O(f(n))\) 的。生成格局 \(m\) 需要额外的 \(O(f(n))\) 时间,因此总时间是 \(f(n)^2\)。
- ASPACE(\(f(n)\)) = TIME(\(2^{O(f(n))}\))。
首先可以大力枚举所有格局因此有 ⊆。⊇ 的方向,考虑一个 \(2^{O(f(n))}\) 步 TM 的计算历史格局,则 \(i\) 行 \(j\) 列的元素 \(d\) 仅与 \(i-1\) 行 \(j+[-1,1]\) 列的元素 \(a,b,c\) 有关,因此可以构建如下模式:
- \(\t{Guess}(i,j,d):\)
- 枚举所有 \((a,b,c)\) 三元组,且其会生成 \(d\)。
- 如果 \(\t{Guess}(i-1,j-1,a)\) 且 \(\t{Guess}(i-1,j,b)\) 且 \(\t{Guess}(i-1,j+1,c)\),则
return true
;return false
。如果从最后一行倒着看的话,可能会比较迷惑;但是从第一行正过来看的话,就会发现每一行中所有为
true
的态其实是唯一确定的。因此只要执行这个 \(\t{Guess}\) 即可。要存储的信息 \(i,j,d\) 中,\(i,j\) 都是 \(\log 2^{O(f(n))}=O(f(n))\) bit 的,因此总空间也是 \(O(f(n))\) 的。
因此总结:
- 对于 \(f(n)\geq n\),有 ATIME(\(f(n)\)) ⊆ SPACE(\(f(n)\)) ⊆ ATIME(\(f(n)^2\));
- 对于 \(f(n)\geq\log n\),有 ASPACE(\(f(n)\)) = TIME(\(2^{O(f(n))}\))。
因此有推论
- AL = P。
- AP = PSPACE。
- APSPACE = EXPTIME。
EXPTIME-Complete: Optimal Gaming Strategy
\(n\times n\) 象棋是 EXPTIME-Complete 的。由 Time Hierachy Theorem,这意味着它无论如何都不会是 P 的。
考虑如下博弈:
- 给定一个 Boolean 公式 \(\psi(x_1,\dots,x_m,y_1,\dots,y_m,t)\),简记为 \(\psi(X,Y,t)\)。
- 玩家 1 将 \(t\) 设为 \(1\)、\(X\) 任意设。
- 玩家 2 将 \(t\) 设为 \(0\)、\(Y\) 任意设。
- 轮流,1 先手。不能跳过。
- 双方均须保证在其操作后,公式取真。
- \(Y\) 的初值是 \(\alpha\)。
显然,通过枚举所有态,其是 EXPTIME 的。但是要证明其是 EXPTIME-Complete 的,就需要借助 APSPACE 的力量,通过证明其是 APSPACE-Complete 来达到目标。
考虑模拟一个 ATM。不妨假设其起始态是存在态,且存在态和全称态总是交替出现,接受态是全称态、拒绝态是存在态(虽然按照定义,它们不应该属于存在态或全称态——但是我们可以认为它们出现在对应的位置)。通过塞一些单一后继的转移,任意 ATM 都可以在时间和态数乘以一个常数规模后,被转化为一个等价的此种 ATM。
格局长度为多项式级别,对于格局 \(C,D\),定义 \(\t{NEXT}(C,D)\) 在 \(D\) 是 \(C\) 的后继时为 \(1\)。显然,当 \(C\) 是终态时,对于一切 \(D\) 其均为 \(0\)。
考虑令 \(\psi=(\lnot t\lor\t{NEXT}(Y,X))\land(t\land\t{NEXT}(X,Y))\)。则这就是一个双方轮流找后继的过程,且刚好是存在和全称的交替。因此一切 ATM 都可以被这个博弈模拟,于是其是 EXPTIME-COMPLETE 的。
而这个博弈可以规约至国际象棋/中国象棋/跳棋等众多游戏。
双人 “石子游戏” (pebble game) 是 EXPTIME-Complete 的。其博弈是 \(G=(X,R,S,t)\),其中:
- \(X\) 是节点 (nodes) 集合。
- \(R\sube\cur{(x,y,z)\mid x,y,z\in X\text{ and distinct}}\) 是规则 (rules) 集合。
- \(S\sube X\) 是初始石子位置集合。
- \(t\in X\) 是终止节点。
令 \(A\) 为当前石子位置集合,则对于规则 \((x,y,z)\),如果 \(x,y\in A\) 但是 \(z\notin A\),则可以将 \(x\) 移至 \(z\)。第一个将石子放到终止节点或是让对手无动作可走的人获胜。
考虑在 ATM 中,如果 \(\delta(q,a)=(q',a',d)\),其中 \(d=\pm1\) 是方向,则添加:
- 节点 \([q,i],[i,a],[q,i,a,a'],[i,a'],[q',i+d]\),其中 \([i,a]\) 意为纸带上第 \(i\) 位是 \(a\)、\([q,i]\) 意为当前态是 \(q\) 指向位置 \(i\),其它态是辅助态。
- 规则 \(([q,i],[i,a],[q,i,a,a'])\),\(([i,a],[q,i,a,a'],[i,a])\),\(([q,i,a,a'],[i,a'],[q',i+d])\)。
因为所有转移都牵扯到 \(q\),所以开启一次转移后剩下的步骤唯一,且双方会轮流作为决策方转移。
简洁电路可满足性问题 (succinct circuit SAT) 在 circuit SAT,即 Boolean 电路可满足性的基础上,做出了一些压缩。
具体而言,一个正常的 circuit SAT 中的逻辑门数目可以是指数级别的;但是,其结构可以使用一个多项式级别的小电路生成:给定逻辑门标号 \(i\) 和邻居位置 \(k\in\cur{1,2,3}\),这个小电路会回复标号为 \(i\) 的逻辑门的左儿子/右儿子/父亲的标号与类型。由此,当 \(i\) 的编号是 \(n\) 位二进制数,即总逻辑门数目为 \(2^n\) 时,简洁电路的规模可以是多项式级别的。
这个模型是 NEXP-Complete 的,因为在 SAT 的 NP 完全性证明中,判定的公式是多项式级别的,而其可以被 circuit SAT 刻画。
黑白棋、五子棋是 PSPACE-Complete 的。围棋,依据规则不同,可以是 EXPTIME-Complete 或 PSPACE-Complete 的。
扫雷。扫雷的一个局面是一致的,如果它至少有一组可行解。各种门都可以在扫雷里面造出来。
Probabilistic Algorithms
Spanner
生成稀疏子图 (spanner) 是生成树的扩展:生成树仅要求和原图保持连通性,但是 spanner 还希望能够额外保持距离,或者说,希望距离不变大太多。
一个 \(c\)-加性生成子图 (\(c\)-additive spanner) 是子图 \(S\),满足 \(\forall x,y\),\(d_S(x,y)\leq d_G(x,y)+c\)。
\(2\)-Spanner with \(O(n^{3/2})\) Edges
每个点以 \(n^{-1/2}\) 的概率被放入集合 \(W\),则 \(W\) 期望大小为 \(n^{1/2}\)。将自 \(W\) 中所有点的最短路径树放入 \(S\),则目前期望加入了 \(O(n^{3/2})\) 条边。
然后,对于所有节点 \(u\),如果其邻域中存在 \(v\in W\),则向 \(S\) 中加入 \((u,v)\) 并跳过其它边;否则,如果邻域中没有 \(W\) 中点,则将所有邻边加入 \(S\)。
如果一个点有 \(O(n^{1/2})\) 条邻边,那么 w.h.p 它邻域中会有 \(W\) 中元素,因此该操作新增边数仍是期望 \(O(n^{3/2})\) 的。总边数即也为 \(O(n^{3/2})\)。
显然,我们只在意那些邻域中均有 \(W\) 内点的点对:因为那些所有邻边都被加入的点,其任意最短路中的第一条边都在 \(S\) 内;而 \(W\) 中的点到所有点的最短路径均在第一步就被加入了。
令点对是 \((u,w)\),且 \(u\) 的邻域中有 \(W\) 中的点 \(v\)。则
同时,亦有
于是有
\(4\)-Spanner with \(\tilde O(n^{7/5})\) Edges
定义 heavy points 为度数至少为 \(n^{2/5}\) 的点。
随机取 \(O(n^{2/5}\log n)\) 个点,记作 \(X\);随机取 \(O(n^{3/5}\log n)\) 个点,记作 \(Y\)。
将 \(X\) 中所有点的最短路径树放入 \(S\),消耗 \(\tilde O(n^{7/5})\) 条边。
对于所有点 \(u\),如果其邻域中存在 \(w\in Y\),将 \((u,w)\) 加入 \(S\) 并终止,否则将邻域中所有边均加入 \(S\)。则所有的 heavy points 都会 w.h.p 存在 \(w\in Y\),因此仍消耗 \(\tilde O(n^{7/5})\) 条边。
对于所有 \((v_1,v_2)\in Y\),找到二者间所有经过不超过 \(O(n^{1/5})\) 个 heavy points 的路径中最短的那条,并加入 \(S\)。因为只有 heavy points 邻域中的边没有被加入,所以这部分的消耗是 \((|Y|^2\cdot n^{1/5})=\tilde O(n^{7/5})\)。【至于这玩意具体计算的复杂度,就不在考虑范围之内了】
仍然只需要考虑 heavy points 点对 \((s,t)\)。如果二者间的最短路径上包括至少 \(\Omega(n^{1/5})\) 个 heavy points,则因为同一个点至多拥有最短路径上三个点作为邻居否则就不是最短路了,所以最短路径的邻域中包括 \(\Omega(n^{3/5})\) 个点,w.h.p. 其中有一个 \(X\) 中元素 \(x\)。因为 \((x,s)\) 和 \((x,t)\) 在最短路径树上,所以
否则,二者间最短路上包括 \(o(n^{1/5})\) 个 heavy points。因为 \(s,t\) 都是 heavy points,所以 w.h.p. 二者分别与 \(s',t'\in Y\) 相邻。则因为 \(s',t'\) 间不超过 \(O(n^{1/5})\) 个 hp 的最短路被加入,所以有
- dr 声称,这个做法不是很牛,因为只有最后取到了 \(4\) 的界。
Is More Ambiguous Spanner with Lesser Edges Possible?
存在使用 \(O(n^{4/3})\) 条边的 \(6\)-Spanner。但是,很遗憾的是,这已经是最优界了:不存在 \(O(n^{4/3-\epsilon})\) 的常数-Spanner。
Primality Test
Fermat 小定理不是一个好选择,因为 Carmichael 数的存在。
考虑另一条思路:对于奇素数 \(p\),对于 \(a\in\Z_p^*\) 以及偶指数 \(k\),若 \(a^k\equiv1\pmod p\),则必有 \(a^{k/2}\equiv\pm1\pmod p\)。因此构思如下对奇数 \(n\) 进行素性验证的算法:
- 随机选择 \(a\in\Z_n^*\)。
- 计算 \(a^{n-1}\),如果非 \(1\) 则非质数。
- 令 \(k=n-1\)。在保证 \(k\) 为偶数的场合下不断令 \(k\) 减半,如果 \(a^k\equiv1\) 则继续,\(a^k\equiv-1\) 则报告
true
,否则报告false
。
对于奇素数,该算法百分百判断正确;对于奇合数,其正确概率至少为 \(1/2\),这是因为至少有一半的 \(a\) 会被上述算法拒绝。
- 对于 \(n=p^i\),考虑 \(t=1+p^{i-1}\),则 \(t^n\equiv 1\pmod n\),故 \(t^{n-1}\not\equiv1\pmod n\)。因此,若 \(a^{n-1}\equiv1\pmod n\),必有 \((at)^{n-1}\equiv1\pmod n\)。
- 对于 \(n=pq\),其中 \(p,q\) 互质,则可以找到 \(h^k\equiv-1\pmod n\) 中,\(k=(n-1)/2^i\) 最大的那个。使用 CRT 找到 \(t\equiv h\pmod p,t\equiv1\pmod q\) 的 \(t\),则 \(t^k\equiv-1\pmod p,t^k\equiv 1\pmod q\),于是 \(t^k\not\equiv\pm1\pmod n\)。则如果 \(a,b\) 是不同的 accept 元素,则 \(at,bt\) 会是不同的 reject 元素,因为:
- 必有 \(a^k\equiv\pm1,b^k\equiv\pm1\),因为 \(h\) 是 \(k\) 最大的一个。则必有 \(a^{2k}\equiv b^{2k}\equiv1\),但是 \(t^{2k}\not\equiv 1\pmod n\),于是 \((at)^{2k},(bt)^{2k}\) 亦然。
Polynomial Identity Testing and Schwartz-Zipple Lemma
如何判定一个包含很多括号的多项式是否恒为 \(0\)?
- 叫“Identity Testing”是因为 \(p\equiv q\) 等价于 \(p-q\equiv0\)。
Schwartz-Zippel 引理:令 \(p(x_1,\dots,x_n)\) 是 \(d\) 次非零多项式。对于任意整数集合 \(S\),有
考虑归纳。如果只有一元,则由算数基本定理,显然成立。然后考虑有
\[p(x_1,\dots,x_n)=\sum_i(x_1)^ip_i(x_2,\dots,x_n) \]令 \(k\) 为最大的满足 \(p_i\) 非恒为零的 \(i\)。则由归纳假设,有
\[\Pr[p_k(r_2,\dots,r_n)=0]\leq(d-k)/|S| \]此时,固定 \(r_2,\dots,r_n\),将 \(p(x_1,r_2,\dots,r_n)\) 看做一个关于 \(x_1\) 的一元函数,其有不超过 \(k\) 个根。于是
\[\Pr[p(r_1,\dots,r_n)=0\mid p_k(r_2,\dots,r_n)\neq0]\leq k/|S| \]于是
\[\Pr[p(r_1,\dots,r_n)=0]\leq k/|S|+(d-k)/|S|=d/|S| \]
Bipartite Graph Perfect Matching
如果二分图存在完美匹配,把每条边看成一个元后得到的图具有非零行列式。于是可以为所有边随机赋值然后算行列式判是否为零。
另一方面,所有边权均为 \(1\) 时,积和式是完美匹配计数。因为积和式属于所谓的 #P-Complete 类,而这个类是 NP-Hard 的。于是,求任一完美匹配是 P 的,但是计数却是 NP-Hard 的。
Probabilistic Complexity Classes
PTM
至少三带:只读的输入带、只读的随机带(包含独立均匀随机的 01)、工作带。
时空复杂度使用最劣情形复杂度定义。
BPP
Bounded-error Probabilistic Poly-time 复杂度类。语言 L ∈ BPP,如果存在 p.p.t TM \(M\) 满足:
- \(x\in L\implies\Pr_y[M(x,y)\text{ accepts}]\geq 2/3\)。
- \(x\notin L\implies\Pr_y[M(x,y)\text{ rejects}]\leq 2/3\)。
其中 \(y\) 是随机带输入。
BPP 要求保证在多项式时间内运行,至多 \(1/3\) 概率犯错。
\(1/3\) 可以被替换为任何 \([0,1/2)\) 中的常数界,因为存在 boosting,即多次实验取众数为结果。
如果成功概率是 \(1/2\pm\eps\),则构建新 TM \(M'\),其重复 \(m=k/\eps^2\) 次。则由 Chernoff Bound,
当然也可以不由 Chernoff Bound 而是直接硬算。总结:只需要 \(k/\eps^2\) 次重复实验,就可以达到 \(1-\exp(-\Omega(k))\) 的成功率。
RP, co-RP and ZPP
Randomized Poly-time:在 \(x\notin L\) 时总是拒绝,\(x\in L\) 时以 \(\geq1/2\) 概率接受。
co-RP:\(x\in L\) 时总是接受,\(x\notin L\) 时以 \(\geq1/2\) 概率拒绝。
可知:素性验证的前述算法是 co-RP 的。
Zero-error Probabilistic Poly-time 则是另一种常见的概率复杂度类。它成功的概率总是百分之百,但是代价是它只有期望的多项式运行时间。
另一种定义方式是,ZPP = RP ∩ co-RP。
- RP ∩ co-RP ⊆ ZPP:存在 RP 算法 \(A\) 与 co-RP 算法 \(B\)。于是构建如下算法:不断重复,如果 \(A\) 接受,则必有 \(x\in L\),则接受;同理,如果 \(B\) 拒绝则拒绝,则每一轮停机概率至少为 \(1/2\)。
- ZPP ⊆ RP:如果存在 ZPP 算法 \(C\),则运行其期望时间两倍步,如果期间停机则返回相应结果,否则拒绝。则在期望时间两倍内停机的概率至少为 \(1/2\),于是 \(x\in L\) 时以 \(\geq1/2\) 概率接受。ZPP ⊆ co-RP 的证明同理。
ZPP 属于所谓的 Las Vegas 式随机算法:它们的特征是总是成功但是只有期望时间的保证,如快排。而 RP、co-RP、BPP 都是 Monte Carlo 式随机算法:以小概率失败但是运行时间有严格保证。这类算法的一个很明显的特征是依赖于采样,比如在任何课上都可能以意料之外的方式出现的 MCMC。
现在回到复杂度类的关系。显然有 ZPP = co-ZPP。同时,简单 boosting 可得 RP, co-RP ⊆ BPP。此外,亦有 P ⊆ ZPP(忽略随机带),RP ⊆ NP(\(x\in L\) 时以 \(1/2\) 概率接受,则存在一个随机串内容作为 witness:二者的区别在于合法 witness 的多寡),co-RP ⊆ co-NP。同时,所有上述随机类都属于 PSPACE,因为可以枚举一切随机带。
但是,BPP 与 NP 的关系至今不明。
BPP embedded in PH
回忆起 Polynomial Hierarchy 的知识。有 Sipser-Gács-Lautemann 定理:BPP ⊆ Δ2。(回忆起,Δ2 = Σ2 ∩ Π2)。
首先,通过 boosting,可以找到足够大的 \(m\) 使得
\[x\in L\implies\Pr_y[M(x,y)\text{ accepts}]\geq1-\dfrac1{2m} \\x\notin L\implies\Pr_y[M(x,y)\text{ rejects}]\leq\dfrac1{2m} \]其中,使用的随机串位数 \(|y|=m\)。这是因为,失败概率是随试验次数指数衰减的,而随机串位数仅随实验次数线性上升。
一方面,有 \(x\in L\implies(\exist y_1,\dots,y_m)(\forall z)[\text{one of }M(x,y_i\oplus z)\text{ accepts}]\),其中 \(y_1,\dots,y_m,z\in\cur{0,1}^m\),因为:
- 对于固定的 \(z\),有 \(\Pr_{y_i}[M(x,y_i\oplus z)\text{ rejects}]\leq1/2m\),于是 \(\Pr_{y_1,\dots,y_m}[\text{all of }M(x,y_i\oplus z)\text{ rejects}]\leq(2m)^{-m}\)。因为共有 \(2^m\) 个这样的 \(z\),所以由 Union Bound,
\[\Pr_{y_1,\dots,y_m}[\exists z\text{ s.t. }\text{all of }M(x,y_i\oplus z)\text{ rejects}]\leq 2^m\cdot(2m)^{-m}<1 \\\Pr_{y_1,\dots,y_m}[\forall z\text{ s.t. }\text{one of }M(x,y_i\oplus z)\text{ accepts}]>0 \]另一方面,有 \(x\notin L\implies(\forall y_1,\dots,y_m)(\exists z)[\text{none of }M(x,y_i\oplus z)\text{ accepts}]\),但是证明有所不同,因为:
- 只有 \(\dfrac1{2m}\cdot 2^m\) 个 \(y\) 能使得 \(M(x,y)\) 被接受。于是,每个 \(y_i\) 使其合法的 \(z\) 数目不超过 \(\dfrac1{2m}\cdot2^m\)。由 Union Bound,它们的并集元素不超过 \(\dfrac12\cdot2^m\),因此存在使全体 \(M(x,y_i\oplus z)\) 被拒绝的 \(z\)。
以上证明了 BPP ⊆ Σ2,因此亦有 co-BPP ⊆ co-Σ2。注意到 co-BPP = BPP,co-Σ2 = Π2,于是知 BPP ⊆ Σ2 ∩ Π2。
Collapse of Hierarchy
如果 P = NP,则 PH = P。
此时有 Σ1 = NP = P。
如果有 Σi-1 = P,则考虑 Σi 的定义是 \(x\in L\iff\exists u_1\forall u_2\dots M(x,u_1,\dots,u_i)=1\),那么定义 \(L'\):\((x,u_1)\in L'\iff\forall u_2\dots M(x,u_1,\dots,u_i)=1\),则 L' ∈ Πi-1 = co-Σi-1 = co-P = P。这就意味着 \(x\in L\implies\exists u_1[(x,u_1)\in L']\),这是属于 Σ1 = NP = P 的。
即,如果 P = NP,那么整个 Polynomial Hierarchy 就会坍缩至 P。同理,如果某个 \(i\) 满足 Σi = Σi+1,则整个 PH 同样会坍缩至 Σi。
我们并不知道 BPP 和 NP 的关系。我们甚至不知道 BPP 和 EXP 的关系,即 Δ2 和 EXP 的关系:虽然前者被认为远弱于 EXP。同理,如果 P = NP,则 BPP 也会坍缩至 P。
Deterministic Solutions for Important Problems
素性验证,存在前述的随机算法(进而属于 RP 和 BPP),也存在多项式算法(AKS 素性验证)。
无向图连通性,存在随机游走算法是 RL 的,但是使用所谓的 expander 技术,可以达到 L。
至今为止,BPP = P 还是 OPEN 的。
Matrix Multiplication Reductions
把一些问题归约到 \(n^\omega\) 的矩阵乘法。
Witness for 0-1 Matrix Multiplication
两个 0-1 矩阵相乘 \(AB=C\),我们希望如果 \(C_{ij}>0\),则求出 \(W_{ij}=k:A_{ik}=B_{kj}=1\)。
如果已知这样的 \(k\) 唯一,即 \(C_{ij}=1\) 怎么办?那么可以令 \(A'_{ij}=\begin{cases}j&(A_{ij}=1)\\0&(A_{ij}=0)\end{cases}\),则 \(W=A'B\) 即有 \(W_{ij}=k\)。
但是不唯一咋办?考虑如下模型:\(n\) 个箱子,其中的 \(k\) 个有球。随机开 \(d\) 个箱子,里面恰一个有球的概率是
当 \(n/2k\leq d<n/k\) 时,这一概率至少为 \(1/2e\),是常数。于是可以重复来实现 boosting。
我们并不知道 \(k\) 是多少,但是可以倍增处理。枚举 \(d=2^i\),然后随机保留 \(A\) 中的 \(d\) 行和 \(B\) 中对应的 \(d\) 列,相乘后,得到的 \(W_{ij}\) 是否合法是容易验证的。于是可以重复 \(\log n\) 次进行 boosting,让单个 \(i,j\) 失败概率不超过 \(1/n^3\),这样总失败概率就是 \(1/n\)。
Small Subgraphs Checking
检查图中是否有三元环?查看有没有 \(A^2_{ij}\geq1\) 且 \(A_{ij}=1\) 的 \(i,j\) 即可。
四元环?有没有 \(A^2_{ij}\geq2\) 的 \(i,j\) 即可。
四元环,但是要求必须恰好是四元环,不能中间再有边?
定理:所有 \(4\)-子图,除了完全图和空图,都可以 w.h.p. 在 \(\tilde O(n^\omega)\) 内解决。
这是因为,考虑
则只有 diamond,即带一条边的四元环,会为计数贡献 \(1\);clique,即团,会为计数贡献 \(6\)。于是
如果这个数非 \(6\) 的倍数,容易发现必然存在 diamond。是 \(6\) 的倍数的话,可以随机干掉点,来让数目不是 \(6\) 的倍数。
\(4\)-cycle,即不带任何边的四元环呢?考虑 \(\sum_{(u,v)\notin E}\dbinom{A^2_{u,v}}2\),则四元环贡献 \(2\) 次,diamond 贡献 \(1\) 次,于是有
两者相减消去 \(\#\t{diamond}\) 后,即可类似判断四元环是否存在。
至于完全图还有其对应的空图,它们至今仍是 open problem。
Interactive Proof
Proof Systems
对于一个语言 L,其对应的一个 传统证明系统 (classical proof system) 是一个验证算法 \(V\),满足:
- Completeness:\(x\in L\implies\exists\t{proof}, V\t{ accepts }(x,\t{proof})\)。
- Soundness:\(x\notin L\implies\forall \t{proof}, V\t{ rejects }(x,\t{proof})\)。
- Efficiency:对于 \(x\) 和 poly 的 \(\t{proof}\),\(V(x,\t{proof})\) 是关于 \(|x|\) poly 的。
显然,这个就是 NP。
可以进一步定义 交互证明系统 (interactive proof system),其由一个交互性协议 \((P,V)\) 组成,其中 \(P\) 是计算力无限的证明者,而 \(V\) 是多项式算力的验证者。通过交互,\(V\) 希望在不被欺骗的条件下,部分获取 \(P\) 的能力。
对于输入 \(x\),有 \(a_1=V(x),a_2=P(x,a_1),a_3=V(x,a_1,a_2),\dots,a_k=V(x,a_1,\dots,a_{k-1})\),则认为 \(\ip{V,K}(x)=a_k\) 是交互的输出。
deterministic Interactive Proof (dIP) 满足 completeness:\(x\in L\) 则存在 \(P\)、soundness:\(x\notin L\) 则不存在 \(P\)。
很遗憾(?)地,dIP = P。这是因为一旦 \(P\) 确定交互历史也随之确定,于是 \(a_1,\dots,a_{k-1}\) 即为 witness,但是需要验证是否有 \(V(x)=a_1,V(x_1,a_1,a_2)=a_3,\dots\)。注意到不需要考虑 \(P\) 的表现,因为作为计算力无限的机器(但实际上 hardcode 即可),它可以实现一切所需交互。
为了提高 IP 的性能,需要引入两个新的性质:
- randomness:verifier 有一些私有的 coin toss。
- interaction:比起上面的「阅读」证明,更真正地去与之「交互」。
通过随机性,verifier 得以真正验证了 prover 的可靠性。
于是,我们定义 Interactive Proof (IP) 类为,关于 Verifier 私有的随机串 \(r\):
- Completeness:属于时,存在接受概率 \(\geq2/3\) 的 Prover。
- Soundness:不属于时,所有 Prover 的接受概率都 \(\leq1/3\)。
- Efficiency:是 p.p.t.。
这也被称为 Private Coins Model。
显然 NP ⊆ IP,并且后者可能更大。如果后者真的更大的话,那证明 randomness 确实是有必要的。
Graph (Not) Isomorphism
Graph Isomorphism:判定两张图同构。GNI:其 complement,判定是否不同构。GI 是 NP-Intermediate 语言的候选,而 GNI 甚至不一定属于 NP。
GNI ∈ IP,这表明 IP 可能严格大于 NP。
Verify 随机选二者之一并重排,要求 Prover 判断选了哪一个。如果两张图同构则存在总是准确判断的 Prover,否则因为不管选哪个输出的 distribution 均相同所以 Prover 只有一半的成功率。
coNP ⊆ IP
有 coNP ⊆ IP。事实上,有更广泛的所谓 #P ⊆ IP,而选用了 #P-Complete 的 #SAT 问题,即
考虑一个策略:假设要证明 \(\phi\) 有 \(k\) 个合法赋值方案,则当且仅当存在 \(k_0,k_1\) 使得:
- \(\phi_0(x_2,\dots,x_n):\phi(0,x_2,\dots,x_n)\) 有 \(k_0\) 个合法赋值。
- \(\phi_1(x_2,\dots,x_n):\phi(1,x_2,\dots,x_n)\) 有 \(k_1\) 个合法赋值。
- \(k_0+k_1=k\)。
于是,Verifier 可以要求 Prover 发送 \(k_0,k_1\),Verify 验证是否有 \(k_0+k_1=k\) 后,随机选 \(\phi_0,\phi_1\) 之一并递归地要求其证明 \(\#\phi_c=k_c\)。
这个满足 \(1\)-completeness(\(\#\phi=k\) 时总是成功),但是只有 \(1-2^{-n}\)-completeness,因为一个与正确 \(k\) 仅差 \(1\) 的 \(k'\) 可以在除了一个分叉以外其它的分叉上都毫无破绽。
一个解决方案是使用 算术化 (arithmetization) 的技巧,把 \(\Z_2\) 上的逻辑系统转为 \(\Z_q\) 上的算数系统。将 Boolean 公式 \(\phi\) 转为 \(\Z_q\) 上的多项式 \(p_\phi\) 满足当 \(x_1,\dots,x_n\in\cur{0,1}\) 时,\(p_\phi\) 和 \(\phi\) evaluate 的结果相同。转化方式如下:
- \(x_i\to x_i\)(但是前者是 \(\Z_2\) 变量、后者是 \(\Z_q\) 变量)
- \(\phi\land\phi'\to p_\phi\cdot p_{\phi'}\)。
- \(\lnot\phi\to 1-p_\phi\)。
- 使用 De Morgan 律把 \(\lor\) 转成 \(\land,\lnot\) 的组合。
转化成的 \(p_\phi\) 的度数不超过 \(|\phi|\),且转化过程是 poly 的。
在 \(\Z_q\) 下,我们能够方便地使用 Schwartz-Zippel 验证相等性。
具体而言,我们现在要验证是否有
对于不限于 \(\cur{0,1}\) 的 \(z\),定义关于 \(z\) 的多项式
我们让 Prover 发送 \(k(z)\)(它是一个 \(|p_\phi|\) 次多项式),然后检查是否有 \(k(0)+k(1)=k\)。
如果 Prover 是诚实的,则当 \(k\) 有无时必然有 \(k(0)+k(1)\neq k\)。否则,若 Prover 做出了欺骗,则随机挑一个 \(z_0\) 并递归验证是否有
如果两多项式不等,那么由 S-Z,找到有问题的 \(z_0\) 的概率至少为 \(1-\dfrac{d}q\)。
只需要满足 \(q>2^n\),由 union bound,所有轮上都找到 bug 的概率是 \(1-\t{poly}(n)/2^n\gg 2/3\)。
IP = PSPACE
显然有 IP ⊆ PSPACE,因为总是可以枚举所有对话并计算概率。
另一侧,我们希望对 TQBF 进行算术化,把 \(\forall\) 转成 \(\prod\),把 \(\exists\) 转成 \(\sum\),这样
的 TQBF 成立就等价于
为正。
然而,不能直接照抄 #SAT 的方法,因为 #SAT 时算的是 \(\sum\),因此传输的 \(k(z)\) 的次数不超过 \(|p_\phi|\);但是此处有 \(\prod\),因此次数可以是指数级别的。
但是注意到,我们仅在意 \(z\in\cur{0,1}\) 时,\(k(0),k(1)\) 的值是否在该为零时仍为零、在该非零时仍非零。因此可以对 \(k\) 进行一些操作,把 \(z^k\) 全部映到 \(z\),这样在不改变 \(k(0),k(1)\) 的值的同时,压缩了次数。
对于一个多项式 \(U\),定义算符 \(\t Rx_i\) 的效果即为 \(x_i^k\to x_i\),则易验证 \(\t R x_i F(\dots,x_i,\dots)=x_i\cdot F(\dots,1,\dots)+(1-x_i)\cdot F(\dots,0,\dots)\),且经过 \(\t R\) 操作后,原本的高次多项式就变成了一个不改变 \(0,1\) 处值的一次式了。
初始时,Prover 希望证明
现在考虑依次解包每个算符,即当前试图处理 \(\Phi=k\),其中 \(\Phi=(O x_i)\Phi'\),则:
- 如果 \(O=\forall/\exists\),则类似 #SAT 的算法,寻求 \(k(x_i)\),然后检查对应的 \(\prod/\sum k(x_i)\) 是否等于 \(k\),等于即为 \(x_i\) 随机赋值 \(a_i\) 然后寻求 \(k(a_i)=\Phi'\),否则则判错。
- 否则,\(O=\t R\),则注意到此时 \(x_i\) 的值已经被设定为某个值 \(a_i\) 了。此时,先寻求一个 \(k'(x_i)\),然后要求 \(((\t R x_i)k'(x_i))[a_i]=k\)。注意,这个 notation 的意思是,对 \(k'\) 作用 \(\t R x_i\) 后在 \(a_i\) 处求值。如果成立的话,再重随一个 \(a_i'\) 以确保这一步没有骗人。
Variants of IP
IP 的两个正确性要求分别是
- Completeness:属于时,存在接受概率 \(\geq2/3\) 的 Prover。
- Soundness:不属于时,所有 Prover 的接受概率都 \(\leq1/3\)。
如果把第一个 \(2/3\) 加强到 \(1\) 呢?注意到前面证明 IP = PSPACE 时的方法满足 \(1\)-Completeness,所以加强到 \(1\) 时仍然有 IP' = IP。
如果把第二个 \(1/3\) 加强到 \(0\) 呢?把 Verifier 的随机串以及双方的 dialogue 一同当作 witness,则易知直接有 IP'' = NP。
Arthur-Merlin Games
IP 的定义中,Verifier 的随机输入是私有的(所以才是 private coins model)。如果让它公开呢?这就是 Arthur-Merlin 博弈。这个模型中,每一次 Verifier 生成随机位后都会立刻与 Prover 同步。(而不是整个随机串一开始就提供给双方这样一个误解)
但是注意到 IP = PSPACE 的证明中并没有对随机位的私有性有要求,所以直接有 Arthur-Merlin = IP = PSPACE。
定义 AM[\(k\)] 为双方共发送 \(k\) 轮,其中 Verifier 即 Arthur 先手。同理有 MA[\(k\)] 为 Prover 即 Merlin 先手的 MA[\(k\)]。特别地,AM[2],即 Arthur 发送随机串,Merlin 回答,Arthur 验证,被简记为 AM,且 L ∈ AM[2] 等价于存在多项式语言 \(R\) 使得:
- 为什么这里可以被加强为 \(1\)?使用了一些类似 BPP ⊆ Δ2 的技巧。另一侧同理,改成 \(0\) 就变成 NP 了。
同理,MA[2],即 Merlin 发送证明,Arthur 验证,记作 MA,且等价于
注意到有
可以使用 \(|m|\) 轮 boosting \(\epsilon\)。于是有 MA[2] ⊆ AM[2],且通过不断交换相邻 MA 操作对变成 AM 操作对,可以得到结论:当 \(k\) 为常数时,有 MA[\(k\)] ⊆ AM[\(k\)],AM[\(k\)] = AM[2]。但是交换只能进行常数次,否则复杂度里就会带上不可承受的 \(m\) 了。
注意到,AM 的定义是
但是 Π2 只要求
于是有 MA ⊆ AM ⊆ Π2。同时,会有 co-MA ⊆ co-AM ⊆ Σ2。
GNI ∈ AM
只要能证明 GNI ∈ AM,即可表明 GI 不似是 NP-Complete 的,因为否则 GNI 是 co-NP Complete 的,则 Σ1 = co-NP ⊆ AM,而由 [BHZ87],这意味着 polynomial collapse。
不过课上还是讲了证明来着的。只需要证明在此场合下有 Σ2 ⊆ AM 即可。Σ2 的要求是
注意到有 AM[4] = AM[2]。因此,第一轮交互中,可以让 Merlin 发送一个 \(y\) 过来,然后 Arthur 再额外用一轮 co-NP 的交互判断是否有 \(\forall z(x,y,z)\in R\) 即可。AM[\(O(1)\)] = AM,这个性质还是太牛了!
那么,来证明罢!注意到 IP 时的证明不可用,因为此处的 coin 是公开的。
定义 \(S\) 为所有同构于 \(G_0\) 或 \(G_1\) 两者之一的图 \(H\),与 \(H\) 的自同构 \(\pi\) 构成的 \((H,\pi)\) 二元组。加上 \(\pi\),是为了让 \(S\) 的大小在 \(G_0\cong G_1\) 时为 \(n!\),否则为 \(2n!\)。然后就需要一种 set lower bound protocol,它的目标是 distinguish 两个二倍关系的集合。
这需要一种 \(\cur{0,1}^m\to\cur{0,1}^k\) 的 两两独立 Hash 函数 (pairwise independent hash function) 族,对于一切 \(x,y\),关于从族中 Hash 函数随机时,\(\Pr[h(x)=y]=2^{-k}\)。同时,两两独立要求对于 \(x_0,x_1\) 和 \(y_0,y_1\) 有 \(\Pr[h(x_0)=y_0\and h(x_1)=y_1]=2^{-2k}\)。例如,对于 \(a,b\in2^m\),模 \(2^k\) 的 \(h_{a,b}=ax+b\) 就是一个满足条件的 hash function。
当我们需要判定是有 \(|S|\geq2^k\) 还是有 \(|S|\leq2^{k-1}\) 时,使用 Goldwasser-Sipser 协议,Verifier sample 一个 \(\cur{0,1}^m\to\cur{0,1}^{k+1}\) 的 PIHF 后,随机选择 \(y\in\cur{0,1}^{k+1}\),然后向 Prover 寻求一个 \(x\in S\) 且 \(h(x)=y\) 的 \(x\)。
则
当 \(|S|=2^k\) 和 \(2^{k-1}\) 时,接受的概率分别 \(\geq3/8\) 以及 \(\leq1/4\)。
Multiprover Interactive Proofs
如果有多个 prover 的场合呢?即所谓 MIP。此时,禁止 prover 间的通讯是有必要的,不然就只有一个 prover 了。这意味着类似囚徒悖论的策略是可行的,因此似乎 MIP 强于 IP——鉴于后来被证明了 MIP = NEXP,由 hierarchy,这确实是事实。
另一方面,考虑可以访问 oracle \(O(\cdot)\) 的 PTM \(M^O\),称语言 \(L\) 被 \(M^O\) 接受,如果:
- \(x\in L\implies \exists O\Pr[M^O\t{ accepts }x]\geq2/3\)。
- \(x\notin L\implies \forall O\Pr[M^O\t{ accepts }x]\leq1/3\)。
则 MIP 属于 Probablistic Oracle Machine,因为可以让 Oracle 分开扮演每个 Verifier 的决策。
事实上,这些东西是等价的:双方 IP、多方 IP、POM。
POM 可以用双方 IP 模拟:使用第一个 Prover 回答 Oracle,随机取步骤要求第二个 Prover 回答。
Decision Trees
Decision Tree Complexity
令 \(f:\cur{0,1}^n\to\cur{0,1}\) 是某个函数,则考虑一个计算 \(f\) 的决策树:按照某种顺序检查输入 \(x\) 的每一位,视其为 \(0/1\) 进入左儿子/右儿子,可以提前结束,结束时的值即为 \(f(x)\),在不同子树中询问的值可以不同。对于树 \(t\) 和输入 \(x\),令 \(\t{cost}(t,x)\) 是 \(x\) 被 \(t\) 检查的 bit 数目,则一个函数 \(f\) 的 决策树复杂度 (Decision Tree Complexity) 为
例如,计算所有位的 or 这件事,决策树复杂度就是 \(n\),因为你在不检查之前永远不知道最后一位是不是 \(1\)。
例如,地址函数 (address function) \(f(x_1,\dots,x_k,y_1,\dots,y_{2^k})=y_x\) 复杂度为 \(k+1\)。
Certificate Complexity
决策树复杂度的检查顺序确定,而 证书复杂度 (Certificate Complexity) 则可以非确定性。具体而言,定义输入 \(x\) 的 \(0\)-证书 (\(0\)-certificate) 是集合 \(S\),满足全体 \(x'|_S=x|_S\) 的 \(x'\) 都有 \(f(x')=0\)——易知必亦有 \(f(x)=0\)。同理可以定义 \(1\)-证书 (\(1\)-certificate)。一个函数 \(f\) 的证书复杂度 \(C(f)\) 则是最小的 \(k\) 满足所有 \(x\) 都有大小不超过 \(k\) 的证书。
例如,以邻接矩阵给出的图连通性的 \(0\)-证书是割集——这个大小极限情况下是 \(n^2/4\);而 \(1\)-证书则是 \(n-1\) 的生成树。而这个问题要想用决策树复杂度做则不得不问完所有边才见分晓。
Relationships
显然,有 \(C(f)\leq D(f)\),因为 \(D(f)\) 被确定时,问过的东西就构成一个合法 certificate 了。
另一方面,又有 \(D(f)\leq C(f)^2\),因为:
- 如果 \(f\) 是常函数,则可以直接返回。
- 否则,随机挑一个 \(x\),寻找其最小 \(0\)-证书并询问其所有 bit 以判定之。
- 注意到任意 \(0\)-证书与任意 \(1\)-证书均须有交。因此,上述操作进行完后,所有 \(1\)-证书大小都会减少 \(1\)。
- 因此,至多 \(C(f)\) 轮寻找 \(0\)-证书,总轮数为 \(C(f)^2\)。
Circuit Complexity
Boolean Circuits
一个 Boolean 电路 (Boolean Circuit) 是一个 DAG,其中的每个节点是 二元 AND 门、OR 门、NOT 门或变量。它可以计算一个 \(f:\cur{0,1}^n\to\cur{0,1}\) 的输入规模固定的函数。特别地,一个 Boolean 公式/表达式 (Boolean Formula/Expression) 是电路图为树的 Boolean 电路。
既然强调了 Boolean 电路的输入规模是固定的,要想令其支持变长输入,就必须使用 电路族 (Circuit Family) \(\cur{C_n}=\cur{C_1,C_2,\dots}\)。一个电路族 \(C_n\) 计算函数 \(f:\cur{0,1}^*\to\cur{0,1}\) 当且仅当对于一切 \(x\) 都有 \(C_{|x|}(x)=f(x)\)。
它的 规模 (size) 是逻辑门的数目,一般直接用 \(|C|\) 表示,深度 (depth) 是自任意输入到输出节点最长路径的长度。显然,任意 \(f:\cur{0,1}^n\to\cur{0,1}\) 都可以简单使用 \(O(n2^n)\) 规模的 Boolean 电路实现。
P/poly
一个 \(T(n)\)-规模电路族 (\(T(n)\)-size circuit family) 是 \(|C_n|\leq T(n)\) 的电路族。复杂度类 SIZE(\(T(n)\)) 为所有被 \(O(T(n))\)-规模电路族判定的语言。而复杂度类 P/poly 即为全体多项式规模电路族的并,即 P/poly = ∪ SIZE(\(n^c\))。
有 P ⊆ P/poly。这一点使用计算历史:一个时间为 \(t(n)\) 的 Turing 机有 \(t(n)\times t(n)\) 的计算历史格局,其中的每个位置依赖于上一行周边三格的信息。于是把每个位置开 \(|\t{alphabet}|\) 个状态表示该位信息,然后转移可以 \(\t{poly}(|\t{alphabet}|)=O(1)\) 完成,于是 TIME(\(t(n)\)) ⊆ SIZE(\(t(n)^2\)),进而 P ⊆ P/poly。
另一方面,P/poly 又非常强大:它甚至可以判定一元版本的 HALT,即判定每个 Turing 机在空输入上是否停机!原因是,电路族的定义中并不要求 易于构造。这意味着完全可以在定义中掺一些 HALT 之类的先验信息进去。这说明 P/poly 可能压根不在 Turing Degree 中!
因此,为了让 P/poly 更加切合实际,有必要让其是可生成的。于是定义关于某种复杂度类 A 的 A-一致电路 (A-uniform circuit),为存在一个 A 中 TM \(M\),其接受输入 \(1^n\) 并输出 \(C_n\) 的某种编码。常见的一致电路包括 P-一致电路 和 L-一致电路 等。
定理:P = L-一致-P/poly。这个 notation 并非常见约定
一方面,前述计算历史格局的策略显然是 L-一致的,因此亦有 P ⊆ L-一致-P/poly。
另一方面,既然 L ⊆ P,可以生成对应的 \(C_n\) 并运行之。
非一致性相当于为 TM 赋以了一些额外的能力。因此有如下 纳言 Turing 机 (Turing machine that take 'advices'):它可以额外获得一批 自由选择 的“建言”串,即为 \((M,\cur{a_n})\) 二元组。它强于朴素 Turing 机的原因是因为 \(a_n\) 是可以随长度变化的,就如同密码学中常见的 n.u.p.p.t. TM (non-uniform probablistic polynomial time Turing Machine) 一般。不过,目前 non-uniform 的只有建言,而不包括 TM 本身;然而,因为 n.u.p.p.t 本身要求 TM 的描述是多项式级别的(不然可以硬编码一切需要的信息),因此有如下结论:
- 编码长度不超过 \(O(A(n))\)、运行时间不超过 \(O(B(n))\) 的 non-uniform Turing Machine,与建言串长度不超过 \(O(A(n))\)、运行时间不超过 \(O(B(n))\) 的纳言 Turing 机,二者一定程度是等价的:因为建言可以被解释为 TM 的编码(虽然需要 UTM),而 TM 本身也可以被当作规模为常数的描述,和建言一同被写入编码。
一个纳长度为 \(f(n)\) 的言,且在此意义下属于 A 的 Turing 机类为 A/\(f(n)\)。
有 P/poly = U TIME(\(n^c\))/\(n^c\)。
一方面,多项式规模的电路可以被当作多项式规模的建言。
另一方面,多项式规模的输入和建言以及对应的 TM 可以同样地使用计算历史处理。
Karp-Lipton Theorem and Meyer Theorem
虽然尚无定论,一般认为 NP ⊈ P,即存在无法用对数一致多项式规模电路解决的 NP 问题。进一步,一般还认为 NP ⊈ P/poly,即存在无法用任何多项式规模电路解决的 NP 问题。然而,就算 NP ⊆ P/poly,也无法说明 NP ⊆ P。
为什么这不太可能呢?因为有 Karp-Lipton 定理:若 NP ⊆ P/poly,则 PH = Σ2,此时多项式分层坍塌至第二层。
只需要证明此时有 Π2 ⊆ Σ2。Π2 中的东西写作
\[L=\cur{x:\forall y{\color{red}{\exists z(x,y,z)\in R}}} \]其中 \(R\) 是多项式语言。注意到红色部分是一个 NP 问题,因此若 SAT 可以被多项式电路 \(C\) 解决,则有
\[L=\cur{x:\exists C\forall y{\color{blue}{\text{ use }C\text{ to find }z\text{ such that }(x,y,z)\in R}}} \]即亦是 Π2 中元素。
同理有 Meyer 定理:若 EXP ⊆ P/poly,则 EXP = Σ2。证明需要一些技巧,不过在下文中可以从另一个角度验证之。
Shannon's Counting Argument
几乎所有的函数都需要大规模电路才能计算。
Shannon “硬函数” 存在定理:以 \(1-o(1)\) 的概率,一个随机的 \(\cur{0,1}^n\to\cur{0,1}\) 的函数需要规模为 \(\Omega(2^n/n)\) 的电路。这样的函数有时称作 硬函数 (Hard Functions)。
这是因为,有 \(n\) 个输入、规模为 \(s\) 的电路数目
因为有 \(3\) 种门、至多接受两个输入、门数为 \(s\)。选择 \(c\leq1/2\) 可知
在总数为 \(2^{2^n}\) 的函数中,占比是 \(o(1)\) 的。
Known Results of P/poly
Shannon 硬函数存在定理被用来证明一些确定已知的结论,例如
- EXPSPACE ⊈ P/poly。
对于所有输入长度 \(n\),考虑按顺序枚举全体函数,然后枚举全体电路验证其是否能计算该函数,则此方法可以使用指数空间找到一个需要 \(\Omega(2^n/n)\) 规模的函数,把它们排列为函数族,则其显然无法使用多项式规模电路族计算。
- \(\boldsymbol{\mathrm{EXP^{\Sigma_2}}\not\sube\mathrm{P/poly}}\)。
对于一个函数 \(f\),寻找一个规模为 \(\Omega(2^n/n)\) 的电路是 NP 的。因此,如果拥有 NP oracle,可以使用之判定是否全部 \(o(2^n/n)\) 规模电路均无法计算之。
进一步,考虑把全部 \(2^{2^n}\) 个函数编号后,二分地寻找一个无法计算的函数。具体而言,考虑不断缩小一段编号区间 \([f_l,f_r]\),则判定其中是否存在一个硬函数,是 Σ2 的。于是,一个 Σ2 的 oracle 即可被用于求出首个硬函数。
- NEXPNP ⊈ P/poly。
如果 NEXPNP ⊆ P/poly,则必有 NP ⊆ P/poly,此时 PH = Σ2。
那么,就有 \(\boldsymbol{\mathrm{P^{\Sigma_2}}=\Sigma_2=\mathrm{NP^{NP}}}\)。对它们使用 Savitch 定理中使用的 padding argument 后,可得 \(\boldsymbol{\mathrm{EXP^{\Sigma_2}}=\mathrm{NEXP^{NP}}}\)。后者已经在之前被证明 ⊈ P/poly。
NC Circuits
NC 层级 (Nick's Class,来源于首个认识到该层级重要性的研究者 Nick Pippenger) 是一种在 并行 方面有重大意义的电路。其中,NCk 要求 \(O(\log^kn)\) 的深度、多项式规模,而 NC = ∪ NCk。特别地,在一部分材料中,此处的电路有时被认为需要是对数空间一致的,在本文中不作此认定,因此在需要一致性时会特别声明,称其为 一致 NC。
一个例子是 \(n\times n\) 矩阵乘法。这分为两种:算数矩阵乘法 \(A_{ij}=\sum B_{ik}\times C_{kj}\),与逻辑矩阵乘法 \(A_{ij}=\bigvee B_{ik}\land C_{kj}\)。同时,为了让其符合 language 的定义,认为:输入 \(B,C,i,j\),输出 \((BC)_{ij}\)。
逻辑矩阵乘法是 NC1 的。这是因为,可以使用 \(\log\) 层定位到 \(i,j\),一层把对应的东西 and 起来,然后再 \(\log\) 层 or 树形结构合并所有结果。
前述策略可以使用 formula 描述。这并非特例:NC1 中的语言,当且仅当被多项式规模 Boolean 表达式判定。(Boolean 表达式的规模既可以用门数目衡量,也可以使用叶节点数目衡量——因为输出只有一位,所以这两个值仅差 \(1\))
NC1 电路可以进行展开:一个门输入两个电路,它们之间可能有内部横线,但是只需要把电路复制两份就没有内部横线了;这么做规模翻倍,因此进行 log 次后它仅仅乘以一个多项式系数。
另一方面,假如目前表达式树 \(T\) 中有一棵子树 \(S\),则 \(T\) 可以被看作是以 \(S\) 的输出为变量的 \(T(S)\),则有 \(T=(\lnot S\land T(0))\lor(S\land T(1))\),相当于把子树 \(S\) 提到与 \(T\) 同级了。因此,寻找满足规模不小于 \(n/3\) 的某极小子树 \(S\),则其两个儿子规模必然均小于 \(n/3\),因此有 \(n/3\leq \t{size}(S)<2n/3\)。令 \(A(n)\) 为规模为 \(n\) 的树最大深度,则有 \(A(n)\leq A(2n/3)+3\),可知 \(A(n)=O(\log n)\)。
一致NC ⊆ P,因为 P 是 L-一致-P/poly。
一致NC1 ⊆ L,因为可以对数空间生成对应的电路,而因为深度是对数级别所以可以 dfs 来 evaluate 电路。
NL ⊆ 一致NC2,这是因为 PATH ∈ 一致NC2,因为可达性是矩阵的幂次,而矩阵乘法是 NC1 的,所以套一个快速幂即得 NC2。
P-Complete Problems
NC 与 P 的关系即是在研究是否有 一切高效的算法都能被高效并行。这其中,所谓的 P-Complete 问题更像是不可并行的。与一致性相同,P-Complete 建立在对数空间规约上。只要有 P-Complete 问题属于 NC,那即有 P = NC。
P-Complete 问题的例子如,CIRCUIT-VALUE = \(\cur{\ip{C,x}\mid C\text{ is Boolean Circuit and }C(x)=1}\)。这是因为,使用 P ⊆ P/poly 的规约,可以把 poly 的 TM 变成 L-一致-poly 的电路。此外,线性规划同样也是 P-Complete 的。
AC Circuits and Hierarchy
显然有 NC 分级 NC1 ⊆ NC2 ⊆ NC3 ⊆ … ⊆ NC,且只要其中任两项相等则分级坍塌。
此外,还有 交错层级 (Alternating Class) AC,其与 NC 相同,除了其中的 AND 门和 OR 门可以有大于 \(2\) 的 扇度 (fan-in)。ACk 即为深度为 \(O(\log^k n)\) 的此种电路。因为 \(k\)-扇度门可用 \(\log k\) 层 \(2\)-扇度门模拟,所以有 NCk ⊆ ACk ⊆ NCk+1。
特别地,AC0 是一个很好玩的类,它有多项式个门、每个门可有任意数目的输入,但是深度必须是常数级别的。
例如,二进制加法中,carry bit 貌似只能逐层上传;但是,注意到 \(c_k=1\) 当且仅当存在一个 \(j<k\) 满足:
- \(a_j=b_j=1\),即 \(a_j\land b_j\)。
- 对于所有 \(j<i<k\) 均有 \(a_i\lor b_i\)。
因此有
因此二进制加法属于 AC0。
有什么 NP 问题不属于 AC0 呢?有的,即 \(\t{Parity}(x_1,\dots,x_n)=\bigoplus x_i\)。有 Parity ∉ AC0,证明在下一节中提到。
Polynomial Method
这是一种将常数深度电路转化为低度数多项式的方法。
Conversion from Circuit to Polynomial
令 \(C\) 是一个规模为 \(s\)、深度为 \(d\) 的电路,则 \(C\) 可以被一个度数为 \((\log s)^{O(d)}\) 的 \(\Z_3=\cur{-1,0,1}\) 中多项式 \(99\%\)-近似。
之前的 arithmetic method 使用了 \(\bigvee x_i=1-\prod(1-x_i)\),不过它的度数将会很高。这里使用另一个想法:如果 \(x_1,\dots,x_n\) 非全零,即 \(\bigvee x_i\) 成立,则独立均匀自 \(\Z_3\) 中随机 \(a_1,\dots,a_n\),有 \(\sum a_ix_i\neq0\) w.p. \(2/3\)。
注意到当 \(\bigvee x_i\) 时,\(\sum a_ix_i\) 会以等概率取 \(-1,0,1\),为了统一后两种,将其平方,定义 \(P_a=(\sum a_ix_i)^2\),则它是一个度数为 \(2\) 的多项式,且以 \(1/3\) 概率取 \(0\)、\(2/3\) 概率取 \(1\)。重复 \(\Theta(\log s)\) 次实验并合并 \(1-\prod(1-P_a)\),即可造出一个度数为 \(\Theta(\log s)\) 的多项式,以 \(<1/100s\) 的概率在计算 \(\bigvee x_i\) 时出错。
使用 \(1-p\) 表示 NOT 门,De Morgan 律表示 AND 门,即可造出失败概率不超过 \(1\%\) 的多项式。即,存在一批实验向量 \(A\),它们对于 \(99\%\) 的输入均有效。
Conversion from Parity is Impossible
然而,\(n\) 元 Parity 无法被一个度数为 \(c\sqrt n\) 的 \(\Z_3\) 上多项式 \(99\%\)-近似,其中 \(c\) 是一个小常数。
首先,\(\cur{0,1}^n\to\cur{0,1}\) 的多项式可简单与 \(\cur{-1,1}^n\to\cur{-,1}\) 的等阶多项式互化:假如有 \(f(x_1,\dots,x_n):\cur{0,1}^n\to\cur{0,1}\),则构建 \(g(x_1,\dots,x_n)=2f((x_1+1)/2,(x_2+1)/2,\dots,(x_n+1)/2)-1\)。换到 \(\Z_3\) 上就是 \(g(x_1,\dots,x_n)=-f(-x_1-1,-x_2-1,\dots,-x_n-1)-1\)。
在 \(\cur{-1,1}^n\to\cur{-1,1}\) 上的 parity 是 \(\prod x_i\)。假设其可被某个 \(c\cdot n^{1/2}\) 的多项式 \(q(x_1,\dots,x_n)\) 近似,则有 \(\prod x_i=q(x_1,\dots,x_n)\) 在某个 \(S\sube\cur{-1,1}^n\) 且 \(|S|\geq0.99\times2^n\) 上成立。
注意到在 \(\cur{-1,1}\) 中有 \(x=x^{-1}\)。 那么考虑任何一个单项式 \(\prod_{i\in T} x_i\)(因为值域是 \(\pm1\) 所以奇数幂等于一次,偶数幂等于零次,所以 \(T\) 应该是不可重集),如果它阶数高于 \(n/2\)(即 \(|T|>n/2\)),则有 \(\prod_{i\in S}x_i=\prod_{i\in\bar S}x_i\cdot q(x_1,\dots,x_n)\),也就是说,高于 \(n/2\) 阶的单项式可以被转化为 \(n/2+c\sqrt n\) 阶的单项式。
鉴于任何 \(\cur{-1,1}^n\to\cur{-1,1}\) 的函数都可以首先通过 \(\cur{0,1}\) 为桥梁转成 \(n\) 次多项式,因此可以进一步拆成单项式的和后,转成阶数不超过 \(n/2+c\sqrt n\) 的多项式。这个性质在某个 \(|S|\geq0.99\times2^n\) 的集合上均成立。
这样的函数数目是 \(2^{0.99\times2^n}\) 级别的,然而 \(n/2+c\sqrt n\) 阶多项式数目只有
因此,可以取一个适当小的 \(c\) 使得函数数目更大,进而产生矛盾。
对于规模 \(s=\t{poly}(n)\),深度 \(d=O(1)\) 的电路,它均可以被度数为 \(\t{polylog}\) 的多项式近似,而鉴于 Parity 甚至不能被度数为根号的多项式近似,它必然是不属于 AC0 的。
ACC
既然 AC0 无法计算 Parity,可以尝试增添一个计算它的门,也即所谓的 MODp 门:MODp 在 \(\sum x_i\equiv 0\pmod p\) 时输出 \(0\),否则输出 \(1\)。AC0[p] 为添加 MODp 的 AC0,而 ACC0 = ∪ AC0[p]。
已知 MOD2 ∉ AC0[3]。进一步,可以类似(真的吗?上述证明似乎是依赖了 \(\Z_3\) 固有的众多性质来着的)证明对于不等的质数 \(p,q\) 有 MODp ∉ AC0[q]。
[Williams 2010] NEXP ⊈ ACC0。
APSP
全源最短路,模型是 RAM,边权是 \([0,n^3]\)。[Williams 2014] \(n^3/2^{\Omega(\sqrt{\log n})}\)。
APSP 可以规约到对数次 \(\min,+\) 矩阵乘法。如果只要计算两个 \(k\) 维向量的 \(\min,+\) 点积呢?
- 首先,\(\log n\) 位加法可以使用 \(\t{poly}(\log n)\) 规模 AC0 解决。
- 然后,两个数比大小同样是 \(\log n\) 规模 AC0(可以找到首个不同的位置)。\(k\) 个数求最小值则是某个数比其它均小。于是求 \(\min\) 则是 \(\t{poly}(\log n,k)\) 规模的。
那么,\(\min,+\) 点积则亦是 \(\t{poly}(\log n,k)\) AC0 的。使用 Polynomial Method,它可以被 \(D=\log^{O(1)}(k\cdot\log n)\) 度数的多项式以 \(1-1/n^3\) 概率近似。
对于一个有 \(O(k\log n)\) 位输入的 \(D\) 次多项式,将其展开后项数是 \(O((k\log n)^D)\)。于是,有
也即,\(k\) 位 \(\min,+\) 点积可以被转成 \(((k\log n)^D)\) 位常规点积。于是 \(n\times k\) 与 \(k\times n\) 位矩阵的 \(\min,+\) 矩阵乘法可以被转成相应的常规矩阵乘法。假如转化后的长度足够小,例如,被 \(n^{0.1}\) bound,则可以用 FMM 计算。取 \(k=2^{\Theta((\log n)^{1/(c+1)})}\) 即可。
APSP-Hard Tasks
因为 FGC 懂太多了,所以以下部分可能较为意识流。
APSP:有向图 全源最短路。
显然,\(\min,+\) 矩阵乘法可以规约到 APSP;反之,APSP 也可以被规约为对数次 \(\min,+\) 矩阵乘法。因此,在 真亚三方 (truly subcubic) 意义下,二者等价。
负环可以简单规约到 \(\min,+\) 乘法:验证 \(A^2_{i,j}+A_{j,i}<0\)。
常规矩阵乘法验证 存在 \(n^2\) 的 co-RP 算法:随机 \(n\) 维向量 \(r\),然后计算 \(P=A(B\cdot r)-C\cdot r\)。则:如果 \(AB=C\),其总是为 \(0\);如果 \(AB\neq C\),其以 \(1/2\) 概率非零。
\(\min,+\) 矩阵乘法验证 则没有真亚三方算法。
把 \(\min,+\) 矩阵乘法规约到三分图上的 All Pairs Negative Triangles:即对于一切 \(i,j\),寻找 \(k\) 使得 \(i\to j+j\to k+k\to i\) 是负环。
只需要 \(i\to j=A_{ij},j\to k=B_{jk},k\to i=-w_{ik}\),其中 \(w\) 用于整体二分,即可把 \(\min,+\) 矩乘转成对数次 APNT。
把 APNT 转成 NT。方法挺魔怔的:不断找负环 \((i,j,k)\),移除边 \(i\to j\) 并标记 \(C_{ij}=k\) 即可。这个复杂度是 \(O(T(n)n^2)\),其中 \(T(n)\) 是 NT 复杂度。显然太慢了,于是把 \(I,J,K\) 各自切分成大小为 \(s\) 的块,复杂度是 \(((n/s)^3+n^2)T(s)\)(因为所有边仍然只会被删一次),取 \(s=n^{1/3}\) 即可在 NT 可以 \(n^{3-\delta}\) 时达到 \(n^{3-\delta/3}\)。
正权图上的最小环可以简单归约到 APSP。然而,负权图上最小环可以被 Hamilton 环规约,因此是 NP-Complete 的。将 NT 归约到正权图上最小环,只需把所有边权加上 \(8M\),得到所有边权都在 \([7M,9M]\) 中的图,则三元环最大边权不过 \(27M\),而四元环最小边权为 \(28M\)。
最后,只需把最小环归约到 \(\min,+\) 矩阵乘法验证。可以搓几个矩阵放一块。
综上,APSP-等价的 task 构成如下结构:
SETH, ETH, OV and 3SUM
Exponential Time Hypothesis (ETH):3-SAT 不能在 亚指数 (subexponential) 时间内解决。也即,其至少需要 \(2^{\delta n}\) 的时间。
可以达到 \(2^{(1-\epsilon)n}\) 时间的方法:随机初始化变量赋值,然后重复 \(n\) 次:每次随机选择一个未满足的 clause,将其中某个变量翻转(从而其被满足)。每次翻转以 \(1/3\) 的概率是正确的(因为是 3-SAT)则每轮成功的概率可以被计算为 \((2/3)^n\),期望执行 \(1.5^n\) 轮。
进一步,每轮重复 \(3n\) 次,需要的轮数衰减到 \((4/3)^n\) 轮。
Strong ETH (SETH):对于一切 \(\epsilon\),都存在不能 \(2^{(1-\epsilon)n}\) 的 \(k\)-SAT。
SETH 推出 OV:对于一个 \(n\)-变量,\(m\)-从句,\(k\)-SAT,将变量均分为两个集合,对于二者内部所有赋值方案分别造两个从句被满足的集合,则需要在两个集合 \(V_1,V_2\) 中找到一对正交向量,把它们一个前面全放上 \(01\)、另一个全放上 \(10\),然后扔到同一个集合里跑 OV,即由 \(n^{2-\delta}\) 的 OV 得 \(2^{n(1-\delta/2)}\) 的 \(k\)-SAT 算法。
OV 归约到 编辑距离:把所有 vector 化成向量,然后令正交对的 ED 为 \(S\)、非正交对的 ED 为 \(S<L\)。使用 padding 强制对齐后,只需要检查总 ED 是否 \(<nL\) 即可。
现在,建造对 single-bit,内积为 \(0\) 时编辑距离为 \(1\)、为 \(1\) 时编辑距离为 \(3\) 的 atomic 串。由此可以简单建造 multi-bits 内积为 \(0\) 时编辑距离为 \(d\)、非零时编辑距离 \(\geq d+2\) 的
然后简单造一个与后者编辑距离为 \(d+1\) 的,让二者求 \(\min\) 即可。
附:考虑 \(D_{i,j}=\min(\min(D_{i-1,j},D_{i,j-1})+1,D_{i-1,j-1}+[x_i\neq y_j])\) 的矩阵,则其中任意 \(k\times k\) 矩阵均可只由 \(O(k)\) 个元素决定,而相邻两个值差仅可能为 \(-1,0,1\),于是关于 \(\log n\times \log n\) 矩阵的全体边界条件预处理推理结果,即可做到 \(O(n^2/\log n)\),此乃四毛子。
无向图无权图直径 的 \(3/2\)-近似算法:随机大小为 \(O(\sqrt n)\) 的集合 \(S\),bfs 求所有点到该集合的最短路,找到使得该距离最大的 \(w\),再寻找所有 \(d(w,v)<d(w,S)\) 的 \(v\) 组成 \(T\),则 \(T\) 大小期望是 \(\sqrt n\) 的;从 \(S,T\) 中每个点出发求到所有点的距离,这一距离的最大值是直径的 \(3/2\) 近似。复杂度 \(O(m\sqrt n)\)。
因为,若 \(d(a,b)=3h\),且 \(S\) 中有点 \(u\) 距 \(a,b\) 之一超过 \(2d\)(或不足 \(d\),显然这推出距另一者超过 \(2d\)),则已有 \(3/2\)-近似。于是,\(S\) 中所有点到 \(a,b\) 的距离均在 \((h,2h)\) 间。那么,考虑从 \(w\) 至 \(b\) 路径上距 \(w\) 恰好为 \(h\) 的点 \(y\),则其必在 \(T\) 中,且 \(d(y,b)<h\),则 \(d(y,a)>2h\)。
其困难性依赖于能区分 \(2\)-直径和 \(3\)-直径即可解决 OV。
动态有向图单源可达性(#SSH):在无向图的场合存在众多甚至低于 \(\sqrt n\) 的随机或确定性的算法,但是有向图的场合,OV 可以规约至之。这是因为,可以简单建立使用 \(O(nd)\) 次修改、\(n\) 次查询的方法。
在线矩阵-向量乘法:有 \(n\times n\) 的 01 矩阵 \(A\),有 \(n\) 个 \(n\) 维 01 向量 \(\cur{v_i}\) 依次到达,要依次计算 \(Av_i\)。在线矩阵-向量乘法假设 (OMv):其有单次下界 \(\Omega(n^{1-o(1)})\)。
显然,其可以被规约到动态 \(st\)-可达性。具体而言,建一个 \(s\) 和一个 \(t\),使用 \(A\) 作为中继,以 \(e_i\) 从 \(s\) 连到 \(A\),以 \(v_i\) 从 \(A\) 连到 \(t\) 即可。
\(st\)-可达性则可以通过拆点归约到完美匹配:将所有点拆为 \(x_L,x_R\),连边 \(x_L\to x_R\),对于原始边 \(x\to y\) 连边 \(x_L\to y_R\),然后删去 \(s_L,t_R\),则该图存在完美匹配当且仅当 \(s,t\) 可达。
3SUM 可以通过排成三行归约到非水平的 3P1L,也可以通过 \(a\mapsto(a,a^3)\) 归约到普通的 3P1L。3L1P 与 3P1L 对偶。