1. 程式人生 > >演算法設計8.3

演算法設計8.3

題目:

吝嗇SAT問題是這樣的:給定一組子句(每個子句都是其中文字的析取)和整數k,求一個最多有k個變數為true的滿足賦值——如果該賦值存在。證明吝嗇SAT是NP-完全問題。

解答:

首先我們要證明吝嗇SAT問題是np-完全問題,我們首先要證明吝嗇SAT問題是np問題,然後如果能把SAT問題規約到吝嗇SAT問題,那麼我們就能證明這個問題。

  1. 證明吝嗇SAT問題為NP問題。 
    若已知某個與吝嗇SAT問題變數對應的真值集合,可在多項式時間內將該集合帶入吝嗇SAT問題驗證是否為解。故吝嗇SAT問題為NP問題。

  2. 證明吝嗇SAT為NP-完全問題。 
    SAT -> 吝嗇SAT 
    令SAT問題中變數個數為k即得到吝嗇SAT問題,此歸約過程需要多項式時間。又因為SAT問題為已知的NP-完全問題,則吝嗇SAT問題亦為NP-完全問題。