1. 程式人生 > >《算法概論》第八章的一些課後題目 關於NP-Complete Problem

《算法概論》第八章的一些課後題目 關於NP-Complete Problem

題目 variables use 指數 -c 如果能 get set complete

8.3 STINGY SAT

STINGY SAT is the following problem: given a set of clauses (each a disjunction of literals) and an

integer k, find a satisfying assignment in which at most k variables are true, if such an assignment

exists. Prove that STINGY SAT is NP-complete.

當我們有多項式時間算法解決SAT問題時,我們可以直接解決STINGY SAT

我們取k為變量的個數,如果我們找到了多項式時間的算法解決它,也就是解決了SAT問題。驗證答案是顯然快速的。

我們成功將SAT歸約到了STINGY SAT 證明了 STINGY SAT 是NP-Complete problem

8.14 K-clique problem

Prove that the following problem is NP-complete:given an undirected graph G=(V,E) and an integer k,

return a clique of size k as well as an independent set of size k,provided both exist.

首先,團和獨立集是兩個相對的概念,尋找k個元素的團和尋找k個元素的獨立集是等價命題,這裏不展開說明了。

書中已經給出了由3-SAT歸約到k-獨立集的證明,這裏簡單敘述一下

對於任意一個有k個clause的3SAT表達式,我們對於每個clause構造一個三點三邊呈現三角形的子圖,(共有k個三角形)

對於每個變量,兩種相反的形式之間連一條邊,如果能夠找到k個元素的獨立集,必然k個點分布在k個三角形,即選擇了k個變量,使得表達式滿足。驗證滿足性顯然是快速的。

於是,當我們有多項式時間算法解決k獨立集問題時,我們就一定有多項式時間算法解決3SAT問題,所以k獨立集問題是NP-complete problem.

同樣的,k獨立集的等價命題 k-clique問題也是NP-complete的。

補充一道有趣的題目 ZOJ1492

該題給定我們一個無向圖,求最大團的點數是多少。圖的規模小於等於50

這道題我找到了搜索的解法,但是我還沒想到辦法嚴格的分析這個dfs的復雜度,但是由於dfs不是記憶化的,所以我猜想它應該是指數復雜度的。

事實上要實現dfs的記憶化,就不得不用指數級的空間來儲存數據,這也是無法接受的。

不過這道題的搜索剪枝技巧性還是很強的,畢竟指數級的算法能解決50的規模,已經很不錯了。

《算法概論》第八章的一些課後題目 關於NP-Complete Problem