Proving NP-completeness by generalization. For each of the problems below, prove that it is NP-complete by showing that it is a generalization of some NP-complete problem we have seen in this chapter.

  (a) SUBGRAPH ISOMORPHISM: Given as input two undirected graphs G and H, determine whether G is a subgraph of H (that is, whether by deleting certain vertices and edges of H we obtain a graph that is, up to renaming of vertices, identical to G), and if so, return the corresponding mapping of V (G) into V (H).

  (b) LONGEST PATH: Given a graph G and an integer g, find in G a simple path of length g.

  (c) MAX SAT: Given a CNF formula and an integer g, find a truth assignment that satisfies at least g clauses.

  (d) DENSE SUBGRAPH: Given a graph and two integers a and b, find a set of a vertices of G such that there are at least b edges between them.

  (e) SPARSE SUBGRAPH: Given a graph and two integers a and b, find a set of a vertices of G such that there are atmost b edges between them.

  (f) SET COVER. (This problem generalizes two known NP-complete problems.)

  (g) RELIABLE NETWORK: We are given two n×n matrices,a distance matrix dij and a connectivity requirement matrix rij, as well as a budget b; we must find a graph G = ({1,2,…,n},E) such that (1) the total cost of all edges is b or less and (2)between any two distinct vertices i and j there are rij vertex-disjoint paths. (Hint: Suppose that all dij’s are 1 or 2, b = n,and all rij’s are 2. Which well known NP-complete problem is this ?)

  

用一般的方法证明NP完全:利用推广的方法证明NP-完全性。对以下每个问题请通过证明它是本章某个NP-完全问题的推广说明它是NP-完全

的。

  (a)子图同构:给定两个作为输入的无向图G和H,判断G是否为H的一个子图(即删除H中的某些顶点或边后,所得的新图最多只需再修改某些顶点的名称,即可与G相同),且如果是,返回由V(G)到V(H)相关映射。

  (b)最长路径:给定图G和整数g,求G中一条长为g的简单路径。

  (c)最大SAT:给定一个CNF公式和整数g,求满足其中至少g个子句的真赋值。

  (d)稠密子图:给定一个图和两个整数a和b,求G中的a个顶点,使得它们之间最少有b条边。

  (e)稀疏子图:给定一个图和两个整数a和b,求G中的a个顶点,使得它们之间最多有b条边。

  (f)集合覆盖。(该问题衍生了两个著名的NP-完全问题。)

  (g)可靠网络:给定两个nxn的矩阵,一个距离矩阵dij,一个连接需求矩阵rij以及预算b。我们要求一个图G=({1,2,……,n},E)

    使得:

      (1)其中所有边的总代价不超过b;

      (2)在任意两个不同的顶点i和j之间,存在rij条顶点互不相交的路径。

      (提示:假设所有dij都为1和2,b=n,所有的rij=2。这属于哪个著名的NP-完全问题?)

证明:

(a)子图同构:

  令图G 为一个环,环上的顶点数等于图H 的顶点数。那么若G 是H 的同构子图,则说明H 存在Rudrata 回路(经过图中每个顶点有且仅有一次的回路)。所以可以判断Rudrata回路事实上是子图同构问题的一个特例。所以子图同构是Rudrata回路的推广。

(b)最长路径:

  如果令g = V −1,即得到一条Rudrata 路径(经过图中每个顶点有且仅有一次的回路)。所以Rudrata路径可以看做是该问题的一个特例。

(c)最大SAT:

  令g为子句的总数,即成SAT问题,所以最大SAT为SAT问题的一个推广。

(d)稠密子图:

  令b=a(a-1)/2,此时这a 个顶点两两相连,于是即成最大团问题(图中的每个顶点间均有边相连)。

(e)稀疏子图:

  令b = 0,即成最大独立集问题(一个顶点集合中的任意两个顶点间均没有边相连)。

(f)集合覆盖。

  集合覆盖问题是指:包含一个集合U以及U内元素构成的若干各小类集合S,目标是找到S 的一个子集,该子集满足所含元素包含了所有的元素且使小类集合个数最少。

  如果使U为图中边的集合E,E中元素构成的Si为与顶点i相邻的所有边。这样,集合覆盖问题就转化为了最小顶点覆盖问题。因此集合覆盖问题实际上是最小顶点覆盖问题的推广,故而集合覆盖问题是NP-完全的。

(g)可靠网络:

  根据提示,可以联系到TSP问题。dij为1时表示两个城市有边,dij为2时表示两个城市没有边;预算b为城市的数目,rij为2,说明任意两点在一个环上。这样,可靠网络问题就转化为了TSP问题。因此可靠网络问题实际上是TSP问题的推广,故而可靠网络问题是NP-完全的。

