NP難問題求解綜述

小草cys發表於2020-09-29

 

摘要:定義NP問題及P類問題,並介紹一些常見的NP問題,以及NP問題的一些求解方法,最後最NP問題求解的發展方向做一些展望。 

關鍵詞:NP難問題 P類問題 演算法 最優化問題

正文:

一.NP難問題及P類問題

為了解釋NP難問題及P類問題,先介紹確定性演算法和非確定性演算法這兩個概念,設A是求解問題Π的一個演算法,如果在演算法的整個執行過程中,每一步只有一個確定的選擇,則稱演算法A是確定性(Determinism)演算法。設A是求解問題Π的一個演算法,如果演算法A以如下猜測並驗證的方式工作,就稱演算法A是非確定性(Nondeterminism)演算法:(1)猜測階段:在這個階段,對問題的輸入例項產生一個任意字串y,在演算法的每一次執行時,串y的值可能不同,因此,猜測以一種非確定的形式工作。(2)驗證階段:在這個階段,用一個確定性演算法驗證:① 檢查在猜測階段產生的串y是否是合適的形式,如果不是,則演算法停下來並得到no;② 如果串y是合適的形式,則驗證它是否是問題的解,如果是,則演算法停下來並得到yes,否則演算法停下來並得到no。

什麼是NP難問題,如果對於某個判定問題Π,存在一個非負整數k,對於輸入規模為n的例項,能夠以O(nk)的時間執行一個非確定性演算法,得到yes或no的答案,則該判定問題Π是一個 NP 類(Nondeterministic Polynomial)問題

令Π是一個判定問題,如果對於NP類問題中的每一個問題Π',都有Π'∝pΠ,則稱判定問題Π是一個NP難問題

什麼是P類問題,如果對於某個判定問題Π,存在一個非負整數k,對於輸入規模為n的例項,能夠以O(nk)的時間執行一個確定性演算法,得到yes或no的答案,則該判定問題Π是一個 P 類(Polynomial)問題。所有易解問題都是P類問題。

P類問題和NP類問題的主要差別:P類問題可以用多項式時間的確定性演算法來進行判定或求解;NP類問題可以用多項式時間的非確定性演算法來進行判定或求解。

 

二.常見的NP類問題

上面介紹了什麼是NP問題,下面我將介紹我查閱到的一些常見的NP問題,他們同時也是著名的NP問題。

①圖著色問題 按圖中所示方式將16條邊著色,那麼不管你從哪裡出發,按照“藍紅紅藍紅紅藍紅紅”的路線走9步,你最後一定達到黃色頂點。路線著色定理就是說在滿足一定條件的有向圖中,這樣的著色方式一定存在。嚴格的數學描述如下。我們首先來定義同步著色。G是一個有限有向圖並且G的每個頂點的出度都是k。G的一個同步著色滿足以下兩個條件:1)G的每個頂點有且只有一條出邊被染成了1到k之間的某種顏色;2)G的每個頂點都對應一種走法,不管你從哪裡出發,按該走法走,最後都結束在該頂點。有向圖G存在同步著

  

色的必要條件是G是強連通而且是非週期的。一個有向圖是非週期的是指該圖中包含的所有環的長度沒有大於1的公約數。路線著色定理這兩個條件(強連通和是非週期)也是充分的。也就是說,有向圖G存在同步著色當且僅當G是強連通而且是非週期的。

②哈密頓迴路問題:天文學家哈密頓(William Rowan Hamilton) 提出,在一個有多個城市的地圖網路中, 尋找一條從給定的起點到給定的終點沿途恰好經過所有其他城市一次的路徑。這個問題和著名的過橋問題的不同之處在於,某些城市之間的旅行不一定是雙向的。比如A→B,但B→A是不允許的。換一種說法,對於一個給定的網路,確定起點和終點後,如果存在一條路徑,穿過這個網路,我們就說這個網路存在哈密頓路徑。哈密頓路徑問題在上世紀七十年代初,終於被證明是“NP完備”的。據說具有這樣性質的問題,難於找到一個有效的演算法。實際上對於某些頂點數不到100的網路,利用現有最好的演算法和計算機也需要很長的時間(可能要幾百年之久)才能確定其是否存在一條這樣的路徑。

③TSP問題:旅行商問題,即TSP問題(Traveling Salesman Problem)是數學領域中著名問題之一。假設有一個旅行商人要拜訪n個城市,他必須選擇所要走的路徑,路經的限制是每個城市只能拜訪一次,而且最後要回到原來出發的城市。路徑的選擇目標是要求得的路徑路程為所有路徑之中的最小值。TSP問題是一個組合優化問題。該問題可以被證明具有NPC計算複雜性。

上面三個即是非常著名的NP問題,也是比較常見的NP問題。它們的求解演算法非常複雜,要尋找到一個最優演算法需要花費很長的時間,但正因為這些問題的複雜性,使得它們備受人們的關注。當然NP問題本身也是世界七大數學難題之一。

 

