互動式證明系統

在計算複雜性理論中，互動式證明體系（以下簡稱互動證明）是一類計算模型。像其它計算模型一樣，互動證明的目標是對一個語言 L，和一個給定的輸入 x，判斷 x 是否在 L 中。互動證明由兩個實體：驗證者（verifier）和證明者（prover）組成，兩者都可以看作是某類圖靈機。而它的計算過程為：給定了輸入 x，透過驗證者和證明者之間交換資訊，最終，由驗證者來根據證明者給出的資訊，判斷給定的輸入是不是在語言 L 中。

互動證明的基本假設是：證明者在計算能力上是無限的，在機率多項式時間（BPP (複雜度)）的圖靈機。一般來說，對給定的 L，我們關注的是互動證明中驗證者 V 這一角色，並對它加以如下的要求：

完備性（completeness）：如果 x∈L，那麼存在誠實的證明者 P，使得 V 與 P 的互動之後，輸出 “x∈L”；
可靠性（soundness）：如果 x∉L，那麼對任意的證明者 P，V 與 P 互動之後，輸出 “x∈L” 的機率很小（可以認為小於某一常數）。

如果對 L，這樣的驗證者存在，那麼稱 L 有這樣的一個互動體系。

類似對圖靈機所需的執行時間和空間等加以限制來得到語言的集合 —— 複雜性類一樣，透過改變互動證明中，互動過程的輪數、隨機源是公開的還是驗證者所私有的，以及證明者的數目等等引數，可以得到不同能力的證明體系，並依據一個語言是不是有這樣引數的互動證明，來定義相應的語言的集合 —— 複雜性類。依據互動證明定義的主要複雜性類有 IP 和 AM，它們與依據圖靈機定義的經典複雜性類的關係是重要的研究課題。

NP

導致互動證明的發現的第一個觀察是對 NP 的如下的理解：NP 可以理解為解可以在多項式時間進行驗證的問題的集合，而求這個解的過程可能是較為困難的，如對 NP 完備問題，現今仍未有多項式時間的演算法。這樣，“驗證解” 和 “求解” 這兩項計算任務就有了計算能力上的差異。所以可以假設 “驗證解” 是由驗證者完成（在 NP 的情況下，是確定性多項式時間圖靈機），而 “求解” 是由一個能力更強的圖靈機完成的（在 NP 的情況下，可以假設是確定性指數時間圖靈機）。下面用 PTM 代表確定性多項式時間圖靈機。

於是從 NP，可以設計如下的互動證明：給定 L∈NP，和 x∈L，我們知道對 x 的一個解 w，有一 PTM，對輸入 (x, w)，輸出 “接受” 當且僅當 w 是 x 的一個解。考慮一輪的，由證明者 P 發起的互動證明：

證明過程：
# V 和 P 商量好解的長度 l，且 l 是輸入的多項式；
# V 和 P 接到輸入 x；
# P 將解 w 送給 V。不論 P 送多少字元，V 只擷取前 l 個；
# V 執行 M (x,w)，輸出 “接受” 當且僅當 M 輸出 “接受”。
完備性：由 L 的性質，可以知道對 x∈L，當且僅當有解 w，使得 M (x,w) 接受。所以一個好的證明者將利用它無限的計算能力得到 w，故 V 會接受；
可靠性：同樣由 L 的性質，當 x∉L，不可能有解 w，使得 M (x,w) 接受。所以一個壞的證明者將無法使 V 接受不在 L 中的 x。

因此，NP 是包含在輪數為 1、交換資訊長度為多項式的、驗證者是確定性圖靈機的證明體系中的。反過來，這樣的證明體系定義的語言容易看出也是在 NP 中的。這樣 NP 就與這樣的證明體系等價。可以證明，當驗證者是確定性圖靈機，每輪交換資訊長度為多項式的，即便將輪數擴充套件成多項式輪，所得到的互動證明仍然與 NP 是等價的。這樣就需要將驗證者擴充套件成隨機性圖靈機，此時就有了下面的有趣的複雜性類。

梅林 - 亞瑟協議（MA）

保持輪數為 1 輪，由證明者發起，而將上面的 PTM 換作機率多項式時間圖靈機，可以得到複雜性類 MA: 驗證者是一個在機率多項式時間的圖靈機 (亞瑟)，證明者（梅林）給出對於問題的解之後驗證者必須在 1/3 的錯誤率以內決定 n 是否在這個語言之內。

更正式地說：

對任何語言 L, 若是多項式:

if x is in L, then
if x is not in L, then

The second condition can alternatively be written as

if x is not in L, then

亞瑟 - 梅林協議（AM）

IP

在計算複雜性理論內，IP 是由以下特定互動式證明系統所能解決的一類問題：驗證者是一個在機率多項式時間的圖靈機，雙方可以交換多項式次資訊，最後驗證者必須在 1/3 的錯誤率以內決定 n 是否在這個語言之內。（所以在 BPP 內的語言一定在 IP 之內，因為我們可以讓驗證者直接忽略證明者然後自己對這問題作決定。）

更正式的說：

對任何語言 L, 若:

。

和 AM 不同之處在於，它的交換資訊次數是被常數次數而非被一個多項式次數所限定。

