Chapter8 NP-complete problems 课后习题8.3

8.3 证明吝啬SAT是NP-完全问题

吝啬SAT问题

给定一组字句(每个子句都是其中文字的析取)和整数k,求一个最多有k个变量为true的满足赋值–如果该赋值存在。

SAT问题(可满足性问题)

SAT的一个实例: (xyz)(xy¯)(yz¯)(zx¯)(x¯y¯z¯) ,是一个采用合取范式的布尔公式。它由一组子句组成,每个子句都是多个文字的析取。SAT问题为,给定一个采取合取范式的布尔公式,为其找到一个可满足赋值或判定该赋值不存在。

NP完全问题

称一个搜索问题时NP-完全的,是指其他所有搜索问题都可以规约到它。一个问题要成为NP-完全的,它必须能用于解决世界上所有的搜索问题。

规约

如果问题A可以规约为问题B,则意味着如果我们知道如何高效求解B,也一定能高效求解A;如果知道A是难的,则规约将证明B也是难的。
如果将A规约为B记为: AB ,则可以说问题的难度沿着箭头方向流动,而高效的算法则反之。通过这种难度的传播,我们知道NP-完全问题是难的:其他所有搜索问题都可以规约到它们,因此NP-完全问题包含了所有搜索问题的难度。
一旦我们知道A是NP-完全的,则我们可以利用它来证明另一个新的问题B也是NP-完全的,仅需将A归约到B。同时这样的规约表明,借助A可以将任意NP-完全问题归约于B。

各种搜索问题的归约顺序

Chapter8 NP-complete problems 课后习题8.3_第1张图片
由此说明,这些问题都是NP-完全的。

证明

Chapter8 NP-complete problems 课后习题8.3_第2张图片
要证明吝啬SAT时NP-完全问题,首先证明吝啬SAT是NP问题,然后证明SAT是NP-完全问题,再将SAT归约成吝啬SAT。

所有NP问题都可以归约为SAT从(证明SAT是NP-完全问题)

将电路SAT归约为SAT

首先,所有的NP问题都可以归约为SAT的一个推广,所谓的电路可满足性问题(电路SAT)。SAT所要求的是一类具有较简单结构电路的可满足赋值,这类电路的特点说:在其顶端,一组与(AND)操作将所有子句联合起来,最终以这组与操作的联合结果为输出。每个子句都是其中文字的或(OR)操作。并且每个文字要么是一个未知的输入们,要么时其否定(NOT)。且其中不包含任何已知输入门。从另一个方面来看,电路SAT也可以被归约为SAT。我们可以将电路重写为合取范式(子句的与(AND)操作),为电路中的每个门生成一个变量g,并利用如下子句模仿门的效果:
Chapter8 NP-complete problems 课后习题8.3_第3张图片

证明所有搜索问题都能归约为电路SAT

假设A是一个NP问题,我们必须找到由A到电路SAT的一个归约。关于A,其任意解都能被快速检验,即存在算法C,以问题实例I和和可能解S为输入,判断S是否为I的解。此外C做出判断的时间关于I的长度为多项式规模的。
根据##7.7节(线性规划)##的结论,任意多项式算法都可以被表示为一个电路,其输入门将用于编码算法的输入。对任意长度(bit数)的输入,电路可以扩展出适当数量的输入门,但电路中门的总数关于输入数量时多项式规模的。如果问题的多项式时间算法给出一个是或否的答案(类似如下情形的C:S所编码信息的是否为I所编码实例的解),则该答案将由输出门给出。
总结一下,给定问题A的一个实例I,我们可以再多项式时间内构造一个电路,其已知输入为对应I对应的比特,未知输入为S对应的比特,则其最终输出为true当且仅当未知输入对应S为I的解。


按照定义,当k==输入变量的总数时,吝啬SAT和SAT是等价的问题,SAT可以归约为吝啬SAT,又可以得知,吝啬SAT的解在多项式时间内是可以得到验证的。因此证明吝啬SAT是NP-完全问题。

你可能感兴趣的:(证明题)