Definition
Bounded-Frequency Set Cover Approximation Algorithm
For a feasible Minimum Set Cover instance, let
Repeatedly choose an uncovered element and select all sets containing it. For nonempty , this polynomial-time algorithm returns a cover satisfying . The parameter bounds element frequency, not set size.
Construction
Select every occurrence of an uncovered element
Let be the uncovered elements and the selected set indices. For a chosen , define , add all of to , and remove from .
Selecting all occurrences is essential: any element sharing any input set with becomes covered immediately. Record each chosen element as a witness in .
Pseudocode
if union(S[1],...,S[q]) != U: return INFEASIBLE
J = empty set; W = empty set; R = U
while R is nonempty:
choose u in R
W.add(u)
O = {j : u belongs to S[j]}
J = J union O
R = R minus union(S[j] for j in O)
return JApproximation guarantee
Witnesses bound the optimum from below
Feasibility and cost per witness
Every iteration covers its chosen element, so the algorithm terminates with a cover. At most sets are added per witness:
An input set cannot contain two witnesses
Suppose is chosen before and both lie in . When is chosen, , so every element of , including , becomes covered. Then cannot be chosen later from , a contradiction. Thus for every input set.
Every cover must pay once per witness
Every cover covers all of , but each selected set covers at most one witness. Hence . Combining the two counts gives
Running time and boundary cases
Write , for the number of sets and . A direct implementation scans the incidence lists in each of at most iterations, taking time. If is empty, return the empty cover without defining a maximum frequency. If an element belongs to no input set, report infeasibility before the loop.
The bounded-set-size algorithm has a different lower-bound argument: limiting the number of elements per set is not the same as limiting the number of sets per element.