问题描述:
无向图 G = (V, E) 的反馈边集 E' 是边集 E 的一个子集,该子集与图中所有的环相交。因此,移除 E' 中的边将使得 G 无环。
请对如下问题给出一个高效的算法。
输入:具有正边权重 we 的无向图 G = (V, E)。
输出:一个反馈边集 E‘ E,使其权重和最小。
❗算法描述❗:
题目要求输出的反馈边集总权重最小,即该无向图的生成树的边总权重最大。
将Kruskal算法进行改动:
Kruskal算法先将全部边按照权值大小进行排序,然后按权值从小到大的顺序考虑每条边,来构成最小生成树。在这道题中,按权值从大到小的顺序考虑每条边构成最大生成树,之后用总边集减去最大生成树的边集,就是总权重最小的反馈边集。
❗涉及知识点❗:
① Kruskal算法;
② 并查集(推荐《啊哈算法》中的讲解,很详细很容易懂,书上也有源码&#x