2
A
回答
4
A 3-CNF是一個Conjunctive Normal Form其中所有子句有三個或更少的文字。要獲取對您表達這樣一種形式,你可以表達轉化爲一個嵌套的布爾表達式,所有運營商(和,或)有兩個操作數:
t1a = (a+b)
t1b = (c+d)
t1 = t1a + t1b
t2 = (~a)
t3 = (~b+d)
t4a = (a+b)
t4 = t4a + ~d
t5a = t1 t2
t5b = t3 t4
t5 = t5a t5b
您可以直接把這種嵌套表達成一組3 -CNF子句。
最小化的解決方案:
(~a)(~b + d)(b + ~d)(c + d)
由WolframAlpha建議是你表達它不包含更長的條款的3-CNF
。
對於小型案例,您可以填寫真值表。查看輸出爲0的所有行,並查找涵蓋所有這些行的最小行數。如果您然後反轉最小值中的所有文字,則您有一個CNF
。如果子句有3個以上的文字,可以通過引入中間變量將它們分成兩個或更多個較短的子句。廣泛使用的程序被稱爲Tseitin Transformation或Tseitin編碼。
相關問題
- 1. 如何將布爾表達式轉換爲cnf文件?
- 2. 將n個xor表達式轉換爲CNF?
- 3. 將常規形式轉換爲CNF
- 4. 將子句轉換爲CNF
- 5. 將查詢轉換爲CNF
- 6. 將BDD轉換爲CNF
- 7. 如何將表達式轉換爲cps?
- 8. 如何將中綴表達式轉換爲後綴表達式?
- 9. 如何將正則表達式轉換爲extglob表達式?
- 10. 如何將python表達式轉換爲java表達式?
- 11. 如何將表達式轉換爲lambda表達式?
- 12. 從CNF轉換爲喇叭形式
- 13. 將一階邏輯轉換爲CNF
- 14. 如何將我的轉換函數轉換爲lambda表達式?
- 15. 將命題公式轉換爲連接標準形式(CNF)
- 16. 使用Z3Py將Z3 CNF公式轉換爲列表列表形式
- 17. 如何將CNF中的PCFG轉換爲該語法?
- 18. 如何在將CFG轉換爲CNF時做最後一步?
- 19. 使用座標解算器將等式轉換爲cnf
- 20. 使用Z3將SMT-LIBv2 QF_AUFBV轉換爲CNF DIMACS格式
- 21. 將Powershell函數轉換爲表達式
- 22. 將表達式轉換爲二叉樹
- 23. 將SQL表達式轉換爲VB
- 24. 將委託轉換爲表達式樹
- 25. 將Linq表達式轉換爲C#EF
- 26. 將pandas轉換爲pyspark表達式
- 27. 將此LINQ轉換爲Lambda表達式?
- 28. 將表達式轉換爲R函數
- 29. 將odata uri轉換爲表達式
- 30. 將sql轉換爲Lambda表達式
你可能會對我剛發佈的這個類似問題的答案感興趣:http://stackoverflow.com/a/27588951/2213720 – CliffordVienna