假设变量N的数量和子句K的数量相等。查找一个算法,该算法返回满足子句的不同方法的数量。
我读到SAT与独立集有关。
答案 0 :(得分:2)
包含N
个变量的函数的truth-table行2^N
行。每行对应一个minterm,可以是解决方案,也可以不是。
N
个变量的子句完全排除minterm中的一个作为解决方案的一部分。那是minterm,它由该子句的所有反转变量组成。
如果K
条款都不同,
解决方案的数量是2 ^ N - K
示例:强>
包含K=3
变量的N=3
子句:
A or B or C
!A or B or C
A or B or !C
三个输入的真值表:
A B C output
0 0 0 0 // excluded by A or B or C
0 0 1 0 // excluded by A or B or !C
0 1 0 1
0 1 1 1
1 0 0 0 // excluded by !A or B or C
1 0 1 1
1 1 0 1
1 1 1 1
可能的八个术语中有五个仍然有效。因此,该示例具有2 ^ 3 - 3 = 5个解。