原文地址:http://bristolcrypto.blogspot.com/2014/11/52-things-number-5-what-is-meant-by.htmlhtml
這是52個密碼學知識點的第五篇。咱們繼續關於NP的複雜性理論部分。算法
上週,Ryan給咱們介紹了P類複雜問題的定義:安全
這周咱們介紹另外一個複雜類:oracle
NDTM就是一種轉換函數有多個返回值的圖靈機。(實際上這不是一個轉換函數,咱們能夠叫它一個轉換關係)所以NDTM對輸入看起來就像一顆樹。在每一個分支節點上都提供了多個可能的值(子節點).NDTM接收這個輸入當且僅當樹中至少有一個分支的輸入處於接收狀態。這個定義從語言關係到決策到計算問題的方法和上週定義P的時候同樣。函數
咱們以一個簡單的例子開始:路徑查找。給一個有向圖(n個節點) 是否有從點A到點B的路徑。咱們怎麼在NP類中獲得答案?好的,存在一個NDTM能解決它,十分簡單,只要嘗試全部的路線,只要有一個分支那麼就有一個交叉點,若是一個分支到達了B那麼該分支將終止於accept狀態。任意一條分支在遍歷n步以後自動結束並處於拒絕狀態。(由於任何路徑最多包含n-1條邊,因此將檢測到任何有效的路徑,所以這臺機器將正確的決定是否存在這樣的一個路徑)。spa
一個NP問題的重要的例子就是可知足行問題:htm
例如,在表達式\((A\lor B )\land(A \lor \neg B)\)是可知足的。由於有一個合法的賦值\(A=B=True\)。注意:在標準形式中,這是個決定性問題,即咱們只須要知道存不存在,不須要找到。blog
首先,咱們知道\(P \subseteq NP\) 由於DTM是一種NDTM(顯而易見)。所以實際上咱們的問題就是咱們能不能找到一件咱們能用NP作的問題可是咱們沒辦法用P完成?這就是\(P=NP\)問題,這是一個開放問題。固然咱們也發現了NP中已知可是P中未知的問題,也許在將來的研究中這些問題能被P解決。ip
不少有趣的密碼系統(特別是在公鑰中)都是基於計算問題是"困難"的假設而是安全的,這意味着至少與NP中的任何問題同樣困難。也就是說,不少方案都是基於咱們認爲難的問題,若是你能建立一個算法來解決這些問題,你也能夠用這個算法解決其餘當前認爲是難的問題。get
Cook-Levin定理提供了一個有趣的證實思路。沒有NP問題是比SAT難的(已經有證實了SAT是最難的NP問題(,即NP徹底問題)。這就是說若是咱們有一個oracle(就是一個問詢,一個有輸入輸出的算法)能解決SAT問題,經過問這個oracle幾個被構造的問題,也能夠解決任何其它NP問題。這讓SAT成爲了第一個NP徹底問題的例子。所以爲了證實問題X至少和解決NP問題同樣難(NP難問題),若是咱們能解決X問題,那麼咱們就能解決SAT問題。