开发者

Algorithm for splitting a connected graph into two components

开发者 https://www.devze.com 2023-01-22 01:26 出处:网络
Suppose I am given a weighted, connected graph. I\'d开发者_运维技巧 like to find a list of edges that can be removed from the graph leaving it split into two components and so that the sum of the weig

Suppose I am given a weighted, connected graph. I'd开发者_运维技巧 like to find a list of edges that can be removed from the graph leaving it split into two components and so that the sum of the weights of the removed edges is small. Ideally I'd like to have the minimal sum, but I'd settle for a reasonable approximation.

This seems like a hard problem. Are there any good algorithms for doing this?

If it helps, in my case the number of nodes is about 50 and the graph may be dense, so that most pairs of nodes will have an edge between them.


I think you are looking for a minimum cut algorithm. Wikipedia

Before the Edmunds-Karp algorithm came the Ford-Fulkerson algorithm. For what it's worth, the Algorithms book [Cormen, Rivest] cites these two algorithms in the chapter on graph theory.


I believe what you're looking for is an algorithm for computing the minimum cut. The Edmonds-Karp algorithm does this for flow networks (with source and sink vertices). Hao and Orlin (1994) generalize this to directed, weighted graphs. Their algorithm runs in O(nm lg(n^2/m)) for n vertices and m edges. Chekuri et al. (1997) compare several algorithms empirically, some of which have better big O's than Hao and Orlin.


I may be wrong with my idea, but Ford Fulkersonalgorithm does not find a solution for this problem, since Ford Fulkerson assumes that there are source and destination nodes, and there is an attempt to transfer a material from source to destination. Hence, the algorithm cannot calculate all possible min-cuts.

0

精彩评论

暂无评论...
验证码 换一张
取 消