算法概论 习题8.16

题目:

EXPERIMENTAL CUISINE

Input: n, the number of ingredients to choose from: D,the n*n "discord" matrix; some number p >= 0

Output: The maximum number of ingredients we can choose with penalty <= p.

Show that if EXPERIMENTAL CUISINE is solvable in polynomial time, then so is 3SAT.

题解:

考虑将3SAT问题转化成一个EXPERIMENTAL CUISINE问题。

对于任意3SAT问题,若其中某一个句子 :A or B or C;

我们可以得出7种ingredients,分别为ABC, AB'C, AB'C', ABC', A'BC, A'B'C, A'BC',这7种情况皆可使上述的句子成立。

比如A'BC代表A为假,B和C为真时;它们之间是不能成立的,则将D[A',B] = 1,D[A',C] = 1,D[B,C] = 1(两两ingredients间的discord值置为1)。若成立,则可将两两ingredients间的discord值置为0.

在3SAT任意两个句子之间,任意两个相矛盾的子句的ingredients之间的discord值置为1。最后得到子句总数就是EXPERIMENTAL CUISINE中最大材料的数量。

因此EXPERIMENTAL CUISINE多项式时间内可解,那么3SAT也能。

end!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值