8.3 證明吝嗇SAT是NP-完全問題

  • 問題描述

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

  • 思路

    證明的方法是用歸約的方法:由已知的NP完全問題歸約到該問題,並證明歸約的過程的時間複雜度爲多項式時間複雜度即可。選取的已知的NP完全問題爲SAT問題,因爲這兩個問題十分相似,差別在於SAT並沒有“最多K個變量”這樣的限制。

  • SAT例子

    (a⋃b⋃c)⋂(a⋃b¯)⋂(b⋃c¯)(a¯⋂c)⋂(a¯⋃b¯⋃c¯)
    我們需要做的就是找到a,b,c的取值(true or false)使得該表達式的結果是true

  • 過程

    歸約的過程簡單,假設SAT問題有n個變量,則該SAT問題等價於k = n的吝嗇SAT問題。這樣的歸約過程的時間複雜度爲O(1),是多項式時間複雜度。
    如果說吝嗇SAT問題有多項式時間算法,那麼SAT問題也有多項式時間算法。然而SAT問題本身就是NP完全問題,所以吝嗇SAT也是NP完全問題。
    這樣就證明了吝嗇SAT問題爲NP完全問題。


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