《算法概论》习题8.10
来源:互联网 发布:人工智能能产生意识吗 编辑:程序博客网 时间:2024/05/17 06:05
8.10. 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 edgeso f 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,findi n 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 ?)
8.10 利用推广的方法证明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)可靠网络:给定两个n x n矩阵,一个距离矩阵dij,一个连接需求矩阵rij以及预算b。我们要求一个图G=({1,2,3...,n},E)使得:(1)其中所有边的总代价不超过b;(b)在任意两个不同的顶点i和j之间,存在rij条顶点互不相交的路径。(提示:假设所有dij都为1或2,b=n,所有的rij = 2.想一下这会是哪个著名的NP-完全问题?)
证明:
(a) 令图G 为一个环,环上的顶点数等于图H 的顶点数。那么若G 是H 的同构子 图,则说明H 存在 Rudrata 回路。于是知 Rudrata 回路事实上是子图同构问题的 一个特例。
(b) 如果令 g =|V|−1,即得到一条 Rudrata 路径。
(c) 令 g 为子句的总数,即成 SAT。
(d) 令b=a*(a-1)/2,此时这a个顶点两两相连,于是即成大团问题。
(e) 令 b = 0,即成大独立集问题。
(f) 显然是小顶点覆盖的一个推广。
(g) Hint 中所描述的特例即是一个 TSP。
- 《算法概论》习题8.10
- 《算法概论》习题解答 8.10
- 《算法概论》习题8.8
- 《算法概论》习题8.12
- 《算法概论》习题8.19
- 《算法概论》习题8.20
- 《算法概论》习题8.3
- 《算法概论》 习题8.8
- 《算法概论》 习题8.9
- 算法概论习题证明
- 算法概论课后习题
- 《算法概论》习题8.22
- 算法概论习题8.14
- 算法概论习题8.8
- [算法概论]习题8.12
- 算法概论 习题8.16
- 算法概论 习题8.20
- 算法设计 《算法概论》第八章 8.10 习题解答
- Python爬虫学习之爬美女图片
- HDU 6030 Happy Necklace (递推+矩阵快速幂)
- 贝塞尔曲线扫盲
- C语言读取文件内容
- 欧几里得 与 扩展欧几里得
- 《算法概论》习题8.10
- Hive内部表、外部表、分区表介绍
- codevs 1907 方格取数 网络流
- font-awesome的使用及其属性content
- 文章/网站分享工具——百度分享
- 基本算法之插入排序
- Android性能优化之使用线程池处理异步任务
- 各类运算符优先级
- 【Java基础之多线程】代码库(二)