问题来源: 算法概论课后习题8.19
问题描述
A kite is a graph on an even number of vertices, say 2n, in which n of the vertices form a clique and the remaining n vertices are connected in a “tail” that consists of a path joined to one of the vertices of the clique. Given a graph and a goal g, the KITE problem asks for a subgraph which is a kite and which contains 2g nodes. Prove that KITE is NP-complete
中文大意
风筝是在偶数个顶点上的图形,比如2n,其中n个顶点形成一个团,其余的n个顶点连接在一个“尾巴”中,尾巴由连接到该团顶点之一的路径组成。 给定一个图和一个目标g,KITE问题要求一个风筝的子图,其中包含2g节点。 证明KITE是NP-complete问题
问题分析
首先我们知道团是图的完全子图.那么,首先我们需要找出图中的符合条件的完全子图 Gn=(Vn,En) , 其中 |Vn|=g , 接着我们需要找出一条一端与之相连的路径,其长度为g. 这便是此题的基础解题思路.显然我们可以尝试将其归约为最大团问题
解决思路
首先证明其为NP问题,显然给定一个解,我们可以在多项式时间内证明它是不是正确的解.
设有图G=(V,E), 首先,我们向这个图加入|V|个新顶点,每个顶点分别与G不同的顶点连接.紧接着,对于这|V|个新顶点,我们分别向它添加一条长为|V|-1的链, 最终形成新图G’. 那么,显然我们可以确定, 假如G’中有顶点数为2g的KITE,那么G中一定有顶点数为g的团.反过来, 如果G中有顶点数为g的团, 那么G’中一定有顶点数为2g的KITE. 显然, 我们就将问题归约为了最大团问题. 而最大团问题恰恰就是NP-complete问题, 证毕.