這是系列中的第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