我知道将公式转换为CNF的4条规则,但我不太清楚如何将它们应用于此公式 ((x v y)^¬z) - > w
有人能帮我一把,还有一点解释?谢谢!
答案 0 :(得分:3)
将表达式转换为CNF 的配方 将公式转换为 CNF 的一种方法是:
这个食谱可以说如下:
除非整体表达为假,否则所有条款都不得为假。因此,每个子句代表反转表达式的最小项。为了确保这个术语是错误的,没有一个倒置的文字是真的。
对于n个输入变量,真值表有2 ^ n个项。因此,这种方法仅适用于小表达式。
演示样本公式的步骤
((x或y)而不是z)暗示w
真值表(F =表达式值):
wxyz|F
----+-
0000|1
1000|1
0100|0
1100|1
0010|0
1010|1
0110|0
1110|1
0001|1
1001|1
0101|1
1101|1
0011|1
1011|1
0111|1
1111|1
----+-
虚假条款(F = 0):
wxyz|F
----+-
0100|0
0010|0
0110|0
----+-
文字倒置和输出栏省略:
wxyz
----
1011
1101
1001
----
产生的CNF条款:
(w或!x或y或z)和(w或x或!y或z)和(w或!x或!y或z)
通过合并子句最小化生成的CNF子句:
(w或!x或z)和(w或!y或z)
如果有疑问,可以提问Wolfram|Alpha。
从Karnaugh map开始,很清楚三个错误术语如何合并为两个子句:
wx
00 01 11 10
+---+---+---+---+
00 | 1 | 0 | 1 | 1 |
+---+---+---+---+
01 | 1 | 1 | 1 | 1 |
yz +---+---+---+---+
11 | 1 | 1 | 1 | 1 |
+---+---+---+---+
10 | 0 | 0 | 1 | 1 |
+---+---+---+---+