第八章 交互式证明
什么是一个好的证明系统天生必须具备的性质?
-
所有正确的能被证明;
-
所有错误的不能被证明;
-
证明者的证明过程和计算量可以很大,但是验证者所需的工作量不应该太大。
—— Goldwasser, Micali, Rackoff 1985
什么是交互式证明?可以先假定它指的是一个证明系统,其中存在证明者和验证者。验证者提问,证明者回答,验证者通过其回答确定是否接受证明者给出的证明的正确性。
8.1 验证者是确定性图灵机时的交互式证明
不妨假设双方都可以保存一个当前状态,即双方提出的问题/给出的回答都根据自己和对方在之前交换的信息来确定。由此可以得出以下定义:
Def.(确定性交互式证明)设 \(f,g:\{0,1\}^{*}\to \{0,1\}^{*}\)。在输入 \(x\in \{0,1\}^{*}\) 上的,\(f,g\) 的 \(k\) 回合交互,记作 \(\langle f,g\rangle(x)\),定义为一列 0/1 串 \(a_1\sim a_k\),其中 \(a_1=f(x), a_2=g(x,a_1)\cdots a_{2i+1}=f(x,a_1,a_2,\cdots,a_{2i}),a_{2i+2}=g(x,a_1,a_2,\cdots, a_{2i+1})\)。\(f(resp. g)\) 最终输出的结果记作 \(out_f\langle f,g\rangle(x)(resp. out_g\langle f,g\rangle(x))\),定义为 \(f(x,a_1,a_2,\cdots, a_k)(resp.g(x,a_1,a_2,\cdots, a_k))\)。
Def.(确定性证明系统)称一个语言 \(L\) 有 \(k(|x|)\) 回合确定性交互式证明系统,当且仅当存在确定性图灵机 \(V\),它在输入 \(x,a_1,a_2,\cdots, a_{t(x)}(t(x)\leq k(|x|))\) 上的运行时间是关于 \(|x|\) 的多项式,且满足:
-
完备性:\(x\in L\Rightarrow \exists Q:\{0,1\}^{*}\to \{0,1\}^{*}:out_V\langle V,Q\rangle(x)=1\);
-
可靠性:\(x\notin L\Rightarrow \forall Q:\{0,1\}^{*}\to \{0,1\}^{*}:out_V\langle V,Q\rangle(x)=0\)。
这里原作一车笔误,可能是作者和平精英玩多了导致的。
Def.(\(\text{DIP}\) 类)\(\text{DIP}\) 类定义为全体存在 \(k(|x|)\) 回合确定性交互式证明系统的语言 \(L\) 构成的集合,其中 \(k(|x|)\) 是关于 \(|x|\) 的多项式。
Thm. \(\text{NP}=\text{DIP}\)。
\(\text{NP}\subseteq \text{DIP}\) 是 trivial 的(很抱歉使用这个词);对于任意 \(L\in \text{DIP}\),实际上我们想要找的就是能让 \(V\) 接受它(输出 \(1\))的序列 \((a_1,a_2,\cdots a_{i}),i\leq k(|x|),V(x,a_1,a_2,\cdots, a_i)=1,2\nmid i\)。先算出 \(V(x)=a_1\)。对于 \(i=3,5\cdots\),尝试 \(a_i\) 是否可以为 \(1\)。具体来说就是用非确定性图灵机枚举 \(a_{i-1}\),因为 \(L\) 对应的 \(V\) 是 \(P\) 的,\(a_1,a_2,\cdots a_i\) 也只能是关于 \(|x|\) 的多项式长度,所以这个非确定性图灵机的运行时间也是 \(P\) 的。如果不行的话,对于所有 \(a_{i-1}\) 算出 \(a_i\),再枚举 \(a_{i+1}\),依次推进。如果找到一组 \((a_1,a_2,\cdots a_{i})\),那么根据这个构造一个 \(Q\) 即可。所以其实这个 \(Q\) 只有很有限的一些点值是有意义的。因此 \(L\in\text{NP},\text{NP}=\text{DIP}\)。