设 G = (V,E) 为一个无向图。若一个边集 F ⊆ E 满足 G 的每个环中至少包含一条 F 中的边,则称其为反馈边集。
(a) 假设 G 是无权图。设计一个高效的算法来寻找最小大小的反馈边集。
(b) 假设 G 是带正权重的无向图。设计一个高效的算法来寻找最小权重的反馈边集。
我的解决方案(需要建议):
a) 最小大小反馈边集:由于图是无权的,我们可以使用 DFS。我们像往常一样从任何一个顶点开始 DFS。当遇到一条返祖边时,将其插入反馈边集。当 DFS 完成时,集合将是答案。
b) 最小权重反馈边集:由于图是加权的,我们可以使用 Kruskal 算法。但 Kruskal 通常从最小权重的边开始。如果我们可以取反所有边权重,并运行 Kruskal,每当我们得到一个连接同一连通分量的边时,我们就可以保存它在反馈边集中。最后,反转边权重。我建议反转边权重的原因是因为我们需要最小权重反馈集。使用取反后的权重,Kruskal 将从权重最小(实际上是最大)的边开始,并找到具有更小权重的相同连通分量的边。
可以有人告诉我这个解决方案是否正确吗?