4.1 IP = PSPACE

要證明 IP 與 PSPACE 相等，我們先證明出 IP 是 PSPACE 的子集，然後證明 PSPACE 也是 IP 的子集，因此之故兩個集合相等。要證明出，我們展現出一個用多項式空間的機器可以怎樣模擬一個互動式證明系統。要證明這一件事，我們推導一個 PSPACE - 完全語言 TQBF 是在 IP 裡面。這兩個部份的證明均是由 Sipser 提出的。

IP 是 PSPACE 的子集

設 A 是 IP 裡的一個語言。 Now, assume that on input w with length n, A 的檢驗者 V exchanges exactly messages. 我們現在建立一個機器 M 來模擬 V，並且 M 是 PSPACE 機器。 為了達到這個目的，我們定義 M 如下：

根據的定義，we have if and if .

現在，我們可以定義：

並且對任何 and every message history ，我們歸納定義這個函式如下：

where the term is defined as follows:

PSPACE 是 IP 的子集

為了展示我們證明的方法，我們先證明一個比較弱的理論：（最早由 Lund, et al. 證明）。然後利用這個證明的概念去證明。既然 TQBF PSPACE - 完全，我們可以得知若則 PSPACE IP，因此證明 PSPACE IP.

#SAT 是 IP 的其中一個語言

我們開始證明如下：

TQBF 是 IP 的其中一個語言

MIP

在 1988 年，Goldwasser et al. 基於 IP 創造了另一個更強的互動式證明系統 MIP，它包含兩個獨立的證明者。一旦檢驗者開始跟證明者溝通的時候，這兩位證明者就不能互相溝通。多了一個證明者讓檢驗者可以檢查第一個證明者的證明，會讓避免檢驗者被證明者欺騙的工作變得更簡單，就像犯人自白時讓他與他的同夥分開在兩個無法互相溝通的地方自白時會比較容易找出他們是否說謊一樣。事實上，這一件事的差異大到 Babai, Fortnow，和 Lund 證明了 MIP = NEXPTIME，這類問題是在指數時間之內以非決定性解的出來的問題，這是一個非常大的類別。此外，在 MIP 系統內，即使不做任何多餘的假設，所有的 NP 語言均有零知識證明；在 IP 裡面唯有假設存在單向函式才可能成立。

IPP

IPP（unbounded IP）是 IP 的一種變體，將原來的 BPP 檢驗者換成 PP 檢驗者。更精確的說，我們將完備性跟可靠性的條件修改如下：

完備性（completeness）: 如果一個字串是在這個語言裡面，檢驗者至少會有 1/2 的機率相信誠實的證明者。
可靠性（soundness）: 如果一個字串不在這個語言裡面，檢驗者會有低於 1/2 的機率相信說謊的證明者。

雖然 IPP 仍舊與 PSPACE 相等，但是 IPP 協議系統在涉及啟示圖靈機的情況下與 IP 的狀況差異頗大：對所有的啟示圖靈機 IPP=PSPACE，但是幾乎對所有的啟示圖靈機，IP ≠ PSPACE。

QIP

QIP 是將 IP 的 BPP 檢驗者換成一個 BQP 檢驗者所產生的變體，說更明白些，BQP 是可以用量子計算機在多項式時間內解決的問題類別。並且，這一些訊息是用量子位所表示的。在 2009 年，Jain, Ji, Upadhyay，和 Watrous 證明了 QIP 也與 PSPACE 相等，總結起以上 Kitaev 和 Watrous 的理論，我們得到 QIP 包含在 EXPTIME 內的結論，因為 QIP = QIP3，so that more than three rounds are never necessary.

compIP

IPP 跟 QIP 都是給予檢驗者更多的能力，但是一個 compIP 系統（competitive IP proof system）則是將證明者減弱如下：

完備性：如果一個字串在語言 L 裡面，則誠實的驗證者會有至少 2/3 的機率被誠實的證明者說服。

PCP

零知識證明

零知識證明是一種特殊的互動式證明，其中證明者知道問題的答案，他需要向驗證者證明 “他知道答案” 這一事實，但是要求驗證者不能獲得答案的任何資訊。

可以參考這樣一個簡單的例子。證明者和驗證者都拿到了一個數獨的題目，證明者知道一個解法，他可以採取如下這種零知識證明方法：他找出 81 張紙片，每一張紙片上寫上 1 到 9 的一個數字，使得正好有 9 份寫有從 1 到 9 的紙片。然後因為他知道答案，他可以把所有的紙片按照解法放在一個 9 乘 9 的方格內，使得滿足數獨的題目要求（每列、每行、每個九宮格都正好有 1 到 9）。放好之後他把所有的紙片翻轉，讓沒有字的一面朝上。這樣驗證者沒辦法看到紙片上的數字。接下來，驗證者就驗證數獨的條件是否滿足。比如他選一列，這時證明者就把這一列的紙片收集起來，把順序任意打亂，然後把紙片翻過來，讓驗證者看到 1 到 9 的紙片都出現了。整個過程中驗證者都無法得知每張紙片的位置，但是卻能驗證確實是 1 到 9 都出現了。