NP問題及其計算復(fù)雜性

原文鏈接http://blog.csdn.net/Ying_Xu/article/details/51487977

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————


本周的內(nèi)容是NP問題欲主,NP的全稱是Non-deterministic Polynomial竞端,即多項式復(fù)雜程度的非確定性問題厕氨。百度上對NP的解釋是猪狈,P/NP問題是在理論信息學(xué)中計算復(fù)雜度理論里至今沒有解決的問題雕蔽。通俗的說猾漫,是將不可知的問題轉(zhuǎn)化為已知的問題闯团,進(jìn)而計算器復(fù)雜度函匕。

首先介紹多項式時間的規(guī)約,即Polynomial-Time Reductions耍目,通過解決另一個不同問題的假設(shè)的子程序,使用不包含子程序在內(nèi)的多項式時間來解決一個問題的方法徐绑。主觀上邪驮,一個多項式時間規(guī)約證明了第一個問題不比第二個問題難,因為只要對于第二個問題有有效的解決辦法傲茄,那么對于第一個問題就一定也存在解決方法毅访。

根據(jù)計算的復(fù)雜度,我們可以將問題分為兩類盘榨,一種是可以在多項式時間內(nèi)解決的喻粹,另一種是不能在多項式時間內(nèi)被解決的。下面的表格給出了一些算法草巡。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

一些問題被證明需要指數(shù)時間:

1.給定一臺圖靈機守呜,它能否在最多k步的時候停止?

2.給定一個nxn的棋盤山憨,黑棋能夠保證贏嗎查乒?

一個不樂觀的消息是幾十年來大量的基礎(chǔ)問題都忽略了分類。這一節(jié)的內(nèi)容是表明這些基本問題是計算等價的郁竟,似乎是一個非常難問題的不同表現(xiàn)玛迄。

假設(shè)我們可以在多項式時間內(nèi)解決X問題,那么我們在多項式時間內(nèi)能解決其他什么問題嗎?這里引入Reduction的定義棚亩。

Reduction:問題X可以多項式規(guī)約為問題Y蓖议,如果問題X的任意實例可以使用下面的條件被解決:

A) 多項式數(shù)量的標(biāo)準(zhǔn)計算步驟加上,

B) 可以解決問題Y的oracle多項式數(shù)目次的調(diào)用讥蟆,這里勒虾,oracle是特殊硬件提供的可以在單步中解決Y的實例的計算模型。

表示為

這里瘸彤,X是已知的可以在多項式時間內(nèi)解決的問題从撼,Y是不可知復(fù)雜度的問題。中間的符號表示,有方法將X轉(zhuǎn)換為Y低零,有點類似于小于等于符號的含義是表明X的復(fù)雜度小于等于Y的復(fù)雜度婆翔,一般情況下,符號中p的上面會有一個m掏婶,表示可以是many to one reduction,也就是可以是多對一的映射。如果X有polynomial-time解雄妥,那么該解是下界最蕾;如果Y有polynomial-time解,那么該解是上界老厌。

因此多項式時間的規(guī)約的目的是根據(jù)問題的相對困難度來對問題分類的瘟则。如果有

,y可以在多項式時間內(nèi)被解決枝秤,那么X一定也能在多項式時間內(nèi)被解決醋拧;如果
,X不能夠在多項式時間內(nèi)被解決淀弹,那么y也不能在多項式時間內(nèi)被解決丹壕。

我們也可以建立等價性,這里的等價是指的reduction的成本薇溃。如果

菌赖,那么我們可以表示為

下面有三個基本的規(guī)約策略沐序,通過簡單等價規(guī)約琉用、從特殊案例到一般案例的規(guī)約和通過子程序的編碼來規(guī)約。

一策幼、簡單等價規(guī)約

首先定義獨立集(IndependentSet, 我們在Matroid中已經(jīng)學(xué)習(xí)過)辕羽,給定一個圖G=(V, E)和一個整數(shù)k,存在一個頂點的子集

垄惧,
刁愿,對于每一條邊至多其中一個端點在S中。

如下圖:

? ? ? ? ? ? ? ? ? ?


對于上圖到逊,存在一個大小大于等于6的獨立集铣口,但是不存在大小大于等于7的獨立集。

