演算法概論 習題 8.3
題目描述:
吝嗇sat問題是這樣的:給定一組子句(每個子句都是其中文字的析取)和整數k,求乙個最多有k個變數為true的滿足賦值——如果該賦值存在。證明吝嗇sat是np-完全問題。
什麼是sat問題?
sat問題也稱為合取正規化的可滿足問題,乙個合取正規化形如:a1∧a2∧…∧an,子句ai(1≤i≤n)形如:a1∨a2∨…∨ak,其中ai為文字,為某一布林變數或該布林變數的非。
sat問題是指:是否存在一組對所有布林變數的賦值(true或
false),使得整個合取正規化取指為真。
證明:
我們如果要證明吝嗇sat問題是np-完全問題,我們首先要證明吝嗇sat問題是np問題,之後,如果能把sat問題規約到吝嗇sat問題,那麼就能證明吝嗇sat問題是np-完全問題。
首先,吝嗇sat問題是np問題 ,因為
若已知某個與吝嗇sat問題變數對應的真值集合,可在多項式時間內將該集合帶入吝嗇sat問題驗證是否為解。故吝嗇sat問題為np問題。
現在證明sat問題可以規約到吝嗇sat問題,如果我們把吝嗇sat問題中的k設定為輸入的數目,那麼sat問題就可以規約到吝嗇sat問題,所以吝嗇sat問題是np-完全問題。
《演算法概論》習題8 19證明
題目 所謂風箏圖是這樣的,其頂點數為偶數 比如2n 且其中的n個頂點構成了乙個團,剩餘的n個頂點則由一條稱為 尾巴 的路徑連線,尾巴的某個端點與團中乙個頂點相連。給定乙個圖和目標g,風箏圖問題要求該圖的乙個包含2g個頂點的風箏子圖。請證明該問題是np 完全的。證明 我們可以將團問題歸約到風箏圖問題。...
演算法概論 8 3
吝嗇sat問題是這樣的 給定一組子句 每個子句都是其中文字的析取 和整數k,求乙個最多有k各變數為true的滿足賦值 如果該賦值存在。證明吝嗇sat是np完全問題。可以將sat問題歸約到此問題。首先,若得到了吝嗇sat問題的乙個解,按照此解對吝嗇sat的每個子句賦值,即可驗證這個解是否成立,這個過程...
演算法課習題證明
吝嗇sat問題是這樣的 給定一組子句 每個子句都是其中文字的析取 和整數k,求乙個最多有k個變數為true的滿足賦值 如果該賦值存在。證明吝嗇sat是np 完全問題。假設有子句 a b c a b b c a c a b c 求a,b,c的取值 true or false 使得該表示式的結果是tru...