Set Cover, Hitting Set and Set Packing: definitions #
The three classical problems on set systems (Karp 1972),
as decision problems on FirstOrder.Language.setSystem-structures: a universe
carrying two unary marks separating the ground elements from the sets of a
family, a binary incidence relation between them, and a third unary mark
carrying the numeric threshold k in the unary representation of
DescriptiveComplexity.Numbers.Unary (the threshold is the cardinality
Set.ncard of the marked set, order-free and isomorphism-invariant for free).
DescriptiveComplexity.SetCover: some subfamily of at mostksets covers every element;DescriptiveComplexity.HittingSet: some set of at mostkelements meets every set of the family;DescriptiveComplexity.SetPacking: some subfamily of at leastkpairwise disjoint sets exists.
They are the set-system counterparts of the clique family
(DescriptiveComplexity.Problems.CliqueFamily), and are organized the same way: the
semantics is carried by generic properties of predicates on a type –
DescriptiveComplexity.CoversOn, its transpose DescriptiveComplexity.HitsOn (elements
and sets exchanged, incidence read backwards) and DescriptiveComplexity.PacksOn –
which the isomorphism-invariance proofs and the reductions share. Set Cover
and Hitting Set being literally one property read in two directions is what
makes them inter-reducible by a single interpretation
(DescriptiveComplexity.Problems.SetFamily.Reductions), just as complementation
relates Clique and Independent Set.
Two conventions worth stating once:
- Nothing forces an element of the universe to be an element or a set, or forbids it to be both: elements outside both marks are junk that no condition mentions, which is what lets a first-order interpretation build a set system inside a tagged power of its input universe without a definable-subset mechanism. Junk marked elements would change the threshold, so interpretations remain responsible for the mark they define.
- Disjointness in
DescriptiveComplexity.PacksOnis required of the ground elements only. This is not cosmetic: the interpretation ofDescriptiveComplexity.Problems.SetFamily.FromGraphsproduces junk tuples incident to two sets each, and those must not count as witnesses of an intersection.
As with the clique family, cardinality thresholds are only meaningful on
finite structures, so finiteness of the universe is part of the yes-instances;
by DescriptiveComplexity.ComplexityClass.mem_congr_finite this does not affect
any complexity-theoretic statement.
Relation symbols of the language of set systems.
- elem : setSystemRel 1
elem a: the elementabelongs to the ground set. - fam : setSystemRel 1
fam a: the elementais one of the sets of the family. - mem : setSystemRel 2
mem a b: the ground elementabelongs to the setb. - marked : setSystemRel 1
marked a: the elementabelongs to the marked set.
Instances For
Dependency graph
Dependency graph
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The relational language of set systems: a bipartite incidence structure between ground elements and sets of a family, together with a marked subset of the universe whose cardinality serves as threshold.
Equations
- FirstOrder.Language.setSystem = { Functions := fun (x : ℕ) => Empty, Relations := FirstOrder.Language.setSystemRel }
Instances For
Dependency graph
Dependency graph
The ground-element symbol of set systems.
Instances For
Dependency graph
The family symbol of set systems.
Instances For
Dependency graph
The incidence symbol of set systems.
Instances For
Dependency graph
The mark symbol of set systems.
Instances For
Dependency graph
The generic covering property #
The property underlying both problems, for arbitrary unary predicates Ep
(ground elements), Fp (sets of the family) and Kp (marks), and an
arbitrary binary predicate Mp (incidence) on a type.
Some subfamily of the Fp-sets covers every Ep-element and is at most
as large as the number encoded by the Kp-marked elements: “some cover is at
most as large as the marked set”.
Equations
Instances For
Dependency graph
Some set of Ep-elements meets every Fp-set and is at most as large as
the number encoded by the Kp-marked elements: “some hitting set is at most
as large as the marked set”. This is DescriptiveComplexity.CoversOn with the roles
of elements and sets exchanged and the incidence relation transposed.
Equations
- DescriptiveComplexity.HitsOn Ep Fp Mp Kp = DescriptiveComplexity.CoversOn Fp Ep (fun (s x : A) => Mp x s) Kp
Instances For
Dependency graph
Some subfamily of the Fp-sets is pairwise disjoint – no Ep-element
belongs to two distinct members – and is at least as large as the number
encoded by the Kp-marked elements: “some packing is at least as large as the
marked set”.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Some subfamily of the Fp-sets covers every Ep-element exactly once:
it covers, and no element belongs to two distinct members. Unlike the three
properties above this one carries no threshold – exactness is the whole
constraint.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Exactness in the “exactly one” form: covering plus disjointness is one covering set per element.
Dependency graph
Some two-colouring of the ground elements splits every set of the
family: no set is monochromatic. Like DescriptiveComplexity.ExactlyCoversOn this
property carries no threshold.
Equations
Instances For
Dependency graph
The threshold as an injection #
On a finite universe, comparing the decoded numbers is comparing sizes, so the threshold condition can equivalently be read as the existence of an injection. This is the form the second-order definitions guess.
The cover threshold as an injection of the cover into the marked set.
Dependency graph
The hitting-set threshold as an injection of the hitting set into the marked set.
Dependency graph
The packing threshold as an injection of the marked set into the packing: a lower bound, so the injection runs the other way round.
Dependency graph
CoversOn transports along an equivalence commuting with the four
predicates.
Dependency graph
CoversOn transports along an equivalence, iff version.
Dependency graph
HitsOn transports along an equivalence, iff version.
Dependency graph
PacksOn transports along an equivalence commuting with the four
predicates.
Dependency graph
ExactlyCoversOn transports along an equivalence commuting with the three
predicates.
Dependency graph
SplitsOn transports along an equivalence commuting with the three
predicates.
Dependency graph
SplitsOn transports along an equivalence, iff version.
Dependency graph
ExactlyCoversOn transports along an equivalence, iff version.
Dependency graph
PacksOn transports along an equivalence, iff version.
Dependency graph
The two problems #
Being a ground element in a set system.
Equations
Instances For
Dependency graph
Being a set of the family in a set system.
Equations
Instances For
Dependency graph
Incidence in a set system.
Equations
Instances For
Dependency graph
Markedness in a set system.
Equations
Instances For
Dependency graph
A set system admits a cover at most as large as its marked set. (Finiteness of the universe is part of the property: cardinality thresholds are only meaningful on finite structures.)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A set system admits a hitting set at most as large as its marked set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A set system admits a packing at least as large as its marked set.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A set system admits an exact cover: a subfamily covering every ground element exactly once. There is no threshold here, so no finiteness assumption either.
Equations
Instances For
Dependency graph
A set system admits a splitting two-colouring: no set of the family is monochromatic.
Equations
Instances For
Dependency graph
Isomorphism-invariance and the bundled problems #
The set-cover threshold property is isomorphism-invariant.
Dependency graph
The hitting-set threshold property is isomorphism-invariant.
Dependency graph
The set-packing threshold property is isomorphism-invariant.
Dependency graph
The exact-cover property is isomorphism-invariant.
Dependency graph
The set-splitting property is isomorphism-invariant.
Dependency graph
SET COVER, as a problem on set systems: is there a subfamily covering every ground element, at most as large as the marked set?
Equations
- DescriptiveComplexity.SetCover = { Holds := fun (A : Type) (inst : FirstOrder.Language.setSystem.Structure A) => DescriptiveComplexity.HasSmallSetCover A, iso_invariant := ⋯ }
Instances For
Dependency graph
HITTING SET, as a problem on set systems: is there a set of ground elements meeting every set of the family, at most as large as the marked set?
Equations
- DescriptiveComplexity.HittingSet = { Holds := fun (A : Type) (inst : FirstOrder.Language.setSystem.Structure A) => DescriptiveComplexity.HasSmallHittingSet A, iso_invariant := ⋯ }
Instances For
Dependency graph
SET PACKING, as a problem on set systems: is there a pairwise disjoint subfamily at least as large as the marked set?
Equations
- DescriptiveComplexity.SetPacking = { Holds := fun (A : Type) (inst : FirstOrder.Language.setSystem.Structure A) => DescriptiveComplexity.HasLargeSetPacking A, iso_invariant := ⋯ }
Instances For
Dependency graph
EXACT COVER, as a problem on set systems: is there a subfamily covering every ground element exactly once? The marked set plays no role – exactness replaces the threshold.
Equations
- DescriptiveComplexity.ExactCover = { Holds := fun (A : Type) (inst : FirstOrder.Language.setSystem.Structure A) => DescriptiveComplexity.HasExactCover A, iso_invariant := ⋯ }
Instances For
Dependency graph
SET SPLITTING, as a problem on set systems: is there a two-colouring of the ground elements leaving no set of the family monochromatic? (Also known as hypergraph 2-colourability.)
Equations
- DescriptiveComplexity.SetSplitting = { Holds := fun (A : Type) (inst : FirstOrder.Language.setSystem.Structure A) => DescriptiveComplexity.HasSetSplitting A, iso_invariant := ⋯ }