當(dāng)前位置:
首頁(yè) >
NP完全性问题
發(fā)布時(shí)間:2025/6/15
49
豆豆
在學(xué)習(xí)算法設(shè)計(jì)與分析時(shí),經(jīng)常會(huì)提到NP完全性問(wèn)題,到底什么是NP完全性問(wèn)題? ...
??? NP完全性問(wèn)題屬于"計(jì)算復(fù)雜性"研究的課題。 所謂計(jì)算復(fù)雜性,通俗說(shuō)來(lái),就是用計(jì)算機(jī)求解問(wèn)題的難易程度。其度量標(biāo)準(zhǔn)有兩個(gè):一是計(jì)算所需步數(shù)或者指令數(shù)(時(shí)間復(fù)雜度);二是計(jì)算所需的存儲(chǔ)單元數(shù)(空間復(fù)雜度)。它不是對(duì)一個(gè)具體問(wèn)題去研究它的計(jì)算復(fù)雜性,而是依據(jù)難度去研究各種計(jì)算問(wèn)題之間的聯(lián)系,按復(fù)雜性把問(wèn)題分成不同的類,即復(fù)雜性類。
??? 再?gòu)?qiáng)調(diào)一下,問(wèn)題的復(fù)雜性和算法的復(fù)雜性的區(qū)別是:只就時(shí)間復(fù)雜性來(lái)說(shuō),算法的復(fù)雜性是指解決一個(gè)問(wèn)題的算法執(zhí)行的時(shí)間,這是算法的性質(zhì);問(wèn)題的復(fù)雜性是指這個(gè)問(wèn)題本身的復(fù)雜程度。計(jì)算復(fù)雜性要研究的是后者。
??? 如果一個(gè)判定性問(wèn)題的復(fù)雜度是該問(wèn)題的一個(gè)實(shí)例的規(guī)模n的多項(xiàng)式函數(shù),則稱這種可以在多項(xiàng)式時(shí)間內(nèi)解決的判定性問(wèn)題屬于p類問(wèn)題。p類問(wèn)題就是所有復(fù)雜度為多項(xiàng)式時(shí)間的問(wèn)題的集合。
?? 然而有些問(wèn)題很難找到多項(xiàng)式時(shí)間的算法(或許根本不存在),比如"找出無(wú)向圖中哈密爾頓回路"問(wèn)題。但是我們發(fā)現(xiàn)如果給了我們?cè)搯?wèn)題的一個(gè)答案,就可以在多項(xiàng)式時(shí)間內(nèi)判斷這個(gè)答案是否正確。給出一個(gè)任意的回路,我們很容易判斷它是否是哈密爾頓回路(只要看是不是所有的頂點(diǎn)都在回路中就可以了)。這種可以在多項(xiàng)式時(shí)間內(nèi)驗(yàn)證一個(gè)解是否正確的問(wèn)題成為NP問(wèn)題,又稱易驗(yàn)證問(wèn)題類。
??? 簡(jiǎn)單地說(shuō),存在多項(xiàng)式時(shí)間的算法的一類問(wèn)題稱為P類問(wèn)題;而像梵塔問(wèn)題、推銷員旅行問(wèn)題等,至今沒(méi)有找到多項(xiàng)式時(shí)間算法解的一類問(wèn)題,稱為NP類問(wèn)題。
??? 復(fù)雜性理論中最具理論意義的當(dāng)數(shù)NP完全性問(wèn)題(NPC問(wèn)題),即由于"P=NP是否成立"這個(gè)問(wèn)題難以解決,從NP類的問(wèn)題中分出復(fù)雜性最高的一個(gè)子類,把它叫做NP完全類。已經(jīng)證明,任取NP類中的一個(gè)問(wèn)題,再任取NP完全類中的一個(gè)問(wèn)題,則一定存在一個(gè)具有多項(xiàng)式
時(shí)間復(fù)雜性的算法,可以把前者轉(zhuǎn)變成后者。這就表明,只要能證明NP完全類中有一個(gè)問(wèn)題是屬于P類的,也就證明了NP類中的所有問(wèn)題都是P類的,即證明了P=NP。
??? 目前已知的NP完全性問(wèn)題就有2000多個(gè),在圖上定義的許多組合優(yōu)化問(wèn)題是NP完全性問(wèn)題,如貨郎問(wèn)題、調(diào)度問(wèn)題、最大團(tuán)問(wèn)題、最大獨(dú)立集合問(wèn)題、Steiner樹問(wèn)題、背包問(wèn)題、裝箱問(wèn)題等,遇到這類問(wèn)題時(shí),通常從以下幾個(gè)方面來(lái)考慮,并尋求解決辦法:
??? (1) 動(dòng)態(tài)規(guī)劃法:較高的解題效率。
??? (2) 分枝限界法: 較高的解題效率。
??? (3) 概率分析法: 平均性能很好。
??? (4) 近似算法: 近似解代替最優(yōu)解。
??? (5) 啟發(fā)式算法:根據(jù)具體問(wèn)題的啟發(fā)式搜索策略在求解,在實(shí)際使用可能很有效,但有時(shí)很難說(shuō)清它的道理。
??? NP完全性問(wèn)題屬于"計(jì)算復(fù)雜性"研究的課題。 所謂計(jì)算復(fù)雜性,通俗說(shuō)來(lái),就是用計(jì)算機(jī)求解問(wèn)題的難易程度。其度量標(biāo)準(zhǔn)有兩個(gè):一是計(jì)算所需步數(shù)或者指令數(shù)(時(shí)間復(fù)雜度);二是計(jì)算所需的存儲(chǔ)單元數(shù)(空間復(fù)雜度)。它不是對(duì)一個(gè)具體問(wèn)題去研究它的計(jì)算復(fù)雜性,而是依據(jù)難度去研究各種計(jì)算問(wèn)題之間的聯(lián)系,按復(fù)雜性把問(wèn)題分成不同的類,即復(fù)雜性類。
??? 再?gòu)?qiáng)調(diào)一下,問(wèn)題的復(fù)雜性和算法的復(fù)雜性的區(qū)別是:只就時(shí)間復(fù)雜性來(lái)說(shuō),算法的復(fù)雜性是指解決一個(gè)問(wèn)題的算法執(zhí)行的時(shí)間,這是算法的性質(zhì);問(wèn)題的復(fù)雜性是指這個(gè)問(wèn)題本身的復(fù)雜程度。計(jì)算復(fù)雜性要研究的是后者。
??? 如果一個(gè)判定性問(wèn)題的復(fù)雜度是該問(wèn)題的一個(gè)實(shí)例的規(guī)模n的多項(xiàng)式函數(shù),則稱這種可以在多項(xiàng)式時(shí)間內(nèi)解決的判定性問(wèn)題屬于p類問(wèn)題。p類問(wèn)題就是所有復(fù)雜度為多項(xiàng)式時(shí)間的問(wèn)題的集合。
?? 然而有些問(wèn)題很難找到多項(xiàng)式時(shí)間的算法(或許根本不存在),比如"找出無(wú)向圖中哈密爾頓回路"問(wèn)題。但是我們發(fā)現(xiàn)如果給了我們?cè)搯?wèn)題的一個(gè)答案,就可以在多項(xiàng)式時(shí)間內(nèi)判斷這個(gè)答案是否正確。給出一個(gè)任意的回路,我們很容易判斷它是否是哈密爾頓回路(只要看是不是所有的頂點(diǎn)都在回路中就可以了)。這種可以在多項(xiàng)式時(shí)間內(nèi)驗(yàn)證一個(gè)解是否正確的問(wèn)題成為NP問(wèn)題,又稱易驗(yàn)證問(wèn)題類。
??? 簡(jiǎn)單地說(shuō),存在多項(xiàng)式時(shí)間的算法的一類問(wèn)題稱為P類問(wèn)題;而像梵塔問(wèn)題、推銷員旅行問(wèn)題等,至今沒(méi)有找到多項(xiàng)式時(shí)間算法解的一類問(wèn)題,稱為NP類問(wèn)題。
??? 復(fù)雜性理論中最具理論意義的當(dāng)數(shù)NP完全性問(wèn)題(NPC問(wèn)題),即由于"P=NP是否成立"這個(gè)問(wèn)題難以解決,從NP類的問(wèn)題中分出復(fù)雜性最高的一個(gè)子類,把它叫做NP完全類。已經(jīng)證明,任取NP類中的一個(gè)問(wèn)題,再任取NP完全類中的一個(gè)問(wèn)題,則一定存在一個(gè)具有多項(xiàng)式
時(shí)間復(fù)雜性的算法,可以把前者轉(zhuǎn)變成后者。這就表明,只要能證明NP完全類中有一個(gè)問(wèn)題是屬于P類的,也就證明了NP類中的所有問(wèn)題都是P類的,即證明了P=NP。
??? 目前已知的NP完全性問(wèn)題就有2000多個(gè),在圖上定義的許多組合優(yōu)化問(wèn)題是NP完全性問(wèn)題,如貨郎問(wèn)題、調(diào)度問(wèn)題、最大團(tuán)問(wèn)題、最大獨(dú)立集合問(wèn)題、Steiner樹問(wèn)題、背包問(wèn)題、裝箱問(wèn)題等,遇到這類問(wèn)題時(shí),通常從以下幾個(gè)方面來(lái)考慮,并尋求解決辦法:
??? (1) 動(dòng)態(tài)規(guī)劃法:較高的解題效率。
??? (2) 分枝限界法: 較高的解題效率。
??? (3) 概率分析法: 平均性能很好。
??? (4) 近似算法: 近似解代替最優(yōu)解。
??? (5) 啟發(fā)式算法:根據(jù)具體問(wèn)題的啟發(fā)式搜索策略在求解,在實(shí)際使用可能很有效,但有時(shí)很難說(shuō)清它的道理。
總結(jié)
- 上一篇: 概率型算法近似算法
- 下一篇: stl algorithm清单