Theorem 2.3 — the unweighted algorithm covers with
ProvedOnlineSetCover.Unweighted.theorem_2_3Let a set-cover instance have a ground set of elements and sets, all of unit cost. Let be any sequence of elements given by the adversary (the set of given elements), and let be any family of sets covering every element of . Then:
- the unweighted online algorithm of Section 2 has a run on (at every arrival an admissible choice exists), and
- every run of the algorithm on ends with a cover that is a feasible cover of (every element of lies in some member of ) and satisfies
In particular the algorithm is -competitive for unweighted online set cover: the paper writes , and its proof yields the explicit bound above (Lemma 2.1 times Lemma 2.2).
Formalization Note The paper writes ; the proof yields the constant , where is the paper's "" sets per augmentation (natural logarithm, rounded up) and . The hypothesis is the paper's tacit assumption behind : for no set may be added and the arriving element stays uncovered. Since the algorithm's choice in step 2(c) is not determined, it is a relation, and part 1 (existence of a run) is part of the statement. Arrival lists may repeat elements.
import Mathlib import Definitions.Def_OnlinePrimalDual_OnlineSetCover_SetCoverInstance import Definitions.Def_OnlinePrimalDual_OnlineSetCover_coveredBy import Definitions.Def_OnlineSetCover_Unweighted_Algorithm open OnlinePrimalDual.OnlineSetCover
namespace OnlineSetCover.Unweighted
/-- Theorem 2.3 (Alon et al. 2009, p. 364), with the explicit constant of its proof. Let the
instance have `n ≥ 2` elements and `m` sets, let `σ` be an arrival list and `OPT` any family of
sets covering every element of `σ`. Then
(a) the unweighted algorithm has a run on `σ` (an admissible choice exists at every step), and
(b) every run ends with a cover `𝒞` that covers every element of `σ` and satisfies
`|𝒞| ≤ ⌈4 ln n⌉ · |OPT| · (log₂ m + 2)`. -/
theorem theorem_2_3 {E T : Type*} [Fintype E] [Fintype T] [DecidableEq T]
(inst : SetCoverInstance E T) (hn : 2 ≤ Fintype.card E)
(σ : List E) (OPT : Finset T) (hOPT : ∀ j ∈ σ, coveredBy inst OPT j) :
(∃ (s : State T) (a : ℕ), Run inst σ s a) ∧
∀ (s : State T) (a : ℕ), Run inst σ s a →
(∀ j ∈ σ, coveredBy inst s.cover j) ∧
(s.cover.card : ℝ) ≤
(setCap (Fintype.card E) : ℝ) * (OPT.card : ℝ) * (Real.logb 2 (Fintype.card T) + 2) := by sorry
end OnlineSetCover.Unweighted
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.