下面定義一個頂點覆蓋集觉壶,給定一個圖G=(V, E)和一個整數(shù)k脑题,存在一個頂點的子集

铜靶,對于每一條邊至少其中一個端點在S中叔遂。

例如:

? ? ? ? ? ? ? ? ? ?


對于上圖,存在一個大小小于等于4的頂點覆蓋集,但是不存在一個大小小于等于3的頂點覆蓋集已艰。

對于頂點覆蓋集合和獨立集痊末,有


其實從上面兩個圖,我們就可以看出哩掺,兩個集合互補凿叠。S是一個獨立集當(dāng)且僅當(dāng)V-S是一個頂點覆蓋集。

? ? ? ? ? ? ? ? ? ?


從上面等價條件來嚼吞,我們可以從

來證明盒件。

令S為任意的獨立集,考慮一條任意的邊(u, v), 因為S為獨立集


因此舱禽,V-S包含(u, v).

:

令V-S為任意的頂點覆蓋集炒刁,考慮兩個頂點u∈S和v∈S,因為V-S是一個頂點覆蓋集誊稚,觀察到(u, v)?S翔始,因此,不存在S中的兩個頂點連接同一條邊片吊。因此,S是一個獨立集协屡。

二俏脊、從特殊案例到一般案例的規(guī)約

定義集合覆蓋:

集合覆蓋(Set Cover):給定一個元素的集合U,一個U的子集的集合S1,S2,…Sm,和一個整數(shù)k肤晓,存在一個集合含有小于等于k個這樣的集合的并等于U爷贫。

例:

? ? ? ??


上面的例子中,S2和S6即為滿足的集合补憾。

頂點覆蓋集合(Vertex cover)可以規(guī)約為集合覆蓋(Set Cover)漫萄,即


證明:

給定一個頂點覆蓋集合的實例G=(V,E),k,我們建立了一個集合覆蓋實例,其大小等于頂點覆蓋實例的大小盈匾。

創(chuàng)建過程:

創(chuàng)建集合覆蓋實例:


集合覆蓋的大小小于等于k當(dāng)且僅當(dāng)頂點覆蓋的大小小于等于k腾务。

? ? ? ?

三、通過子程序的編碼來規(guī)約削饵。

首先定義

literal:一個布爾變量或者它的否定:

clause子句:literal的析妊沂荨:

合取范式(Conjunction Normal Form, CNF):子句clause的聯(lián)合的一個命題公式


SAT:給出一個CNF公式

它是否滿足真命題的賦值

3-SAT:每一個子句包含恰好3個literals的SAT

? ? ??


上面的例子是一個SAT窿撬,但不是一個3-SAT启昧。第3個clause再加一個literal就為3-SAT。

3-SAT可以規(guī)約到獨立集劈伴,即

證明:

給定一個3-SAT的實例

我們建立一個獨立集的實例(G密末,K),有一個大小為k的獨立集當(dāng)且僅當(dāng)
是可以滿足的。

創(chuàng)建過程:

G對于每一個子句包含3個頂點严里,對每一個literal有1個頂點新啼;一個三角形中一個子句中連接3個literals;每一個literal連接到自身的否定田炭。

? ? ? ? ? ??

?

3可滿足性可以規(guī)約到獨立集师抄。

G包含一個大小為

的獨立集,當(dāng)且僅當(dāng)
是可滿足的教硫。

證明:

令S為大小為k的獨立集叨吮,那么S在每一個三角形中包含恰好一個頂點,將這些literal全部設(shè)置為true瞬矩,茶鉴,其余的變量也保持一致,那么真命題賦值是一致的且所有的子句都滿足

給定一個滿足的命題景用, 從每一個三角形中選擇一個為真的literal涵叮。那么這就是一個大小為k的獨立集。

總結(jié)一下以上三種基本的規(guī)約方法:

? ? ? ? ?


傳遞性:

? ? ? ? ? ??


如:

? ? ? ? ?

決策問題:是否存在一個大小小于等于k的頂點覆蓋?

搜索問題:找到有著最小基數(shù)的頂點覆蓋

自規(guī)約性:搜索問題決策問題伞插,將會應(yīng)用到這一章節(jié)的所有問題中割粮,并且

證明我們對于決策問題的聚焦。

例如:

我們想要找到具有最小基數(shù)的頂點覆蓋

方法為:

