Laminar families and crossing bipartitions of finite sets #
Two finite sets are nested or disjoint if one contains the other or they do not meet. Two bipartitions cross if all four intersections of their sides are nonempty. Choosing the side avoiding a fixed root identifies pairwise non-crossing bipartitions with laminar families.
Main declarations #
Finset.NestedOrDisjoint: the relation defining laminar families.Finset.Crosses: crossing of the bipartitions determined by two finite sets.Finset.sideAvoiding: the side of a bipartition avoiding a chosen root.Finset.pairwise_nestedOrDisjoint_image_sideAvoiding: the root convention for a family.
References #
- B. Korte and J. Vygen, Combinatorial Optimization: Theory and Algorithms, Section 8.6.
- D. Gusfield, Very Simple Methods for All Pairs Network Flow Analysis, SIAM J. Comput. 19 (1990), 143–155.
Laminar and crossing cuts #
A family of sets is laminar when its members are pairwise nested or disjoint. Two cuts, viewed as bipartitions, cross when each side of one meets each side of the other. Choosing for every cut its side avoiding a fixed root vertex turns a pairwise non-crossing family of cuts into a laminar family. This lets uncrossing arguments for symmetric set functions work with laminar families.
Two sets are nested or disjoint when one contains the other or they do not meet. A family is laminar when its members are pairwise nested or disjoint.
Instances For
Two sets are nested or disjoint exactly when one contains the other or they do not meet.
A set is nested with every superset.
A set is nested with every subset.
Disjoint sets are nested or disjoint.
Being nested or disjoint is a symmetric relation.
Being nested or disjoint is a symmetric relation.
Intersecting two sets preserves being nested with or disjoint from a third set.
The union of two meeting sets is nested with or disjoint from every set that is nested with
or disjoint from both of them. Without a common element this fails: {1} and {2} are nested
with or disjoint from {1, 3}, but {1, 2} is not.
Two cuts (S, Sᶜ) and (T, Tᶜ) cross when each side of one meets each side of the other.
Instances For
Crossing depends only on the bipartition, not on the side chosen for the first cut.
Crossing depends only on the bipartition, not on the side chosen for the second cut.
Nested or disjoint sets do not cross.
Root convention. Two sets avoiding a common vertex do not cross exactly when they are nested or disjoint: their union cannot cover all vertices.
The side of the cut (S, Sᶜ) not containing the root vertex r.
Instances For
The side avoiding the root does not contain it.
A vertex lies in the side avoiding the root exactly when it lies on the opposite side of the cut from the root.
A side not containing the root is its own side avoiding the root.
The side avoiding the root of a side containing it is the complement.
Both sides of a cut have the same side avoiding the root.
Replacing the first cut by its side avoiding the root does not affect crossing.
Replacing the second cut by its side avoiding the root does not affect crossing.
Root convention. Representing each cut of a pairwise non-crossing family by its side avoiding a fixed root vertex gives a laminar family.