三.求解NP類問題的常見方法

對於那些棘手的NP問題,我們也並非束手無策,有一些方法可供我們去探究NP問題。

①近似演算法:所有已知的解決NP難問題演算法都有指數型執行時間。但是,如果我們要找一個“好”解而非最優解,有時候多項式演算法是存在的。給定一個最小化問題和一個近似演算法,我們按照如下方法評價演算法:首先給出最優解的一個下界,然後把演算法的執行結果與這個下界進行比較。對於最大化問題,先給出一個上界然後把演算法的執行結果與這個上界比較。近似演算法比較經典的問題包括:最小頂點覆蓋、旅行售貨員問題、集合覆蓋等。

②概率演算法:很多演算法的每一個計算步驟都是固定的,而概率演算法允許演算法在執行的過程中隨機選擇下一個計算步驟。許多情況下,當演算法在執行過程中面臨一個選擇時,隨機性選擇常比最優選擇省時。因此概率演算法可在很大程度上降低演算法的複雜度。概率演算法的一個基本特徵是對所求解問題的同一例項用同一概率演算法求解兩次可能得到完全不同的效果。這兩次求解問題所需的時間甚至所得到的結果可能會有相當大的差別。一般情況下,可將概率演算法大致分為四類:數值概率演算法,蒙特卡羅(Monte Carlo)演算法,拉斯維加斯(Las Vegas)演算法和舍伍德(Sherwood)演算法。

③平行計算:平行計算或稱平行計算是相對於序列計算來說的。所謂平行計算可分為時間上的並行和空間上的並行。 時間上的並行就是指流水線技術,而空間上的並行則是指用多個處理器併發的執行計算。平行計算(Parallel Computing)是指同時使用多種計算資源解決計算問題的過程。為執行平行計算,計算資源應包括一臺配有多處理機(並行處理)的計算機、一個與網路相連的計算機專有編號,或者兩者結合使用。平行計算的主要目的是快速解決大型且複雜的計算問題。此外還包括:利用非本地資源,節約成本 ― 使用多個“廉價”計算資源取代大型計算機,同時克服單個計算機上存在的儲存器限制。包含以下三個特徵:1,將工作分離成離散部分,有助於同時解決;2,隨時並及時地執行多個程式指令;,3,

 

 

多計算資源下解決問題的耗時要少於單個計算資源下的耗時。

④智慧演算法:在工程實踐中,經常會接觸到一些比較“新穎”的演算法或理論,比如模擬退火,遺傳演算法,禁忌搜尋,神經網路等。這些演算法或理論都有一些共同的特性(比如模擬自然過程),通稱為“智慧演算法”。智慧優化演算法要解決的一般是最優化問題。最優化問題可以分為(1)求解一個函式中,使得函式值最小的自變數取值的函式優化問題和(2)在一個解空間裡面,尋找最優解,使目標函式值最小的組合優化問題。典型的組合優化問題有:旅行商問題(Traveling Salesman Problem,TSP),加工排程問題(Scheduling Problem),0-1揹包問題(Knapsack Problem),以及裝箱問題(Bin Packing Problem)等。優化演算法有很多,經典演算法包括:有線性規劃,動態規劃等;改進型區域性搜尋演算法包括爬山法,最速下降法等,本文介紹的模擬退火、遺傳演算法以及禁忌搜尋稱作指導性搜尋法。而神經網路,混沌搜尋則屬於系統動態演化方法。

 

四.NP問題求解未來發展方向

NP問題是世界七大數學難題之一,在名稱上就有別於其它六個問題,也是其中唯一一個不是用人名來命名的數學難題。因為它不是某個數學家火花一閃、靈機一動所提出的理論或是猜測,而是一個非常古老的問題,涉及到了最基礎的數學理論,並且經過了幾百年來無數數學家們持之以恆的努力,直到現在仍然是一個沒有得到解決的公開問題。

NP問題排在世界七大數學難題之首,七個問題都是經過美國克雷數學研究所的科學顧問委員會精心挑選出來的,這些問題的獲解上哪怕是獲得了些許的進展,就將對數學理論的發展和應用產生極其巨大的推動作用。研究這些“千年大獎問題”已經成為世界數學界的熱點,不少國家的數學家正在組織聯合攻關,同時它們也是任何一個數學工作者都夢寐以求予以摘取的數學皇冠上的耀眼明珠。可以預期,這些“千年大獎問題”將會改變新世紀數學發展的歷史程式。因此NP問題的求解將會不斷地被注視著,當然如果有一天它被人求解出來,那麼我們身邊的許多問題將會被解決。

 

參考文獻:

[1] 黃文奇 許如初. 《近世計算理論導引:NP難度問題的背景、前景及其求解演算法研究》. 科學出版社 2004.  87

[2] 陳志平 徐宗本. 《計算機數學:計算複雜性理論與NPC、NP難問題的求解》 科學出版社.  2001.  292

相關文章