(二進(jìn)制)搜索找到最小頂點覆蓋的基數(shù)k*

找到一個頂點v使得G-{v}有一個大小小于等于k*-1的頂點覆蓋(在任何的最小頂點覆蓋中的任意頂點都有這個性質(zhì))

將v包含到這個頂點覆蓋中

遞歸找到一個最小的頂點覆蓋G-{v}

下面開始探討重點的NP問題

首先是決策問題媚污。

X是字符串的一個集合舀瓢,有一個實例字符串s,那么設(shè)計一個算法A解決問題X:使得A(s)=yes當(dāng)且僅當(dāng)s∈X

如果算法A是對于每一個字符串s運行在一個多項式時間內(nèi)的耗美,那么A(s)將會在最多第p(|s|)步終止京髓,其中p(·)是某一個多項式。

定義P:

對一個有著多項式運行時間的算法的決策問題

? ? ? ? ? ?


NP問題:

認(rèn)證算法的意圖:

Certifier(證明者)是從管理的角度來看待事情的商架,并不能自己決定是否有s∈X堰怨,然而,他可以檢驗一個提出的證明這個s∈X蛇摸。

定義:算法C(s,t)是一個問題X的證明者备图,如果對于每一個字符串s有s∈X當(dāng)且僅當(dāng)存在一個字符串t使得C(s,t) = yes.

NP是指存在一個多項式Certifier的決策問題,這是相對于P而言的定義赶袄。

例子:

給出一個整數(shù)s诬烹,s是一個合數(shù)(質(zhì)數(shù)的對立)嗎驹吮?

Certificate :s的一個非質(zhì)因子t慧邮,存在這樣的一個憑證存在當(dāng)且僅當(dāng)s是一個合數(shù)擅这。

Certifier:

? ? ? ? ? ??


如一個實例:

s = 437699

Certificate: t = 541 或者809

結(jié)論是:合數(shù)是一個NP問題

SAT:給出一個CNF公式

是否存在一個滿足條件的命題虽界?

Certificate:對于n個布爾變量的真值的賦值

Certifier:檢查

中的每一個子句仅淑,是夠含有至少一個真的literal

例如:

實例s


Certificate:


結(jié)論:SAT是一個NP問題

哈密頓環(huán)(Hamiltonian Cycle)

哈密頓環(huán)是:給定一個無向圖G=(V, E), 存在一個簡單環(huán)C能夠訪問每一個結(jié)點

Certificate:n個結(jié)點的排列

Certifier:檢驗排列中V中包含的每一個結(jié)點是否恰好出現(xiàn)一次扳还,并且在排列中每一對相鄰的結(jié)點之間是否存在一條邊韭寸。

結(jié)論:哈密頓環(huán)是一個NP問題

? ? ? ??

?


那么P是否等于NP呢背零?

所有的完全多項式非確定性問題,都可以轉(zhuǎn)換為一類叫做滿足性問題的邏輯運算問題汰聋。既然這類問題的所有可能答案门粪,都可以在多項式時間內(nèi)計算,人們于是就猜想烹困,是否這類問題玄妈,存在一個確定性算法,可以在多項式時間內(nèi)髓梅,直接算出或是搜尋出正確的答案呢拟蜻?這就是著名的NP=P?的猜想枯饿。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

如果yes:那么有效的算法對3-Color酝锅,TSP, FACTOR奢方, SAT…

如果No:沒有有效的算法對3-Color搔扁,TSP, FACTOR蟋字, SAT…

一致的輿論為p≠NP

最后討論的是NP完全問題稿蹲。

問題X多項式規(guī)約(polynomial reduces, Cook提出的)到問題Y,如果問題X的任意實例可以使用下面的來解決:

A. 多項式數(shù)目的標(biāo)準(zhǔn)計算步驟鹊奖,加上

B. 可以解決問題Y的oracle的多項式數(shù)目的調(diào)用

多項式轉(zhuǎn)換(polynomialtransforms, Karp提出的)是指問題X多項式轉(zhuǎn)換為問題Y如果給定一個任意的輸入x給X苛聘,我們可以生成一個輸出y使得x是X的一個yes實例當(dāng)且僅當(dāng)y是Y的一個yes實例。

