8.3 STINGY SAT html
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 assignmentide
exists. Prove that STINGY SAT is NP-complete.spa
當咱們有多項式時間算法解決SAT問題時,咱們能夠直接解決STINGY SAThtm
咱們取k爲變量的個數,若是咱們找到了多項式時間的算法解決它,也就是解決了SAT問題。驗證答案是顯然快速的。blog
咱們成功將SAT歸約到了STINGY SAT 證實了 STINGY SAT 是NP-Complete problemget
8.14 K-clique problem it
Prove that the following problem is NP-complete:given an undirected graph G=(V,E) and an integer k,io
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的規模,已經很不錯了。