NP-Hard問題及組合最優化問題

 

1.P類問題和NP類問題

在講NP-Hard問題問題之前,先講P類問題和NP類問題
P類問題:可以找到一個多項式時間複雜度的算法去解決的問題;
NP類問題:可以在多項式時間複雜度的算法去驗證結果正確性的問題;比如隨便拿一個結果,可在多項式時間內驗證該結果是否正確,但是想要求解該結果的時間複雜度就不知道了。P類問題一定是NP類問題,但是NP類問題不一定能找到多項式時間複雜度的算法來解決(要是找到了就是P問題了)。所以人們關心的是:是否所有的NP問題都是P問題,即是否有 P=NP(信息學的巔峯問題)
目前爲止這個問題還“啃不動”。但是,一個總的趨勢是人們普遍認爲,P=NP不成立,也就是說,多數人相信,存在至少一個不可能有多項式級複雜度的算法的NP問題。人們如此堅信P≠NP是有原因的,就是在研究NP問題的過程中找出了一類非常特殊的NP問題叫做NP-完全問題,也即所謂的 NPC問題。

2.NP-完全問題(NPC問題)

一個問題約化爲另一個問題,時間複雜度增加了,問題的應用範圍也增大了。通過對某些問題的不斷約化,我們能夠不斷尋找複雜度更高,但應用範圍更廣的算法來代替複雜度雖然低,但只能用於很小的一類問題的算法。

如果從某一個NP問題開始不斷向上約化,不斷找到能“通喫”若干小NP問題的一個稍複雜的大NP問題,那麼最後是否有可能找到一個時間複雜度最高,並且能“通喫”所有的 NP問題的這樣一個超級NP問題?

NPC問題:存在這樣一個NP問題,所有的NP問題都可以約化成它。這種問題不只一個,它有很多個,它是一類問題。這一類問題就是NPC 問題。

NPC問題的定義:同時滿足下面兩個條件的問題就是NPC問題:首先,它得是一個NP問題;然後,所有的NP問題都可以約化到它。

NPC問題的證明:先證明它至少是一個NP問題,再證明其中一個已知的NPC問題能約化到它(由約化的傳遞性,則NPC問題定義的第二條也得以滿足)

補充約化的概念
問題A可以約化爲問題B:可以採用解決問題B的方法解決問題A;或者說,問題A可以轉化爲問題B。(如:一元二次方程的解法可以用來解一元一次方程,只要令二次項係數a=0即可)
問題A可以約化爲問題B 的直觀意義:B的時間複雜度高於或者等於A的時間複雜度。也就是說,問題A不比問題B難。
約化具有傳遞性:如果問題A可約化爲問題B,問題B可約化爲問題C,則問題A一定可約化爲問題C。
約化的標準概念:如果能找到這樣一個變化法則(要求該變化法則爲至多多項式時間複雜度),對任意一個程序A的輸入,都能按這個法則變換成程序B的輸入,使兩程序的輸出相同,那麼我們說,問題A可約化爲問題B。

3.NP-hard問題

NP-hard問題滿足NPC問題定義的第二條而不滿足第一條。NP-hard問題的範圍比NP問題要廣。

NP-hard問題同樣難以找到多項式時間複雜度的算法,但它也不一定是NP問題(只是所有的NP問題都可以約化到它)。

NP-hard問題:指問題S,滿足任何NP問題都可以在多項式級時間複雜度內被歸約爲S(歸約:即被歸約的NP問題與S的答案相同,當解決了S時,就同時解決了所有的NP問題)。可以理解爲,這是一個比所有NP問題都難的問題。

其實,NP-hard問題是世界七大數學難題之首

2000年,美國克萊數學研究所公佈了世界七大數學難題,又稱千禧年大獎難題。其中P與NP問題被列爲這七大世界難題之首,從而大大激發了對這一問題的研究熱情。

普林斯頓大學計算機系樓將二進制代碼表述的“P=NP?”問題刻進頂樓西面的磚頭上。如果證明了P=NP,磚頭可以很方便的換成表示“P=NP!”。
康奈爾大學的Hubert Chen博士提供了這個玩笑式的P不等於NP的證明:
反證法。設P = NP。令y爲一個P = NP的證明。證明y可以用一個合格的計算機科學家在多項式時間內驗證,我們認定這樣的科學家的存在性爲真。但是,因爲P = NP,該證明y可以在多項式時間內由這樣的科學家發現。但是這樣的發現還沒有發生(雖然這樣的科學家試圖發現這樣的一個證明),我們得到了矛盾。(上面內容來自wiki百科)

典型的NP-hard問題:TSP

售貨員旅行問題 (traveling salesman problem),是最具有代表性的NP問題之一。假設一個推銷員需要從香港出發,經過廣州,北京,上海,…,等 n 個城市, 最後返回香港。 任意兩個城市之間都有飛機直達,但票價不等。現在假設公司只給報銷 C 塊錢,問是否存在一個行程安排,使得他能遍歷所有城市,而且總的路費小於 C?
推銷員旅行問題顯然是 NP 的。因爲如果你任意給出一個行程安排,可以很容易算出旅行總開銷。但是,要想知道一條總路費小於 C 的行程是否存在,在最壞情況下,必須檢查所有可能的旅行安排! 這將是個天文數字。
這個天文數字到底有多大?目前的方法接近一個一個的排着試,還沒有找到更好可以尋得最短路徑的方法。對七個城而言,共有 6!=720 個排法,還比較簡單;,但若有 20 個城,則排法就有 19! 種。因故在排列組合裏 n! 寫起來輕鬆。但 1.21∗10171.21∗1017 是一個大得不得了的數字。若每秒鐘排一次,要排 3.84∗1093.84∗109 年(一年約爲 3.15∗1073.15∗107 秒),即使使用計算器,每秒排一百萬次(不容易做到)也得重做三千年才能找到答案。「生也有涯,知也無涯」,想不到區區二十個城,要三十個世紀才能找到答案。
 

4.組合最優化問題

組合最優化問題(combinatorial optimizationproblem)是一類在離散狀態下求極值的問題。把某種離散對象按某個確定的約束條件進行安排,當已知合乎這種約束條件的特定安排存在時,尋求這種特定安排在某個優化準則下的極大解或極小解的間題。

組合最優化的理論基礎含線性規劃、非線性規劃、整數規劃、動態規劃、擬陣論和網絡分析等。組合最優化技術提供了一個快速尋求極大解或極小解的方法。

多數問題屬於所謂的NP完全問題,即對該問題基本上不存在一種算法,使得當所有的具體問題的變量和約束條件的數目兩者之和甚大時,可以在容許時間(即所謂的多項式時間)之內給出所要的解。

由於這類問題在生產實際中經常出現,不能予以忽視,於是出現了兩類解決問題的途徑:一類是所謂的直觀算法,另一類是近似算法。隨着組合最優化研究的進展,一些數學分支,如組合數學、擬陣和廣義擬陣以及圖論等,也相應地得到新的發展。
 

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