BR-MTC问题描述
经典的最小生成树(MST)问题是多项式时间可解的。现在考虑一个最小生成树的如下变形——给一个顶点r,要求找一棵以r为根的生成树,总的费用不超过给定预算,覆盖的顶点数目最多。这个问题可称为Budgeted Rooted Max Tree Cover问题(简记为BR-MTC问题),是一个NP困难问题。
BR-MTC问题的定义如下:
输入一个给定的加权无向图 G=(V,E),这些边的权重被定义为正整数且在树枝上满足度量的三角不等式,在图的结点中给定一个根结点 r∈V,并且给定一个最大的预算范围B。
目标:找到图 G 的一棵包含根节点r的子树,使得这棵子树的所有边的权重之和不超过 B,并且尽可能多的覆盖 G 中的顶点。
思路总结
问题分析:
由我们的问题首先想到MST最小生成树问题。最小生成树问题定义如下:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边,即包含n个顶点的,权重最小的树。而我们的BR-MTC问题则是给定预算范围,使我们找到的子树在满足总权重不大于B的情况下,覆盖的顶点N尽量多。
由于树的边数总是等于顶点数减一,那么顶点越多,则代表边数越多,在边总权重相同的情况下,要想求得覆盖尽量多顶点的字数,需要使得字数的边数尽量多,即使得求得的解的各边平均权重尽量小。
我的想法:
初步粗略想法:
第一步,遍历图中所有的边,按照边的权值从小到大排序。若有权值大于预算B的边,则直接舍去,因为若将这些边添加进来,则显然已经超出预算。
第二步,将与根节点r相连的边中,权值最小的那条边(若权值相同,则随机选取)放入备选集合 V s V_s V