算法概论 课后习题 8.12

8.12题目大意

输入:无向图

输出:G的一个生成树,其中所有节点度数都不超过k——如果该树存在。

请证明对任意k>=2:

(a) k-生成树问题是一个搜索问题。
(b) k-生成树问题是NP-完全的。(提示:由k=2开始,考虑该问题与Rudrata路径问题的关联)

证明

(a)

一个搜索问题的定义是:任何可能解的正确性都能快速地被验证,而快速指的是能够在多项式时间内被验证。

对于给定的一个可能解G’ = (V’, E’),需要证明一下三点:
1. V=V 点集跟原来一样
2. EE  新的边集是原来的子集
3. V’ 中的任意一个顶点,其度数都小于等于k

这个三点都可以在多项式时间内完成,因此k-生成树问题是一个搜索问题。

(b)

由(a)可知,k-生成树问题是NP问题。

k = 2时,若2-生成树存在,则该生成树是图的一条最长链,该链包含图中的所有节点。取最长链的两端节点,则该链实际为一条Rudrata路径(一条经过每个顶点恰好一次的环路),因此2-生成树问题就是Rudrata路径问题。

k>2时,同理可证k-生成树问题就是Rudrata路径问题的一种情况。(事实上,当k大于等于图中最大点度时,这个问题退化为在图上找一棵任意生成树)

因为k-生成树问题可以归约为Rudrata路径问题,而Rudrata问题是NP-完全问题,所以k-生成树问题是NP-完全问题。

 


0 条评论

发表评论