NP-hard問題證明

NP-hard問題:比NPC更難,通常在多項式時間內無法驗證一個解的正確性。幾個複雜度的區別可以看NPC介紹

常見證明

我們要證明一個問題A是NP-hard問題一般可以分爲兩步:

1) 對問題A給定限制條件得到一個特例B問題	
2)證明問題B是NPC問題。

以下羅列四個較直觀簡單的例子:

  1. Dense Induced Subgraph

問題:給定圖GG,正整數kkll,是否存在kk個點的生成子圖包含最少ll條邊。
證明:令l=Ck2l=C_k^2,那麼該問題變成Clique問題(NPC問題)
解釋:kk個點的完全子圖最多的邊包含Ck2C_k^2,所以當l=Ck2l=C_k^2,那麼原問題變成尋找kk個點的子圖且是完全圖,那麼就是Clique問題。

  1. Edge Packing

問題:給定圖GG,正整數kkll,圖GG是否存在ll條邊與最多kk個點相鄰。
證明:令l=Ck2l=C_k^2,那麼該問題變成Clique問題(NPC問題)
解釋:kk個點的完全子圖最多的邊包含Ck2C_k^2,那麼當l=Ck2l=C_k^2,最少需要kk個點,此時原問題變成Clique問題。

  1. Hitting Rectangles

問題:平面上有一組長方形RR,一組點PP,和一個正整數kk,是否可以從PP中選擇kk個點,使得任意一個長方形上都有點。
證明:特例是點覆蓋。
解釋:繪製一個圖G,uuvvPP中的兩個點,uuvv之間如果有邊,則表示一個長方形。那麼在這種情況下,需要覆蓋所有的邊,該問題就成了點覆蓋問題。

  1. Eulerian Subgraph

問題:給定圖GG,正整數kk,圖GG中是否存在Eulerian子圖恰好包含kk條邊。
證明:對於Cubic Graphs(所有點的度都等於3),令k=nk=n,那麼該問題就等價成哈密爾頓迴路問題,是NPC複雜度。
解釋:k=nk=n時,可以證明所有的點都只經過一次,因爲每個點的度數都不超過3,如果經過兩次,度數就爲4。

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