NP问题证明

来源:互联网 发布:淘宝代运营团队 编辑:程序博客网 时间:2024/05/18 03:50

        所谓风筝图是这样的,其顶点数为偶数(比如2n),且其中的n个顶点构成了一个团,剩余的n个顶点则由一条称为“尾巴”的路径连接,尾巴的某个端点与团中一个顶点相连。给定一个图和目标g,风筝图问题要求该图的一个包含2g个顶点的风筝子图。请证明该问题是NP-完全的。

        分析:可以将团问题归约到KITE问题。

        解答:给定一个图G,和目标g,求一个有g个顶点的完全图。如果我们要求G(V,E)的最大团,那么我们可以在图G中添加|V|个新顶点

然后将每一个新顶点连向原图中互异的顶点,此时共得到了|V|条新边,这样得到一个新图。把这个新图称为G'
容易看出来,在G'中存在着大小为2g的KITE当且仅当G存在大小为g的团

先证:G'中有2g的风筝 → G存在g的团
把G'中只有风筝尾巴(g个点)去除,得到的图也含有一个g大小的完全图,去除的g个点必然是在新增加的|V|个点里面的,去除后不影响原图G,所以原图G也有g大小的团。
再证:G存在g的团G'中有2g的风筝
显而易见,根据上述构造的方法,就可以的到2g的风筝。

        在精确的4SAT问题中,输入为一组子句,每个子句都是恰好4个文字的析取,且每个变量最多在每个子句中出现一次。目标是求它的满足赋值——如果该赋值存在。证明精确的4SAT是NP-完全问题。
        分析:已知3SAT问题是NP完全问题。现在通过将3SAT归约到EXACT 4SAT来证明后者的NP完全性。规约时要保证每个变量在子句中只出现一次,另外要让每个子句恰好有4个文字。
        解答:易得4SAT问题是NP问题。
对于任意一个3SAT实例,若其中某个子句中一个文字出现多次,可以将该文字删减为一次。如果同时包含了某个变量的肯定和否定,那么可以将这个变量去掉。另外,在每个子句中添加一些辅助变量 ,这样可以将每个子句包含的文字数目扩充到四个。


        在碰撞集问题中,给定一组集合{S1,S2,S3….Sn}和预算b,我们希望求一个所有的Si相交且规模不大于b的集合H,当然,前提是这样的集合确实存在。

        分析:将最小顶点覆盖规约到HIYYING SET

        解答:将最小顶点覆盖归约到碰撞集问题。现假设求图G的最小顶点覆盖,我们可以建立一个碰撞集实例。其中S1,S2,Sn即是图G的各条边,比如 {v1,v2},{v3,v4}….。这样,就可以把求G的最小顶点覆盖归约成,求这|E|个集合的碰撞集H。其中H的大小b就是最小顶点覆盖。已知最小顶点覆盖是一个NP完全问题,所以该问题是一个NP完全问题。