Gomory–Hu trees of set functions #
A set function f : Finset V → β on a finite ground set V assigns a value to every cut. A set
X is a minimum s–t cut of f (IsMinCutBetween f s t X) when it contains s, misses t,
and minimizes f among such sets. The cut function X ↦ w(δ(X)) of an undirected graph with edge
weights w is the motivating example; it is symmetric (f Xᶜ = f X) and submodular.
A Gomory–Hu tree (cut-equivalent tree) of f ([GH61]; [Sch03],
Section 15.4) is a spanning tree T on V such that for every tree edge uv, the side of T - uv
containing u is a minimum u–v cut of f. This module defines Gomory–Hu trees, using the
sides of tree edges SimpleGraph.edgeSide
(CslibFrontier.Foundations.Combinatorics.SimpleGraph.EdgeSide), and proves that for every two
distinct vertices s, t, some edge on the s–t path of a Gomory–Hu tree has a side that is a
minimum s–t cut. Existence of Gomory–Hu trees for symmetric submodular functions is in
CslibFrontier.Algorithms.Lean.GomoryHu.Existence, and the weighted-graph instance in
CslibFrontier.Algorithms.Lean.GomoryHu.WeightedCut.
Main definitions #
Cslib.Algorithms.Lean.GomoryHu.IsMinCutBetween:Xis a minimums–tcut off.Cslib.Algorithms.Lean.GomoryHu.IsGomoryHuTree: a spanning tree whose edge sides are minimum cuts between the edge's endpoints.
Main results #
Cslib.Algorithms.Lean.GomoryHu.exists_isMinCutBetween: minimum cuts exist between distinct elements, for values in a linear order.Cslib.Algorithms.Lean.GomoryHu.IsMinCutBetween.inter,Cslib.Algorithms.Lean.GomoryHu.IsMinCutBetween.union,Cslib.Algorithms.Lean.GomoryHu.IsMinCutBetween.sdiff: uncrossing of minimum cuts for a submodular function.Cslib.Algorithms.Lean.GomoryHu.IsGomoryHuTree.exists_isMinCutBetween_of_isPath: some edge of thes–tpath of a Gomory–Hu tree has a side that is a minimums–tcut.
References #
Minimum cuts between two elements #
For a symmetric set function, the complement of a minimum s–t cut is a minimum t–s
cut.
For a symmetric set function, a minimum s–t cut is no larger than any set separating s
from t, in either direction.
Minimum cuts exist between distinct elements of a finite ground set.
Uncrossing. For a submodular f, if U is a minimum s–t cut, a ∈ U, and X is a
minimum a–b cut missing t, then X ∩ U is a minimum a–b cut too.
Uncrossing by union. For a submodular f, if U is a minimum s–t cut, A is a
minimum a–t cut and a ∈ U, then U ∪ A is a minimum s–t cut too.
Uncrossing by difference. For a symmetric submodular f, if U is a minimum s–t
cut, A is a minimum a–t cut, a ∉ U and s ∉ A, then U \ A is a minimum s–t cut
too.
Gomory–Hu trees #
A Gomory–Hu tree (cut-equivalent tree) of a set function f on the finite ground set V
([GH61]; [Sch03], Section 15.4): a spanning tree T on V such that for every
tree edge uv, the side of T - uv containing u is a minimum u–v cut of f.
- isTree : T.IsTree
Tis a spanning tree onV. - isMinCutBetween_edgeSide ⦃u v : V⦄ : T.Adj u v → IsMinCutBetween f u v (T.edgeSide u v)
For each tree edge
uv, the side ofT - uvcontaininguis a minimumu–vcut.
Instances For
Minimum cuts along a Gomory–Hu tree path. For distinct s and t, some dart of the
s–t path in a Gomory–Hu tree has a side that is a minimum s–t cut.