Gomory–Hu tree
In combinatorial optimization, the Gomory–Hu tree[1] of an undirected graph with capacities is a weighted tree that represents the minimum s-t cuts for all s-t pairs in the graph. The Gomory–Hu tree can be constructed in Template:Abs − 1Script error: No such module "Check for unknown parameters". maximum flow computations. It is named for Ralph E. Gomory and T. C. Hu.
Definition
Let be an undirected graph with being the capacity of the edge respectively.
- Denote the minimum capacity of an Template:Mvar-Template:Mvar cut by for each .
- Let be a tree, and denote the set of edges in an Template:Mvar-Template:Mvar path by for each .
Then Template:Mvar is said to be a Gomory–Hu tree of Template:Mvar, if for each
where
- are the two connected components of , and thus forms an Template:Mvar-Template:Mvar cut in Template:Mvar.
- is the capacity of the cut in Template:Mvar.
Algorithm
Gomory–Hu Algorithm
- Input: A weighted undirected graph
- Output: A Gomory–Hu Tree
- Set
- Choose some with Template:Abs ≥ 2Script error: No such module "Check for unknown parameters". if such Template:Mvar exists. Otherwise, go to step 6.
- For each connected component let
- Let
- Contract the components to form where:
- is the capacity function, defined as:
- Choose two vertices s, t ∈ XScript error: No such module "Check for unknown parameters". and find a minimum s-tScript error: No such module "Check for unknown parameters". cut (A′, B′)Script error: No such module "Check for unknown parameters". in Template:Mvar.
- Set
- Set
- For each do:
- Set if otherwise set
- Set
- Set
- Set
- Set
- Go to step 2.
- For each do:
- Replace each by Template:Mvar and each by (u, v)Script error: No such module "Check for unknown parameters".. Output Template:Mvar.
Analysis
Using the submodular property of the capacity function Template:Mvar, one has Then it can be shown that the minimum s-tScript error: No such module "Check for unknown parameters". cut in Template:Mvar is also a minimum s-tScript error: No such module "Check for unknown parameters". cut in Template:Mvar for any s, t ∈ XScript error: No such module "Check for unknown parameters"..
To show that for all for some p ∈ PScript error: No such module "Check for unknown parameters"., q ∈ QScript error: No such module "Check for unknown parameters". throughout the algorithm, one makes use of the following lemma,
- For any Template:Mvar in Template:Mvar,
The lemma can be used again repeatedly to show that the output Template:Mvar satisfies the properties of a Gomory–Hu Tree.
Example
The following is a simulation of the Gomory–Hu's algorithm, where
- green circles are vertices of T.
- red and blue circles are the vertices in G'.
- grey vertices are the chosen s and t.
- red and blue coloring represents the s-t cut.
- dashed edges are the s-t cut-set.
- A is the set of vertices circled in red and B is the set of vertices circled in blue.
| G' | T | |
|---|---|---|
| File:Gomory–Hu G.svg | File:Gomory–Hu T.svg | |
| ||
| 1. | File:Gomory–Hu Gp1.svg | File:Gomory–Hu T1.svg |
| ||
| 2. | File:Gomory–Hu Gp2.svg | File:Gomory–Hu T2.svg |
| ||
| 3. | File:Gomory–Hu Gp3.svg | File:Gomory–Hu T3.svg |
| ||
| 4. | File:Gomory–Hu Gp4.svg | File:Gomory–Hu T4.svg |
| ||
| 5. | File:Gomory–Hu Gp5.svg | File:Gomory–Hu T5.svg |
| ||
| 6. | ||
| ||
Implementations: Sequential and Parallel
Gusfield's algorithm can be used to find a Gomory–Hu tree without any vertex contraction in the same running time-complexity, which simplifies the implementation of constructing a Gomory–Hu Tree.[2]
Andrew V. Goldberg and K. Tsioutsiouliklis implemented the Gomory-Hu algorithm and Gusfield algorithm, and performed an experimental evaluation and comparison.[3]
Cohen et al. report results on two parallel implementations of Gusfield's algorithm using OpenMP and MPI, respectively.[4]
Related concepts
In planar graphs, the Gomory–Hu tree is dual to the minimum weight cycle basis, in the sense that the cuts of the Gomory–Hu tree are dual to a collection of cycles in the dual graph that form a minimum-weight cycle basis.[5]
See also
References
<templatestyles src="Reflist/styles.css" />
Script error: No such module "Check for unknown parameters".
- Script error: No such module "citation/CS1".