isomorphic graphs 圖同構

趣題:怎樣向別人證明兩個圖不同構?

若干個頂點(vertex)以及某些頂點對之間的邊(edge)就構成了一個圖(graph)。如果圖 G 和圖 H 的頂點數相同,並且它們的頂點之間存在着某種對應關係,使得圖 G 中的兩個頂點之間有邊,當且僅當圖 H 中的兩個對應頂點之間有邊,我們就說圖 G 和圖 H 是同構的(isomorphism)。直觀地說,兩個圖是同構的,意思就是它們本質上是同一個圖,雖然具體的畫法可能不一樣。下面的兩個圖就是同構的。其中一種頂點對應關係是: 1 – a, 2 – c, 3 – d, 4 – b, 5 – e, 6 – g, 7 – h, 8 – f 。

目前,人們還沒有找到任何高效的算法,能迅速判斷出兩個圖是否同構。在普通計算機上,判斷兩個圖是否同構,這需要花費大量的時間。因此,人們經常以圖的同構爲例,來解釋複雜度理論和現代密碼學中的諸多概念。

假設你家裏的計算機十分強大,能很快判斷出兩個圖是否同構,還能在兩個圖確實同構的情況下,給出一種頂點對應關係。但你的同桌家裏的計算機卻非常弱,沒法做什麼大型運算。課堂上,老師向全班展示了兩個很複雜的圖,不妨把它們叫作圖 G 和圖 H 。老師佈置了一個特別的選做題:判斷出這兩個圖是否同構。每個同學都可以提交答案,答案裏只需要寫“是”或者“不是”即可。按時提交答案並答對者,期末考試會獲得 5 分加分;按時提交答案但答錯了的,期末考試成績將會倒扣 30 分;不參與此活動的同學,期末考試既不加分也不扣分。顯然,每個同學都不敢隨意提交答案,除非百分之百地能保證自己獲得的答案是正確的。回到家後,藉助家裏的超級計算機,你很快判斷出了這兩個圖是同構的。你給你的同桌發送了信息:“我已經算出來了,這兩個圖是同構的。”但是,你的同桌卻回覆說:“你不會是騙我的吧?”你打算怎樣說服他,這兩個圖確實是同構的呢?

你只需要把兩個圖的頂點對應關係發送給他即可。他家裏的計算機非常弱,沒法找出滿足要求的頂點對應關係。但若有了一個頂點對應關係,驗證其確實滿足要求,這是非常容易的,幾乎不需要什麼計算量——只需要枚舉圖 G 裏的頂點對,看看它們之間有邊是否當且僅當圖 H 中的對應頂點之間有邊即可。完成驗證之後,他就知道了,這兩個圖確實是同構的。

總結起來,剛纔我們面對的是這樣的困境:

  • 你擁有無限的計算能力。
  • 對方的計算能力非常有限。
  • 你想要向對方證明,圖 G 和圖 H 確實是同構的。

判斷兩個圖是否同構可能很難,但若給出一段證據後,很容易驗證兩個圖確實同構,上述困境也就得以解決了。這就是複雜度理論中 NP 問題的大致意思。

但是,如果把兩個圖同構的證據直接交給你的同桌,你的同桌或許又會用同樣的辦法去幫助別人,最後搞得班上所有人都獲得了加分,這就沒意思了。有沒有辦法說服你的同桌,這兩個圖確實是同構的,但卻又讓他無法拿到這兩個圖同構的證據呢?也就是說,現在我們面對的是這樣的困境:

  • 你擁有無限的計算能力。
  • 對方的計算能力非常有限。
  • 你想要向對方證明,圖 G 和圖 H 確實是同構的。
  • 你不想泄露這兩個圖的頂點之間的對應關係。

這看上去似乎是不可能實現的——不把頂點之間的對應關係告訴對方,怎樣說服對方兩個圖確實是同構的呢?然而,這竟然是能做到的。整個過程分爲很多輪進行。在每一輪裏,你隨機生成一個與圖 G 同構的圖 G′ 。如果圖 G 和圖 H 真的同構,那顯然圖 G′ 也與圖 H 同構。然後,你把圖 G′ 發送給對方。對方可以隨機提出下面兩個要求之一:提供 G′ 與 G 同構的證據,或者提供 G′ 與 H 同構的證據。不管對方提出的是哪個要求,你都可以放心大膽地把證據發給對方,這不會泄露圖 G 和圖 H 之間的對應關係。另外,如果圖 G 和圖 H 不是同構的,那麼這兩個要求你不可能都做得到;面對對方的抽查,總能如約作答的概率是很低很低的。很多輪過去後,對方便慢慢確信,圖 G 和圖 H 真的是同構的了。在現代密碼學中,讓對方相信命題的正確性,但又不泄露任何其他的信息,這就叫作“零知識證明”(zero-knowledge proof)。

現在,讓我們再來看一種情境。去掉上述第四點要求,但把第三點要求改一下:

  • 你擁有無限的計算能力。
  • 對方的計算能力非常有限。
  • 你想要向對方證明,圖 G 和圖 H 確實是同構的。

你打算怎麼辦?注意,你的辦法應該普遍適用於一切情況。在某些特定的情況下,你當然可以告訴對方,“這兩個圖顯然不同構,因爲它們的邊數就不一樣多”,但這不適用於兩個圖的邊數一樣多的情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章