演算法概論第八章部分習題解答

2021-09-30 13:37:41 字數 818 閱讀 1373

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

1.證明吝嗇sat是np問題。

2.證明吝嗇sat是np完全問題。

解:1.若存在一組對應於吝嗇sat問題子句變數的值,將這組值代入該問題中,可以在多項式時間內驗證問題的解是否為真。因此吝嗇sat問題是np問題。

2.將所有變數的總個數設為k,可以將sat問題歸約為吝嗇sat問題,此歸約過程需要多項式時間,又因為sat問題為np完全問題,則吝嗇sat問題為np完全問題。

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

解:先證明exact 4sat問題為np問題:

若存在一組對應於exact  4sat問題子句變數的值,將這組值代入該問題中,可以在多項式時間內驗證問題的解是否為真。則exact  4sat問題是np問題。

再exact 4sat問題為np完全問題:

將3sat問題歸約到exact 4sat問題上。對於任何乙個3sat問題,我們可以對每乙個子句進行一系列操作,首先就是將子句中重複的文字進行刪減,因為都是析取,所以刪除重複的文字是不會影響結果的。接下來,如果乙個文字出現了其否定和肯定在同一子句中,則將這個文字刪除即可。最後一步就是,新增一些無關緊要的啞變數,將每個子句得文字數目擴充到4。 

此歸約過程需要多項式時間。又因為3sat問題是np完全問題,則exact  4sat問題為np完全問題。

第八章 習題

一 填空題 1 在c 的輸入輸出系統中,最核心的物件是 流 執行輸入和輸出操作的類體系叫做 流類 2 當實際進i o操作時,cin與 標準輸入裝置相關聯。3 c 的流類庫預定義了4個流,它們是 cin cout cerr 和 clog 4 使用檔案流類庫的程式必須用 include編譯指令將標頭檔案...

第八章習題

習題2 define crt secure no warnings include int main void else if ch t else else if num 10 0 num 0 putchar n return 0 疑問 printf n d n ch num 0 書上有這樣一句話 ...

第八章 課後習題

1.掌握格式化的輸入輸出方法。2.熟悉系統提供的輸入操作函式。3.掌握磁碟檔案的輸入輸出方法。1.程式sy9 1.cpp用以列印表中的資料,但程式中存在邏輯錯誤。上機除錯後寫出正確的 原程式如下 修改後的程式如下 sy9 1.cpp include include using namespace s...