《算法概論》第八章的一些課後題目 關於NP-Complete Problem
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