题目
该题目是选自《算法概论》中第8章课后练习题第16题。
题目如下:
解题思路
该题目可以把烹饪实验问题中构造一个特例,使得它能够满足3SAT的形式即可。
我们首先假设有n个材料,分别为X1,X2,X3……Xn,他们之间有一个关系,对于Xi与Xj之间有不和谐度Dij。在这里,我们构造一个特例,令P=0。
对于每个i与j之间构造四个子句 (Xi V Xj V ~Dij) 、(~Xi V ~Xj V Dij)、(~Xi V Xj V ~Dij) 与 (Xi V ~Xj V ~Dij).
这样就可以算出,当Xi 与 Xj 同时取true 的时候, Dij 必须要取true,当Xi 与 Xj 其中一个为false 的时候,Dij 必须取false。
此时,只要找出一个能够满足 所有赋值为true的 Dij 之和小于等于p即可。