[算法概论]习题8.12

今天写了NP完全问题的习题8.12

题目如下:

The k-SPANING TREE problem is the following.

Input:An undirected graph G=(V,E)

Output:A spanning tree of G in which each node has degree <= k,if such a tree exists.

Show that for any k >= 2:
(a) k-SPANNING TREE is a search problem.

(b) k-SPANNING TREE is NP-complete.(Hint: Start with k = 2 and consider the relation between this problem and RUDRATA PATH.)


对于第一问(a),要证明k-SPANING TREE问题是一个搜索问题,其实很简单。

对于一个k-spanning tree的实例I和一个待确定的解S,S是G的一颗待确定的k生成树,要验证S是否是k生成树,只需要一一遍历S中的每个顶点,验证是否d(v) <= k 对于任意v∈S恒成立,由于v(S) = v(G),所以时间复杂度为O(v),所以S在多项式时间内是可验证的,所以k-SPANING TREE是一个搜索问题。


至于第二问(b),证明k-SPANING TREE问题是NP完全的,由于题目的hint已经给了我们思路了,所以我们从hint入手,寻找k-SPANING TREE问题和RUDRATA PATH问题的关系。

若k-SPANING TREE问题是NP完全的,则其他所有搜索问题都可以规约到它。我们先思考当k=2的情况,如果对于实例G=(V,E),若k生成树存在,则该生成树中每个顶点度数小于等于2,则该生成树是G的一条最长路,且路径P包含了G的所有顶点,且P的起点与终点的度数为1,显然当k=2时,k生成树问题就是以该生成树的起点和终点为两个端点s,v的Rudrata Path(s,v)问题。

至于当k>2时,我们可以在2-生成树G'上添加其他的边e(e∈G且e∉G')得到G的k生成树,则如果我们可以求出G的2生成树,即求出G的Rudrata Path(s,v),我们也就可以求出G的k生成树。所以综上RUDRATA PATH问题可以规约到k-SPANING TREE问题。

所以k-SPANING TREE是NP完全问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值