《演算法概論》8 8

2021-07-24 22:15:45 字數 969 閱讀 1616

題目:

在精確的4sat(exact 4sat)問題中,輸入為一組自居,每個字句都是恰好4個文字的析取,且每個變數最多在每個字句中出現一次。目標是求它的滿足賦值——如果該賦值存在。證明精確的4sat是np完全問題。

證明:

用歸約來證明:如果問題a可以歸約到問題b,記作a->b,如果a是np完全問題,則通過歸約證明b也是np完全問題。即問題的難度是通過箭頭的方向傳遞的。

現在要證明exact 4sat問題是np完全問題,8.3節已經證明3sat問題是np完全問題,則:只要證明3sat問題可以歸約到exact 4sat問題,就能通過歸約公式證明exact 4sat問題也是np完全問題。

下面將3sat問題歸約到exact 4sat問題:

給定3sat的例項i,對i中的每個字句,包含的文字不超過3個,假設i=(a1∨a2∨a3)(a4∨a5∨a6)…(ak-2∨ak-1∨ak)。由於exact 4sat要求每個變數最多在每個字句中出現一次,先對i中的字句去重(保證每個變數在字句中只出現一次)。對i中的字句i,如果i中存在相等的變數:

i中存在s和t,使得as=at,則原字句i=(as∨at∨aw)=(as∨aw)。

i中存在s和t,使得as等於at的反相,則原字句i=(as∨at∨aw)=true,對i的可滿足性,可直接不考慮i,相當於將i消去。

去重後,對i中的每個字句,每個變數只在字句中出現一次,但是,每個字句的變數都不超過3,為每個字句增加不同的變數,新增變數x使字句(a1∨a2∨a3)變成(a1∨a2∨a3∨x),新增變數x,y使字句(a1∨a2)變成(a1∨a2∨x∨y)……逐個對每個字句新增變數使得它們都擁有不同的4個變數。這樣,3sat問題就歸約為exact 4sat問題。去重和新增變數的過程能在多項式時間內完成。因此,3sat問題可以在多項式時間內歸約為exact 4sat問題,由於3sat問題是np完全問題,所以exact 4sat問題也是np完全問題。

以上,證明完畢。

演算法概論 8 8

在精確的4sat exact 4sat 問題中,輸入為一組子句,每個子句都是恰好4個文字的析取,且每個變數最多在每個子句中出現一次。目標是求它的滿足賦值 如果該賦值存在。證明精確的4sat是np 完全問題。考慮通過將3sat問題歸約到4sat exact 4sat 問題來驗證4sat exact 4...

演算法概論課後習題8 8

設3sat的例項i a1v a2v a3 a4 v a5 v a6 anv an 1v an 2 根據4sat問題的條件,每個變數最多在每個子句中出現一次。如果某個變數在子句中出現多次,則縮減為1次。如果某個子句中同時包含互反的兩個變數,則將這兩個變數同時去除。接下來在各子句中新增1個變數,轉化為4...

演算法概論習題 8 8解答

在精確的4sat exact 4sat 問題中,輸入為一組子句,每個字句都是恰好4個文字的析取,且每個變數最多在每個子句中出現一次。目標是求它的滿足賦值 如果該賦值存在。證明精確的4sat是np 完全問題。在證明精確的4sat問題是np 完全問題前,先得證明其屬於np問題。因為exact 4sat和...