我试图解决一个基本上减少的问题:
给出一组 N 节点,编号从1到N和 M 边缘,其中 N <10000 和 M <100000 ,
找到边缘(u,v),当添加到图表中时,最大限度地减少图表中的桥梁数量。
如果有有很多这样的边缘 - 打印具有最低词典值的那个。
这个问题的高效方法是什么?
答案 0 :(得分:8)
我相信这个问题很难。这里将概述我能想到的解决方案:
1)查找图中的所有桥梁。
2)现在想象桥梁是图中唯一的边缘。您只保留网桥并加入大节点中网桥之间的所有节点。
3)你现在有了一棵树。边缘是桥梁,节点是大节点&#34;结合上一个图表中的节点。
4)让我们调用这个森林图T。
5)连接图T中的任意两个节点,创建一个循环。循环中的任何边缘都不是桥梁。
6)第5点意味着通过创建尽可能长的循环来找到解决方案。您只需找到两个距离最长的节点就可以做到这一点。
7)您可以在图表中找到距离最远的节点。这里讨论的内容如下: A linear-time algorithm for finding the longest distance between two nodes in a free tree?
如果有任何意见需要进一步解释,请告诉我。