算法设计课作业证明题
2017-07-03 11:36
169 查看
题目:8.15
题目描述:证明求两个图的最大公共子图是NP完全问题。
证明:
最大公共子图问题是给定两个图,要求去掉一些点后,两个图都得到一个节点数至少为b的子图,且两个子图完全相同。
首先假设最大公共子图存在且给出了子图的顶点是哪几个,那么可以在多项式时间内检验出这个解是否正确,所以最大公共子图问题是NP问题,接下来只需要证明它是NP难的,就可以证明它是NP完全问题。
我们已经知道求图的具有b个顶点的独立集的问题是一个NP完全问题,只要我们可以从求独立集的问题规约到求最大公共子图的问题,就可以证明最大公共子图问题也是NP难的。
求G1的顶点数至少为b的独立集的问题可以规约到上述的最大公共子图问题,具体证明如下:
首先我们给定两个图G1=(V,E),G2=(V,∅),其中两个图的顶点集是相同的,但是第二个图的边集为空,我们求这两个图的节点数至少为b的最大公共子图。规约的证明如下:
(1)如果上述两个图存在节点数为b的最大公共子图,那么这b个节点就是图的独立集。利用反证法,假如这b个节点不是独立集,也就是说其中两个节点有边相连,那么在G1的子图中这两点之间必然有边相连,但是G2中边集为空,也就是说这两点没有边相连,与它们是公共子图矛盾,所以只要上述两个图存在节点数为b的最大公共子图,那么这b个节点就是图的独立集。
(2)如果G1有节点数为b的独立集,那么只要G1和G2都只取这b个点作为它们的子图,由于G1中各个点之间都没有边相连,否则它们就不是独立集,而G2中本来边集就为空,所以两个子图都只要b个点而没有边,显然这两个子图是完全相同的,也就是说这两个图也有节点数为b的公共子图。
从上述证明可以知道,求图的独立集问题是可以规约到求最大公共子图问题上的,所以最大公共子图问题也是NP完全问题。
题目描述:证明求两个图的最大公共子图是NP完全问题。
证明:
最大公共子图问题是给定两个图,要求去掉一些点后,两个图都得到一个节点数至少为b的子图,且两个子图完全相同。
首先假设最大公共子图存在且给出了子图的顶点是哪几个,那么可以在多项式时间内检验出这个解是否正确,所以最大公共子图问题是NP问题,接下来只需要证明它是NP难的,就可以证明它是NP完全问题。
我们已经知道求图的具有b个顶点的独立集的问题是一个NP完全问题,只要我们可以从求独立集的问题规约到求最大公共子图的问题,就可以证明最大公共子图问题也是NP难的。
求G1的顶点数至少为b的独立集的问题可以规约到上述的最大公共子图问题,具体证明如下:
首先我们给定两个图G1=(V,E),G2=(V,∅),其中两个图的顶点集是相同的,但是第二个图的边集为空,我们求这两个图的节点数至少为b的最大公共子图。规约的证明如下:
(1)如果上述两个图存在节点数为b的最大公共子图,那么这b个节点就是图的独立集。利用反证法,假如这b个节点不是独立集,也就是说其中两个节点有边相连,那么在G1的子图中这两点之间必然有边相连,但是G2中边集为空,也就是说这两点没有边相连,与它们是公共子图矛盾,所以只要上述两个图存在节点数为b的最大公共子图,那么这b个节点就是图的独立集。
(2)如果G1有节点数为b的独立集,那么只要G1和G2都只取这b个点作为它们的子图,由于G1中各个点之间都没有边相连,否则它们就不是独立集,而G2中本来边集就为空,所以两个子图都只要b个点而没有边,显然这两个子图是完全相同的,也就是说这两个图也有节点数为b的公共子图。
从上述证明可以知道,求图的独立集问题是可以规约到求最大公共子图问题上的,所以最大公共子图问题也是NP完全问题。
相关文章推荐
- 算法分析与设计的作业:“基于FMM的分词系统”
- --算法分析与设计--课程作业--【顺序统计】--【采用链表法散列表】--【开放地址法(双重散列)】
- 算法设计作业5
- 算法结构与设计基础作业第九周
- 算法结构与设计基础作业第八周
- 动态规划;多边形游戏;类似圈型石头合并;算法设计分析作业;
- 2017 程序设计实习之C++部分作业题汇总 - H:STL 容器与算法
- 算法设计作业7
- 算法设计与结构基础作业第五周
- 算法设计作业2
- 结对作业——电梯调度算法的实现与测试之需求分析与算法设计
- 算法与设计分析作业2(动态规划)
- 算法分析与设计第一次作业
- 算法设计与结构基础作业第六周
- 算法设计与应用基础作业(三)
- 算法设计和数据结构学习_1(一道堆排序作业题)
- 算法与设计分析作业(分治)
- 算法设计与应用基础作业(一)
- 算法设计——问一个算法题(算法导论的作业题) (转载自水木清华Programming)
- 算法结构与设计基础作业第十一周