我有一个连接的无向图。怎样才能使双边连接增加最小边数?
我尝试在网上搜索这个特殊的算法,并尝试自己思考,但无法弄清楚任何事情。伪代码会很棒。谢谢!
答案 0 :(得分:1)
搜索minimum cut:如果它等于2,那么你很好,如果它是1 - 在切割的两边之间添加边缘。冲洗并重复。
答案 1 :(得分:1)
您的问题被称为双向增强问题。计算复杂度根据图的类型(边加权,未加权,有向,无向)而变化。我相信对于无向图,它是O(V+E)
非常好。但是,该算法似乎非常复杂。如果你真的不关心额外边缘的绝对最小数量,你可以相当容易地找到双连通组件,只需为每个双连通组件增加一个额外的边(比如星形图案)减去星的中心。添加边缘仍然存在一些条件。有关讨论,请参阅http://www.cs.utexas.edu/~vlr/papers/bi_aug.ps。我确信有更多最新的参考资料,但很难找到这个问题的细节。
我还在Tsan-sheng Hsu,Journal of Algorithms 45,1,2002年10月,第55-71页中找到了参考文献“Simpler and fast biconnectivity augmentation”。作者将他的方法描述为“非常简单”。伪代码在下面。
Input: A graph G = (V , E);
Output: A smallest set of edges aug2(G) such that G ∪ aug2(G) is biconnected;
1. If G has less than 3 vertices or is biconnected, then return ∅.
2. If G is disconnected, then apply Fact 3.2 to find a set of edges E1 such that G ∪ E1 is connected;
otherwise, let E1 = ∅.
3. Find a vertex r in blk2(G ∪ E1) such that blk2(G ∪ E1) rooted at r is normalized.
4. If r is a b-node, then do the following:
(a) Apply Lemma 3.4 on G ∪ E1 to find a set of edges E2.
(b) Return E1 ∪ E2.
5. If r is a c-node, then do the following:
(a) If G ∪ E1 is not balanced, then apply Fact 3.6 on G ∪ E1 to find a set of edges E3 such that
G ∪ E1 ∪ E3 is balanced; otherwise, let E3 = ∅.
(b) Root blk2(G ∪ E1 ∪ E3) at r.
(c) Apply Lemma 3.9 on G ∪ E1 ∪ E3 to find a set of edges E4.
(d) Return E1 ∪ E3 ∪ E4.
可悲的是,为了使用它,您需要知道所有定义(b节点,c节点,blk2,事实3.6等等)。也许你现在可以找到一个实现,你有一些关键字。