NP完全性證明

NP-complete的問題就是說這個問題既是NP又是NP-hard。

NP-complete的問題就是難以在多項式時間內解決的問題。

因此,當對於一個問題不會解決時,能證明它是NP完全問題,那麼不會做也無可厚非了。

如何證明一個問題的NP完全性呢?——使用規約

首先找到一個已知的NP完全問題,然後證明這個問題能規約到想要被證明NP完全性的問題。那麼就可以說它是一個NP完全問題了。

如何規約?

對於A->B(A規約到B),就是證明A的輸入能映射爲B的輸入,B的輸出能映射爲A的輸出。(注意映射方向)

STINGY SAT問題:給出一個字句的集合和一個整數k,每個字句由分離的文字組成(每個文字是布爾變量),找出一個可滿足的值分配,其中最多k個變量爲true。

要證明這個問題是NP完全問題,首先要找到一個已知的NP完全問題。

SAT就是一個NP完全問題,SAT問題是對布爾表達式中的每個變量賦值,使得整個式子的值爲true。

規約:SAT->STINGY SAT

輸入映射:每個SAT的輸入可以作爲一個CNF,就是多個字句間用與連接,而字句裏面的文字用或連接,SAT我們是對所有變量賦值。如果我們把變量的個數設爲k。

那麼,每個SAT的輸入都可以映射爲一個STINGY SAT的輸入了。

輸出映射:對於一個STINGY SAT的輸出,是找出一個變量賦值分配(不多於k個變量爲true),使得式子爲真。當k爲變量個數時,每一個輸出都將映射到SAT的輸出(SAT的真值指派不可能會有多於k個變量值爲true,因爲變量個數都沒有那麼多)

因此,可以說STINGY SAT是一個NP-complete

發佈了80 篇原創文章 · 獲贊 72 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章