多項式轉(zhuǎn)換是一個對于Y而言只有一個oracle調(diào)用的多項式規(guī)約嫉入,就在對X的算法的最后焰盗。幾乎所有之前的規(guī)約都是這種形式璧尸。

那么這兩個對于NP而言是相同的嗎咒林?

NP完全問題是最難的問題。它的定義是:NP中的一個問題Y有這樣的一個性質(zhì):對于NP中的任意問題X爷光,有

通俗上定義為垫竞,如果任何一個NP問題都能通過一個多項式時間算法轉(zhuǎn)換為某個NP問題,那么這個NP問題就稱為NP完全問題(Non-deterministic Polynomial complete problem)蛀序。NP完全問題也叫做NPC問題欢瞪。

完全多項式非確定性問題可以用窮舉法得到答案,一個個檢驗下去徐裸,最終便能得到結(jié)果遣鼓。但是這樣算法的復(fù)雜程度,是指數(shù)關(guān)系重贺,因此計算的時間隨問題的復(fù)雜程度成指數(shù)的增長骑祟,很快便變得不可計算了回懦。

定理:假設(shè)y是一個NP完全問題,那么y可以在多項式時間內(nèi)解決當(dāng)且僅當(dāng)P=NP

證明:

←如果P=NP次企,那么因為y是一個NP問題怯晕,因此可以在多項式時間內(nèi)被解決

→假定y可以在多項式時間內(nèi)被解決,令X為任意一個NP問題缸棵。因為

舟茶,我們可以在多項式時間內(nèi)解決X,可以得出
堵第,又因為已知
吧凉,因此有P=NP。

下面描述一個電路可滿足性問題型诚,在理論計算機科學(xué)中客燕,電路可滿足性問題(CIRCUIT-SAT)是決定一個給定的布爾電路是否有一個可以使得輸出為true的輸入的賦值的決策性問題。

給出一個由AND狰贯,OR和NOT門的聯(lián)合電路也搓,是否存在一個方法設(shè)置電路的輸入使得其輸出為1?

? ? ? ? ? ? ? ? ? ?


我們可以驗證涵紊,CIRCUIT-SAT是一個NP完全問題傍妒。

證明:任何一個將固定數(shù)目的n位作為輸入并且產(chǎn)生一個yes/no的輸出的算法都可以被這樣的一個電路來表示。并且摸柄,如果該算法花費多項式時間颤练,那么電路也是多項式大小。(固定為n位是非常重要的驱负,反應(yīng)了算法和電路之間的基本區(qū)別)

考慮一個NP問題X嗦玖,它有一個多項式時間certifier C(s, t).為了決策s是否在X中,我們需要知道是否存在一個長度為p(|s|)的憑證t使得C(s, t)=yes跃脊。

我們將C(s, t)看做是一個|s|+p(|s|)位的算法(輸入為s宇挫,憑證為t),將其轉(zhuǎn)化為一個多項式時間的電路K酪术。前|s|位是用s硬編碼的器瘪,剩下的p(|s|)位是t的位,那么電路K是可滿足的當(dāng)且僅當(dāng)C(s,t)=yes绘雁。

例如:

? ? ? ? ? ? ??


上面的電路就創(chuàng)建了一個電路K橡疼,它的輸入這樣被設(shè)置使得K輸出為真當(dāng)且僅當(dāng)圖G有一個大小為2的獨立集。

那么如何建立一個NP完全問題呢庐舟?

一旦我們建立了第一個NP完全問題欣除,那么其他的也就是一個道理了。

建立問題y的完全NP問題的步驟:

1) 表明Y是一個NP問題

2) 選擇一個完全NP問題X

3) 證明

可以證明3-SAT是一個NP完全問題挪略。

下面這個圖顯示了NP完全問題以及可以多項式規(guī)約到另一個問題历帚。

? ? ? ? ? ? ??


NP完全問題的6個種類和典型例子:

a)??包裝問題:SET-PACKING废酷,INDEPENDENT SET

b)??覆蓋問題:SET-COVER, VERTEX-COVER

c)??約束滿足問題:SAT抹缕, 3-SAT

d)??序列問題:HAMILTONIAN-CYCLE澈蟆, TSP

e)??分區(qū)問題:3D-MATCHING, 3-COLOR

f)??數(shù)值問題:SUBSET-SUM, KNAPSACK

大部分的NP問題要么是P要么就是完全NP問題卓研。

