Lukas' Notes

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 J

Approximation 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.