Proofs: Lovász local lemma
These are the human proofs of Lovász local lemma, at full length.
The Moser-Tardos algorithm resamples each event A at most x(A)/(1 - x(A)) times in expectation
This proof shows: moser-tardos.
Statement. Let be a finite set of mutually independent random variables, each of which the algorithm can sample. Let be a finite set of events, and let each be determined by the values of a set of variables. For let be the set of events with and , and let . Assume that there is a map with $$ \Pr[A] \le x(A) \prod_{B \in \Gamma(A)} \bigl(1 - x(B)\bigr) \qquad \text{for each } A \in \mathcal A. \tag{LLL} $$ Run MOSER-TARDOS (lines L1 to L5 of the main page) with a selection rule in line L3 that may use the run so far and extra independent randomness, but not samples that the run has not yet drawn. Let be the number of times line L4 resamples the event . Then for each . So the expected number of resampling steps is at most , the algorithm stops with probability 1, and its output makes no event of hold.
Setup.
- The resampling table. For each variable fix an infinite sequence of independent samples of , all sequences independent of each other. The run takes the value of in line L1 from , and each time line L4 needs a new sample of it takes the next unused entry. Each sample is fresh and independent of everything before it, so the run has the same distribution as the algorithm. With this table, the value of just before step is , where is the number of steps that resampled an event with .
- The log. Let be the events resampled in steps . The log is finite if the run stops.
- Witness trees. A witness tree is a finite rooted tree whose vertices carry labels in , such that each child of a vertex has a label in , where is the label of . It is proper if the children of each vertex have distinct labels. Two witness trees are the same if a bijection maps one to the other, keeps the root, the edges and the labels. Let be the set of proper witness trees whose root has label ; it is countable.
- The tree of step . Start with one root vertex with label . Then for : if the tree has a vertex with , take such a vertex of maximum depth (break ties in any fixed way) and attach to it a new child with label ; if no such vertex exists, skip . The result is . A witness tree occurs in the log if for some . For a vertex of , let be the step that created it () and its depth. The map is one to one.
The proof.
Step 1 (depth order). Let and let be vertices with and . Then . Indeed, the construction handles step before step , so is in the tree when step is handled. The labels share a variable, so , which is the same as . So is a candidate, and the new vertex goes below a candidate of depth at least . Hence .
Step 2 (consequences of Step 1). (a) Two distinct vertices of the same depth have labels with disjoint variable sets, because Step 1 gives different depths otherwise. (b) Each tree is proper. Each label is an event that the run resampled, so it held at some moment. An event with no variables is constant, so it would hold always, and then contradicts (LLL). So each label has at least one variable, and two equal labels share it. Two children of one vertex have the same depth, so by (a) their labels share no variable, and hence they differ.
Step 3 (no step is lost). Let be a vertex of and . Each step with creates a vertex of . Indeed, when step is handled, is already in the tree, and and share , so and the step is not skipped.
Step 4 (the -check). Fix a witness tree and an order of its vertices by decreasing depth (ties in a fixed way). The -check visits the vertices in this order. At vertex it gives each the value , where is the number of vertices visited before with , and it tests whether holds under these values. The check passes if holds at each vertex. If is visited before and both use , then . So distinct vertices read distinct entries of the table. The values read at are independent samples of the variables in , which are mutually independent in the original space, so holds with probability exactly \Prv. The tests read disjoint sets of independent entries, so they are independent events. Hence
$$ \Pr[\tau\text{-check passes}] = \prod_{v \in V(\tau)} \Prv. $$
Step 5 (coupling). Assume for some . We show that the -check passes on the same table. Let be a vertex and . By the setup, the value of just before step is , where is the number of steps with . By Step 3, these steps are exactly the of the vertices with and , and is one to one, so is the number of such vertices. By Step 1, a vertex with has if and if . So is the number of vertices with and . By Step 2(a) no vertex of depth other than uses , so the decreasing-depth order visits exactly these before , and . The algorithm resampled at step , and line L3 picks only an event that holds, so holds under the values . This is the test of the -check at . With Step 4, $$ \Pr[\tau \text{ occurs in the log}] \le \prod_{v \in V(\tau)} \Prv. $$
Step 6 (counting resamplings by trees). Let . Each step with creates a vertex of , because the root has label . Only such steps create vertices labelled . So has exactly vertices labelled , and two steps with give different trees. By Step 2(b) these trees are in . So . Taking expectations (linearity of expectation, which holds for a countable sum of nonnegative terms) and using Step 5 and then (LLL): $$ \mathbb E[N_A] \le \sum_{\tau \in \mathcal T_A} \prod_{v \in V(\tau)} \Prv \le \sum_{\tau \in \mathcal T_A} \prod_{v \in V(\tau)} x'([v]), \qquad x'(B) = x(B) \prod_{C \in \Gamma(B)} \bigl(1 - x(C)\bigr). $$
Step 7 (a branching process). Consider this random process. Round 0 makes a root with label . In each later round, each vertex made in the previous round gets, for each independently, a child with label with probability . The process makes a proper witness tree with root , or it never stops. Fix . For a vertex of let be the set of labels in that no child of carries. The process yields exactly when each vertex of gets children with exactly the labels of its children in . These choices use disjoint independent coins, so $$ p_\tau = \prod_{v \in V(\tau)} \Bigl( \prod_{\substack{u \text{ child of } v}} x([u]) \prod_{C \in W_v} (1 - x(C)) \Bigr). $$ Each vertex other than the root is the child of exactly one vertex. So the product of the factors is . Since is proper, , and the denominators multiply to . So $$ p_\tau = \frac{1 - x(A)}{x(A)} \prod_{v} \frac{x([v]) \prod_{C \in \Gamma^+([v])} (1 - x(C))}{1 - x([v])} = \frac{1 - x(A)}{x(A)} \prod_{v \in V(\tau)} x'([v]), $$ because holds itself, whose factor cancels the denominator.
Step 8 (the sum). Distinct trees are disjoint outcomes of one run of the process, so . With Steps 6 and 7, $$ \mathbb E[N_A] \le \frac{x(A)}{1 - x(A)} \sum_{\tau \in \mathcal T_A} p_\tau \le \frac{x(A)}{1 - x(A)}. $$
End. Summing over the finitely many events, the expected total number of resampling steps is at most . A random variable with finite expectation is finite with probability 1, so the run stops with probability 1. It stops only when the loop test of line L2 fails, that is, when no event of holds. In particular such an assignment exists. ∎