您的位置:首页 > 其它

【项目实训日志四】BR-MTC问题概述及思路总结

2020-07-14 06:30 134 查看

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相连的边中,权值最小的那条边(若权值相同,则随机选取)放入备选集合VsV_sVs​。
第三步,按照从小到大的顺序,把剩余的其他边添加进备选集合,在备选集合中的边的总权值之和超过预算B之前停止。
此时我们尽量多地选取了权重较小的边,总体来看这些边能够满足平均权值较小的要求。但是此时得到的图中可能会有环,也可能不相互连通,不足以构成一棵树。所以与最优解还有很大的距离。

所以需要改进:
在第二步中把边按照从小到大的顺序添加进备选集合时,如果与集合中已有的点会组成环,则直接把这个点舍去,选取下一个点,直至备选集合中的边的总权值之和达到预算B,这样首先可以确保得到的图中没有环。
下面解决可能不相互连通的问题。此时的图中可能会有多个连通分支。设根节点r所在的连通分支为P0P_0P0​,其他k个连通分支分别为P1P_1P1​,P2P_2P2​,…,PkP_kPk​。此时遍历其他剩余边,即第二步中没有被选中加入备选集合的边,这些边的权重相对较大。仍然按照从小到大的顺序遍历这些边,当某条边满足使两个连通分支相连通(即该条边的两个端点分别在两个连通分支中),且不产生回路的条件时,将其放入备选集合,继续遍历选取其他边,直至所有连通分支相互连通,且没有环存在。显然,此时我们备选集合中的边权重总值超过了预算B,需要删除某些边。
下面选择某些边进行删除。为了使图尽可能地保持连通,我们选择较为“孤立”的点所对应的边来进行删除,所以统计度数为1的顶点,将这些顶点对应的边排序,按权值从大到小的顺序进行删除,直至“抵消”上一步中为了使各个连通分支相连而添加的边所带来的开销。由于删掉的顶点为边缘处的顶点,此时的图仍然保持连通。若此时图中度数为1的点较少,不足以满足要求,则在删除这些点的基础上再进行一轮甚至多轮删除,直至满足要求。最后我们就得到了一个联通的、边数尽量多 的子树作为问题的解。

算法分析:
该算法的思想与求解最小生成树的Kruskal算法的思想有些接近,kruskal的算法的基本思想是以边为主导地位,始终选择当前可用的最小边权的边,每次选择边权最小的边链接两个端点是kruskal的规则,并实时判断两个点之间有没有间接联通,也就是说,Kruskal算法从边出发,不断寻找当前未添加进Et的、且权值最小的边,若添加后不形成环,则添加成功;否则跳过,继续尝试添加下一条边,适合边少顶点多的图。
而此算法先不考虑是否连通的问题,为了使覆盖的顶点尽量多,直接选择权值最小的那些边作为备选,在此基础上使它们尽量连通。此算法需要遍历所有的边和顶点,当边和顶点较多时,耗费时间较多;需要多次判定是否有环存在;最后一步的删除也会有很多种可能的情况造成较大的误差。该算法仍然较为复杂,并且存在较大误差,许多细节的地方还没有考虑清楚,不够完备,难以程序实现,因此仅是个人的想法,没有一起继续在此基础上讨论设计。

近似比求解:
虽然最小生成树问题是多项式时间可解的 ,但BR-MTC问题要困难许多。该问题中权重总预算budget的大小变化不确定性为求解增加了许多困难。在为BR-MTC问题在找到一种近似算法时,想要计算其近似比也较为困难,虽然前面阅读的论文中,针对不同问题给出了许多种近似比的证明方式,但是对于本文中提到的想法,以及其他组员设计的算法,个人并没有很好的思路来求解证明近似比。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: