Richard Karp發明了縮寫記號P,用來表示有好算法的判定問題。P類的正式定義是指,能在多項式時間內由一台單帶圖靈機解決的問題,換言之,如果輸入帶上的符號數目為n,那么必定存在指數k和常數C,保證圖靈機經過至多Cnk步以后必然停機。當然,這種定義相當好,單帶圖靈機可以替換為多帶圖靈機,甚至換成功能強大的現代數字計算機,也不會影響問題的分類。誠然,用圖靈機模擬先進計算機會拖慢計算機速度,但是速度放慢的系數關於n仍然只是多項式關系。所以,我們如果有先進計算機上的多項式時間算法,就同樣擁有單帶圖靈機上的多項式時間算法。——《迷茫的旅行商:一個無處不在的計算機算法問題》
圖靈機(TM)與線性界限自動機(LBA)
一般圖靈機,假定帶右邊無限長,內存無限制。
線性界限自動機,假定帶右邊有限制,內存有限制。實際的計算機都是內存有限的,都是LBA。
————————————————————————————————————————
為了算法復雜性分析具有普適性,即一個算法的性能與具體的計算機無關,我們需要選定一種可用於描述計算的計算機模型。
圖靈機
圖靈機本質上是一個具有存儲載體(通常用一個有無限多個方格線性帶表示)的、按照具體指令可完成向左或右移動、放置標記、抹去標記以及在計算終止時停機等四種基本操作的、用於描述算法的語言。
圖靈機在原理上,與我們用於和計算機交流的更為復雜的各種程序語言同樣有力。
首先選擇確定性單帶圖靈機(deterministic one-tape Turing machine),簡稱確定圖靈機,記為DTM。一個DTM由一個有限狀態控制器、一個讀寫頭和一條雙向的具有無限多個格的線性帶所組成。
單帶確定性圖靈機示意圖
一個DTM程序應詳細規定以下信息:
非確定性單帶圖靈機(non-deterministic one-tape Turing machine),簡記為NDTM,是一種假想的機器。通常有兩種方式描述它:多值模型和猜想模塊模型。
多值模型認為它和確定性圖靈機的共同之處是也包括:
不同之處在於
確定性圖靈機在任一狀態下只能做一種運算,而非確定性圖靈機可以被想象為在同一時刻能夠獨立、並行地完成多種運算(表現在轉移函數的多值性),這顯然不現實。
通過允許作不受限制的並行運算可以對不確定性算法做出明確的解釋。每當要作某種選擇時,算法就好像給自己復制了若干副本,每種可能的選擇有一個副本,於是,許多副本同時被執行。第一個獲得成功的副本將引起對其它副本計算的結束。如果一個副本獲得不成功的完成則只改副本終止。
非確定性算法與確定性算法比較
“猜想模塊模型”是另一種更形象、直觀的解釋方法。可將NDTM描述成:除多了一個猜想模塊外,NDTM與DTM有着完全相同的結構,而這個猜想模塊帶有自己的僅可對帶進行寫操作的猜想頭,它提供寫下猜想的方法,僅此而已。
NDTM猜想模塊模型示意圖
因為任何現有的計算模型都可以通過加上一個類似於NDTM中的帶有只寫頭的猜想模塊來擴充,然后相對於所得的模型重新描述上述的正式定義,而且所有如此得到的計算模型在多項式時間內可相互轉換的意義下將是等價的。因此,也沒有必要特別提及NDTM模型,我們將簡單地說“多項式時間不確定性算法”,並將NP類語言與所有可用多項式時間不確定性算法求解的判斷問題等同看待。
證明NP=P?
1.證明NP類中的某些問題是難解的,從而得到P≠NP。但是這同原問題的難度幾乎相當,也許只有建立一套全新的數學論證方法才有希望解決。
2.考慮NP類中問題之間的關系,從中找到一些具有特定性質的、與P中問題有顯著不同的問題。沿此路線人們已經證明了在NP類中存在一個稱為NP-完全的子類,並由此發展出一套著名的NP-完全理論。而證明一個問題是NP-完全的通常被認為一個告訴我們應該放棄尋找、設計求解該問題的有效算法(多項式時間算法)的強有力證明。
確定型圖靈機與非確定型圖靈機
確定型圖靈機
非確定型圖靈機
單帶圖靈機與多帶圖靈機
1936年,圖靈描述了一個計算機模型,后稱圖靈機。他並不是想將其設計成一項實際的計算技術,而是要用表示思維實驗中的計算機器。圖靈機主要是幫助計算機科學家研究機器計算的能力。
一個多帶確定型圖靈機(DTM)有k條帶,每一條都有一個起始單元,而它的右側有無限多個單元。它還有一個有限字符集合,每一個單元可存儲其中的一個字符。每一條帶都有一個讀寫頭,它可對帶上的單元進行逐一掃描,並讀出單元所存儲的字符或者將一個字符存儲到該單元中。圖靈機是由一個有限控制所操作,每一個控制都是處於有限狀態中的某個狀態。
圖靈機接受輸入的字符串當且僅當它在系列操作以后達到最終狀態sf。否則圖靈機在某一步不進行任何操作;它會處於某個非接受狀態。
舉例
一個簡單的2-帶圖靈機,可以確定字符集{0,1}上的一個字符串是回文。
這個例子表明,我們可以將一個圖靈機視為一個儀器,用它可以確認輸入的字符串是否有某種特定的性質。
時間復雜度
一個圖靈機M的時間復雜度T(n)等於它計算輸入規模為n的所有實例中,所需要進行的操作的最多次數。如果對於輸入規模為n的某些實例,圖靈機不能終止操作,則稱時間復雜度T(n)沒有定義。
空間復雜度
一個圖靈機M的空間復雜度S(n)等於它計算輸入規模為n的所有實例中,從每個帶的最左端到最右端移動的最長距離值。如果圖靈機在某一個帶上,向右無窮遠地移動,那么稱空間復雜度S(n)沒有定義。
多帶圖靈機與單帶圖靈機
定理1:若判定問題P0可被一個時間復雜度為T(n)的k-帶圖靈機M接受,則它可被一個時間復雜度為O(T2(n))的單帶圖靈機M1接受。
證明思路:設計一個時間復雜度為O(T2(n))的單帶圖靈機M1,用它來模擬時間復雜度為T(n)的k-帶圖靈機M。主要思想是:將M1的一個帶想象成由2k個“軌道”構成,換言之,M1的一個字符是一個2K元組。
定理2:若判斷問題P0可被一個空間復雜度為S(n)的k-帶圖靈機M接受,則它可被一個具有同樣空間復雜度的單帶圖靈機M1接受。
圖靈-丘奇假設
每一個可計算的量都可用某個圖靈機來計算。
非確定圖靈機
計算復雜性理論的一個核心概念是非確定型圖靈機,Non-Deterministic Turing Machine(NDTM)。
確定型圖靈機與非確定型圖靈機之間最重要的區別在於:在要執行每一次(運算)操作時,后者有有限多個(移動)方式可以選擇,究竟選擇哪一個是不確定的;而前者僅有一個可以選擇,亦即(移動)方式是完全確定的。
給定一個實例輸入I,我們可以將非確定型圖靈機M的運算方式看作如下過程:並行地執行所有可能的(運算)操作,直到達到接受狀態或者無法再進行操作。
定理3:設一個非確定型圖靈機M在時間T(n)內可以接受判定問題P0,且T(n)是一個時間可構造的復雜性函數。則存在一個確定型圖靈機M',它可在時間O(cT(n))內接受P0,其中c是一個常數。
由定理3看出,確定型圖靈機與非確定型圖靈機之間的關系,它們可以模擬彼此的(運算)操作。然而,當后者模擬前者時,不需要增加運行的時間和空間。但是,當前者模擬后者時,時間復雜度應會增加很多,增加的時間復雜度有一個指數階的上界。算法復雜性分界函數——多項式
參考文獻:https://wenku.baidu.com/view/9bc6ee11dd36a32d737581ac.html?rec_flag=default&sxts=1540388582726&pn=1