Proving NP-completeness的更多相关文章

  1. 证明与计算(1): Decision Problem, Formal Language L, P and NP

    0x01 从判定问题到形式语言 这篇讲知识证明的wiki([1]): https://en.wikipedia.org/wiki/Proof_of_knowledge 里面有一句话: Let x be ...

  2. P、NP、NPC和NP-Hard相关概念的图形和解释

    P.NP.NPC和NP-Hard相关概念的图形和解释 http://blog.csdn.net/huang1024rui/article/details/49154507 一.相关概念 P: 能在多项 ...

  3. 算法复习-P NP NPC NP-hard概念

    from http://blog.csdn.net/huang1024rui/article/details/49154507 P.NP.NPC和NP-Hard相关概念的图形和解释 一.相关概念 P: ...

  4. 转载 什么是P问题、NP问题和NPC问题

    原文地址http://www.matrix67.com/blog/archives/105 这或许是众多OIer最大的误区之一.    你会经常看到网上出现“这怎么做,这不是NP问题吗”.“这个只有搜 ...

  5. HDU1760 A New Tetris Game NP态

    A New Tetris Game Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  6. P与NP问题

    Polynomial Nondeterministic Polynomial P问题: 一个问题可以在多项式时间复杂度内解决 NP问题: 一个问题可以在多项式时间内证实或者证伪 NP-Hard问题: ...

  7. 浅谈P NP NPC

    P问题:多项式时间内可以找到解的问题,这个解可以在多项式时间内验证. NP问题:有多项式时间内可以验证的解的问题,而并不能保证可以在多项式时间内找到这个解. 比如汉密尔顿回路,如果找到,在多项式时间内 ...

  8. (数学)P、NP、NPC、NP hard问题

    概念定义: P问题:能在多项式时间内解决的问题: NP问题:(Nondeterministic Polynomial time Problem)不能在多项式时间内解决或不确定能不能在多项式时间内解决, ...

  9. P,NP,NP_hard,NP_complete问题定义

    背景:在看李航的<统计学习方法时>提到了NP完全问题,于是摆之. 问题解答:以下是让我豁然开朗的解答的摘抄: 最简单的解释:P:算起来很快的问题NP:算起来不一定快,但对于任何答案我们都可 ...

随机推荐

  1. Scala实战高手****第10课:Scala继承彻底实战和Spark源码鉴赏

    isInstanceOf  和 asInstanceOf is用于判断 as用于转换,把父类类型转换成子类类型   getClass 具体找出类型    

  2. C# 使用 System.Web.Script.Serialization 解析 JSON

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...

  3. linux之cat,more,less,head,tail

    http://lionbule.iteye.com/blog/663549 1.cat # cat /etc/profile 注:查看/etc/目录下的profile文件内容: # cat -b /e ...

  4. 笔记:git基本操作

    原文: http://www.cnblogs.com/pingwen/p/8098035.html 1. 快速入门的基本概念 相比SVN,TFS等集中式的版本管理系统,GIT分布式管理最重要的理念是本 ...

  5. 自定义WebViewPage,实现Url.Action生成绝对地址

    前言 运营部门一直对公司官网SEO有意见,认为做得不好(说得好像运营做不好都是seo似的).为此两部门老大还闹到CEO那去了. 也因为这事,工作计划终于排上日程.沟通一番后得知有如下几点需求: 1.所 ...

  6. git相关知识:如何避免某些文件无需提交

    查看所有命令 git help -a 查看所有概念解释 git help -g 某个命令的具体帮助信息 git help command 如何避免某些文件无需提交? 合作开发时个人的约定的不上传的文件 ...

  7. ubuntu14.04使用samba共享文件

    samba是linux中常用的共享文件的软件 ubuntu12.04及以上版本中已经安装了samba 开始配置: samba配置文件: /etc/samba/smb.conf可以修改配置文件来设置sa ...

  8. Jquery获取当前行的数据

    取表格当前行数据js代码: Java代码 $(function() { $(".myclass").each(function(){     var tmp=$(this).chi ...

  9. JSON,字符串,MAP转换

    package com.tree.autotest.testcase.IAuditBillDetailService; import com.alibaba.fastjson.JSON;import ...

  10. iOS 带IAP提交注意事项及无法submit for review的解决方案

    原地址:http://blog.sina.com.cn/s/blog_71ce775e0101dl4a.html 最近项目接触到了苹果的程序内购(IAP),碰到不少问题,参考了很多帖子才得以解决.在此 ...