NP的對稱:我們只需要有對于yes實例的簡單證明即可趴俘。

1.? SATvs. TAUTOLOGY

可以證明對于一個給定的賦值,一個CNF公式是可以滿足的奏赘,那么如何證明一個公式不可滿足呢寥闪?

2.? HAM-CYCLEvs. NO-HAM-CYCLE

給定一個哈密頓環(huán)可以證明一個圖是哈密頓,那么如何證明一個圖不是哈密頓呢磨淌?

??????? co-NP是NP決策問題的補集疲憋。

? ? ? ? ??

???

那么,NP=co-NP呢梁只?

一致的輿論是不等于的缚柳。

如果有NP≠co-NP,那么P≠NP搪锣。但可以得出秋忙,

質(zhì)數(shù)問題是一個NP∩co-NP的問題

(Pratt定理)一個奇數(shù)是一個質(zhì)數(shù)當(dāng)且僅當(dāng)存在一個整數(shù)1<t<s,使得對于所有s-1的所有素除子p有

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?


??? FACTORIZE:給定一個整數(shù)x构舟,找出它的素因子

??? FACTOR:給定兩個整數(shù)x和y灰追,找出x是否有一個小于y的非質(zhì)因子。

??? 定理:

??? FACTOR是一個NP∩co-NP的問題狗超。

? ??


版權(quán)聲明:本文為博主原創(chuàng)文章弹澎,未經(jīng)博主允許不得轉(zhuǎn)載。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末努咐,一起剝皮案震驚了整個濱河市苦蒿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌麦撵,老刑警劉巖刽肠,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溃肪,死亡現(xiàn)場離奇詭異免胃,居然都是意外死亡,警方通過查閱死者的電腦和手機惫撰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門羔沙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人厨钻,你說我怎么就攤上這事扼雏〖崾龋” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵诗充,是天一觀的道長苍蔬。 經(jīng)常有香客問我,道長蝴蜓,這世上最難降的妖魔是什么碟绑? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮茎匠,結(jié)果婚禮上格仲,老公的妹妹穿的比我還像新娘。我一直安慰自己诵冒,他們只是感情好凯肋,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著汽馋,像睡著了一般侮东。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豹芯,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天苗桂,我揣著相機與錄音,去河邊找鬼告组。 笑死煤伟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的木缝。 我是一名探鬼主播便锨,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼我碟!你這毒婦竟也來了放案?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤矫俺,失蹤者是張志新(化名)和其女友劉穎吱殉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厘托,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡友雳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了铅匹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片押赊。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖包斑,靈堂內(nèi)的尸體忽然破棺而出流礁,到底是詐尸還是另有隱情涕俗,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布神帅,位于F島的核電站再姑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏找御。R本人自食惡果不足惜询刹,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望萎坷。 院中可真熱鬧凹联,春花似錦、人聲如沸哆档。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓜浸。三九已至澳淑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間插佛,已是汗流浹背杠巡。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雇寇,地道東北人氢拥。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像锨侯,于是被迫代替她去往敵國和親嫩海。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,077評論 25 707
  • 在此特此聲明:一下所有鏈接均來自互聯(lián)網(wǎng)囚痴,在此記錄下我的查閱學(xué)習(xí)歷程叁怪,感謝各位原創(chuàng)作者的無私奉獻(xiàn) ! 技術(shù)一點一點積...
    遠(yuǎn)航的移動開發(fā)歷程閱讀 11,109評論 12 197
  • 一個人可能存在兩個自我:潛意識的我與現(xiàn)存狀態(tài)的我深滚;感性的我與理性的我奕谭;罪惡的我和善良的我;自然狀態(tài)下的我和社會狀態(tài)...
    管錐一見閱讀 204評論 3 3
  • 今天早上起床有些晚痴荐,我很著急血柳,生怕錯過了今天的運動會!走到半路蹬昌,我遇到王梓涵的奶奶送完王梓涵往家走混驰,她奶奶急說:哎...
    昊昊的每一天閱讀 405評論 0 2
  • 福泉醫(yī)案|精神分裂分虛實栖榨,先清后調(diào)有層次 原創(chuàng) 2016-10-16 顧志君 福泉山房 【患者】朱某,女明刷,53歲婴栽,...
    顧志君閱讀 673評論 0 0