NP-Hard问题及组合最优化问题
?
1.P類問題和NP類問題
在講NP-Hard問題問題之前,先講P類問題和NP類問題
P類問題:可以找到一個多項式時間復(fù)雜度的算法去解決的問題;
NP類問題:可以在多項式時間復(fù)雜度的算法去驗(yàn)證結(jié)果正確性的問題;比如隨便拿一個結(jié)果,可在多項式時間內(nèi)驗(yàn)證該結(jié)果是否正確,但是想要求解該結(jié)果的時間復(fù)雜度就不知道了。P類問題一定是NP類問題,但是NP類問題不一定能找到多項式時間復(fù)雜度的算法來解決(要是找到了就是P問題了)。所以人們關(guān)心的是:是否所有的NP問題都是P問題,即是否有 P=NP(信息學(xué)的巔峰問題)
目前為止這個問題還“啃不動”。但是,一個總的趨勢是人們普遍認(rèn)為,P=NP不成立,也就是說,多數(shù)人相信,存在至少一個不可能有多項式級復(fù)雜度的算法的NP問題。人們?nèi)绱藞孕臥≠NP是有原因的,就是在研究NP問題的過程中找出了一類非常特殊的NP問題叫做NP-完全問題,也即所謂的 NPC問題。
2.NP-完全問題(NPC問題)
一個問題約化為另一個問題,時間復(fù)雜度增加了,問題的應(yīng)用范圍也增大了。通過對某些問題的不斷約化,我們能夠不斷尋找復(fù)雜度更高,但應(yīng)用范圍更廣的算法來代替復(fù)雜度雖然低,但只能用于很小的一類問題的算法。
如果從某一個NP問題開始不斷向上約化,不斷找到能“通吃”若干小NP問題的一個稍復(fù)雜的大NP問題,那么最后是否有可能找到一個時間復(fù)雜度最高,并且能“通吃”所有的 NP問題的這樣一個超級NP問題?
NPC問題:存在這樣一個NP問題,所有的NP問題都可以約化成它。這種問題不只一個,它有很多個,它是一類問題。這一類問題就是NPC 問題。
NPC問題的定義:同時滿足下面兩個條件的問題就是NPC問題:首先,它得是一個NP問題;然后,所有的NP問題都可以約化到它。
NPC問題的證明:先證明它至少是一個NP問題,再證明其中一個已知的NPC問題能約化到它(由約化的傳遞性,則NPC問題定義的第二條也得以滿足)
補(bǔ)充約化的概念
問題A可以約化為問題B:可以采用解決問題B的方法解決問題A;或者說,問題A可以轉(zhuǎn)化為問題B。(如:一元二次方程的解法可以用來解一元一次方程,只要令二次項系數(shù)a=0即可)
問題A可以約化為問題B 的直觀意義:B的時間復(fù)雜度高于或者等于A的時間復(fù)雜度。也就是說,問題A不比問題B難。
約化具有傳遞性:如果問題A可約化為問題B,問題B可約化為問題C,則問題A一定可約化為問題C。
約化的標(biāo)準(zhǔn)概念:如果能找到這樣一個變化法則(要求該變化法則為至多多項式時間復(fù)雜度),對任意一個程序A的輸入,都能按這個法則變換成程序B的輸入,使兩程序的輸出相同,那么我們說,問題A可約化為問題B。
3.NP-hard問題
NP-hard問題滿足NPC問題定義的第二條而不滿足第一條。NP-hard問題的范圍比NP問題要廣。
NP-hard問題同樣難以找到多項式時間復(fù)雜度的算法,但它也不一定是NP問題(只是所有的NP問題都可以約化到它)。
NP-hard問題:指問題S,滿足任何NP問題都可以在多項式級時間復(fù)雜度內(nèi)被歸約為S(歸約:即被歸約的NP問題與S的答案相同,當(dāng)解決了S時,就同時解決了所有的NP問題)。可以理解為,這是一個比所有NP問題都難的問題。
其實(shí),NP-hard問題是世界七大數(shù)學(xué)難題之首
2000年,美國克萊數(shù)學(xué)研究所公布了世界七大數(shù)學(xué)難題,又稱千禧年大獎難題。其中P與NP問題被列為這七大世界難題之首,從而大大激發(fā)了對這一問題的研究熱情。
普林斯頓大學(xué)計算機(jī)系樓將二進(jìn)制代碼表述的“P=NP?”問題刻進(jìn)頂樓西面的磚頭上。如果證明了P=NP,磚頭可以很方便的換成表示“P=NP!”。
康奈爾大學(xué)的Hubert Chen博士提供了這個玩笑式的P不等于NP的證明:
反證法。設(shè)P = NP。令y為一個P = NP的證明。證明y可以用一個合格的計算機(jī)科學(xué)家在多項式時間內(nèi)驗(yàn)證,我們認(rèn)定這樣的科學(xué)家的存在性為真。但是,因?yàn)镻 = NP,該證明y可以在多項式時間內(nèi)由這樣的科學(xué)家發(fā)現(xiàn)。但是這樣的發(fā)現(xiàn)還沒有發(fā)生(雖然這樣的科學(xué)家試圖發(fā)現(xiàn)這樣的一個證明),我們得到了矛盾。(上面內(nèi)容來自wiki百科)
典型的NP-hard問題:TSP
售貨員旅行問題 (traveling salesman problem),是最具有代表性的NP問題之一。假設(shè)一個推銷員需要從香港出發(fā),經(jīng)過廣州,北京,上海,…,等 n 個城市, 最后返回香港。 任意兩個城市之間都有飛機(jī)直達(dá),但票價不等。現(xiàn)在假設(shè)公司只給報銷 C 塊錢,問是否存在一個行程安排,使得他能遍歷所有城市,而且總的路費(fèi)小于 C?
推銷員旅行問題顯然是 NP 的。因?yàn)槿绻闳我饨o出一個行程安排,可以很容易算出旅行總開銷。但是,要想知道一條總路費(fèi)小于 C 的行程是否存在,在最壞情況下,必須檢查所有可能的旅行安排! 這將是個天文數(shù)字。
這個天文數(shù)字到底有多大?目前的方法接近一個一個的排著試,還沒有找到更好可以尋得最短路徑的方法。對七個城而言,共有 6!=720 個排法,還比較簡單;,但若有 20 個城,則排法就有 19! 種。因故在排列組合里 n! 寫起來輕松。但 1.21?10171.21?1017 是一個大得不得了的數(shù)字。若每秒鐘排一次,要排 3.84?1093.84?109 年(一年約為 3.15?1073.15?107 秒),即使使用計算器,每秒排一百萬次(不容易做到)也得重做三千年才能找到答案。「生也有涯,知也無涯」,想不到區(qū)區(qū)二十個城,要三十個世紀(jì)才能找到答案。
?
4.組合最優(yōu)化問題
組合最優(yōu)化問題(combinatorial optimizationproblem)是一類在離散狀態(tài)下求極值的問題。把某種離散對象按某個確定的約束條件進(jìn)行安排,當(dāng)已知合乎這種約束條件的特定安排存在時,尋求這種特定安排在某個優(yōu)化準(zhǔn)則下的極大解或極小解的間題。
組合最優(yōu)化的理論基礎(chǔ)含線性規(guī)劃、非線性規(guī)劃、整數(shù)規(guī)劃、動態(tài)規(guī)劃、擬陣論和網(wǎng)絡(luò)分析等。組合最優(yōu)化技術(shù)提供了一個快速尋求極大解或極小解的方法。
多數(shù)問題屬于所謂的NP完全問題,即對該問題基本上不存在一種算法,使得當(dāng)所有的具體問題的變量和約束條件的數(shù)目兩者之和甚大時,可以在容許時間(即所謂的多項式時間)之內(nèi)給出所要的解。
由于這類問題在生產(chǎn)實(shí)際中經(jīng)常出現(xiàn),不能予以忽視,于是出現(xiàn)了兩類解決問題的途徑:一類是所謂的直觀算法,另一類是近似算法。隨著組合最優(yōu)化研究的進(jìn)展,一些數(shù)學(xué)分支,如組合數(shù)學(xué)、擬陣和廣義擬陣以及圖論等,也相應(yīng)地得到新的發(fā)展。
?
總結(jié)
以上是生活随笔為你收集整理的NP-Hard问题及组合最优化问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一套图 搞懂“时间复杂度”(转载)
- 下一篇: win10下,cmd可以运行java,却