这是系列中的第8篇,咱们主要讨论计算中交互做用的用处和IP类问题是什么.dom
为了回答这些问题,咱们首先给交互式证实系统一个简洁的介绍.众所周知,零知识证实在密码协议中十分重要.零知识的概念在这篇介绍中有 [1].这种证实的迷人之处就在于断言的可验证性被证实了.为了解释这个东西,Goldwasser, Micali和Rackoff在经典证实系统上增长两种结构变成了交互式证实系统.第一个结构是随机化(randomisation),也就是说证实的结果多是错的,可是这种错误只能以很小的几率出现.第二个结构就是像它名字那样,就是交互性(interaction),静态证实系统被动态的证实代替,动态证实将于验证程序交互并给出断言是否为真.结合这两种结构的经典证实系统就是一个巨大的复杂类问题---IP.spa
不严谨的说,一个证实就是一我的能让另外一我的相信的方法.这两我的在证实系统中叫prover和verifier.ip
一个经典的数学证实系统就是固定的一些陈述语句的排列.这些排列被prover写下来,而后verifier一步一步的判断这些陈述语句的正确性.这个过程是没有交互的.ci
任何证实系统应该有下面的属性:字符串
回顾NP复杂类问题被看做是一类语言.它的成员都具备能够轻松检查的证书(注:这里建议读读NP的另外一种定义,清晰的解释了这个证书是啥.).所以NP刚好就是一类经典证实的语言.get
在一个交互式证实系统里,prover和verifier被容许交互式的交换信息.在引入交互证实的概念以前,咱们来给出一个例子来解释交互式证实系统是怎么工做的.数学
例子:图的同构和图的非同构it
两个图G和H被叫作同构的,若是G的节点能够从新排列使得它能够和H节点相同.咱们定义下面这类语言:io
\(ISO = \{ <G,H>| G\space and\space H\space are \space isomorphic\space graphs \}\)class
ISO是NP类的语言.尽管节点的数量可能很是大,可是咱们能很是容易的验证这个问题.
而后咱们考虑ISO问题的补,即Non-isomorphism问题,就是定义语言:
\(NOISO = \{ <G,H>| G\space and\space H\space are\space not \space isomorphic\space graphs \}\)
问题是,使用经典的证实咱们如何给verifier证实G和H不是同构的.咱们不知道如何提供一个短的证实,多项式时间没法对每一个状况进行检查.由于咱们不知道如何证实NOISO在NP中.然而在考虑到交互式证实,prover能够说服verifier,这两个图是不一样构的(多项式时间内).
prover和verifier都有一对图\((G_1,G_2)\)做为初始输入.verifier随机的选择一个随机比特(bit)\(b \in \{ 0,1\}\)和一个排列\(\pi\).而后将\(\pi\)应用到\(G_b\)获得一个图\(H\).(这里意思就是说\(H\)和\(G_b\)同构)verifier发送\(H\)给prover.而后prover在收到\(H\)以后,prover发送一比特\(b^{'} \in \{0,1\}\)给verifier.最后verifier接受当且仅当\(b^{'}=b\).
在协议背后的观点就是,若是被给的\((G_1,G_2)\)不是同构的,那么prover应该可以肯定\(H\)是来自于\(G_1\)或者\(G_2\)的.然而,若是输入的两个图是同构的,那么尽管有着无限的计算能力,prover最好的选择就是随机的猜\(b^{'}\).这种状况下,prover至少1/2的接受.
从上面的例子中,咱们总结NOISO不能被verifier用一个古典的证实系统证实.可是它能够被一个交互的证实系统证实.咱们能看到交互的力量.
如今咱们给出交互式证实系统的定义和IP复杂类的定义.
交互式证实系统:一对交互机\((P,V)\)被叫作\(L\)语言的交互式证实系统,若是V是多项式时间的,(P的计算能力是无限的),和如今的条件知足:
IP类复杂问题:IP类问题包含全部交互式证实系统能证实的语言.
经过定义,在BPP语言中的全部语言都在IP中.若是咱们限制交换的信息的数量为1,那么这就是IP中的NP类问题.实际上,IP是一个很大的类.在1992年,Shamir证实了\(PSPACE = IP\)[3].
额外的,注意到协议prover应该抛出私有的硬币,若是prover被容许访问verifier的随机字符串,就会致使使用共有硬币的交互式证实,这种模型和AM复杂类[4]很像.
[1] http://dl.acm.org/citation.cfm?id=63434
[2] http://www.amazon.co.uk/Introduction-Theory-Computation-Michael-Sipser/dp/0619217642
[3] http://dl.acm.org/citation.cfm?doid=146585.146609
[4] http://en.wikipedia.org/wiki/Arthur%E2%80%93Merlin_protocol