Flow-equivalent trees and cut trees #
Let f be a set function on a finite vertex type, with minimum cut values
λ(s, t) = pairMinimumValue f s t. A tree T on the same vertex type with edge weights w is
flow-equivalent for f when, for any two distinct vertices, λ(s, t) is the minimum weight on
the tree path from s to t. It is a cut tree (a Gomory–Hu tree) when moreover, for every
tree edge s(u, v), the side of u left by deleting that edge is a minimum u–v cut.
This file develops what these properties give, independently of how such a tree is constructed:
IsFlowEquivalentTree.reachable_deleteEdges_iff: the threshold partition. Deleting the tree edges of weight belowkleavessandtconnected exactly whens = tork ≤ λ(s, t).IsCutTree.isMinimum_edgeSide_of_mem_edges: the query theorem. A minimum-weight edge on the tree path fromstotyields a minimums–tcut by deleting that edge.IsCutTree.apply_edgeSide_le: deleting a tree edge of minimum weight gives a side that minimizesfamong all sets separating two vertices, with value that minimum weight.IsFlowEquivalentTree.card_image_pairMinimumValue_le: the minimum cut values between distinct vertices take at most|V| - 1distinct values, since each is a tree-edge weight.IsCutTree.of_isMinimum_edgeSide: a tree whose edges all leave minimum cuts between their ends is a cut tree for the weights given by those minimum cut values.
Neither property assumes symmetry or submodularity of f. The results here take the tree as
given; for symmetric submodular f, a cut tree always exists by the Gomory–Hu theorem
TauCeti.TerminalCut.exists_isCutTree.
References #
- R. E. Gomory and T. C. Hu, Multi-terminal network flows, J. SIAM 9 (1961), 551–570.
- D. Gusfield, Very Simple Methods for All Pairs Network Flow Analysis, SIAM J. Comput. 19 (1990), 143–155.
- B. Korte and J. Vygen, Combinatorial Optimization: Theory and Algorithms, Section 8.6.
A tree T on the vertex type with edge weights w is flow-equivalent for f when the minimum
cut value between any two distinct vertices is the minimum weight on the tree path between them.
Only the weights of tree edges matter.
- isTree : T.IsTree
The graph is a tree.
- le_weight ⦃s t : V⦄ ⦃p : T.Walk s t⦄ (hp : p.IsPath) ⦃e : Sym2 V⦄ (he : e ∈ p.edges) : pairMinimumValue f s t ≤ w e
Every edge on a tree path weighs at least the minimum cut value between its ends.
- exists_weight_eq ⦃s t : V⦄ (hst : s ≠ t) ⦃p : T.Walk s t⦄ (hp : p.IsPath) : ∃ e ∈ p.edges, w e = pairMinimumValue f s t
Some edge on a tree path between distinct vertices attains the minimum cut value.
Instances For
The weight of a tree edge is the minimum cut value between its ends.
Threshold partition. Deleting the tree edges of weight below k leaves two vertices
connected exactly when they are equal or their minimum cut value is at least k.
Any set separating two vertices has value at least the weight of some tree edge.
The minimum cut values between distinct vertices take at most |V| - 1 distinct values,
since each is the weight of a tree edge.
A cut tree, or Gomory–Hu tree, for f: a flow-equivalent tree in which, for every tree edge
s(u, v), the side of u left by deleting that edge is a minimum u–v cut.
- exists_weight_eq ⦃s t : V⦄ (hst : s ≠ t) ⦃p : T.Walk s t⦄ (hp : p.IsPath) : ∃ e ∈ p.edges, w e = pairMinimumValue f s t
Deleting a tree edge leaves a minimum cut between its ends.
Instances For
A tree is a cut tree as soon as deleting any of its edges leaves a minimum cut between the ends of that edge, with the edge weighted by their minimum cut value: flow-equivalence then follows from the ultrametric inequality along tree paths.
The side left by deleting a tree edge has value equal to the weight of that edge.
Query theorem. If s(u, v) has minimum weight on the tree path from s to t, and s
lies on the side of u, then that side is a minimum s–t cut. Since the two sides of a tree
edge cover the vertices, one of the orientations (u, v) and (v, u) applies.
Global minimum cut. Deleting a tree edge of minimum weight gives a side whose value is at most that of every set separating two vertices.
A minimum-weight edge of a cut tree leaves a side minimizing the set function among all nonempty proper vertex sets.