Constructive Proof of Lovasz Local Lemma

LLL 证明

Lovasz-Local lemma: 有一堆事件,每个事件有标号 \(X_i\)。如果对任意 \(i\), 记 \(V_i\) 满足: \(i\) 与除 \(V_i\) 外事件完全独立,且 \(P(A_i) \le X_i \prod_{j\in V_i} (1-x_j)\), 则有至少 \(\prod (1-X_i)\) 的概率所有事件均不发生。

证明:对每个集合 \(A\)\(a\notin A\), 我们证明 \(A\cup \{a\}\) 均不发生的概率至少为 \(A\) 均不发生的概率乘以 \((1-x_a)\)。对 \(|A|\) 归纳。注意到 \(A\cup \{a\}\) 均不发生的概率为 \(A\) 不发生的概率减去 \(A\) 不发生且 \(a\) 发生的概率,后者不超过 \(A \backslash V_a\) 均不发生且 \(a\) 发生的概率。而 \(A \backslash V_a\)\(a\) 独立,两概率可以直接相乘。
又由归纳假设 \(A \backslash V_a\) 均不发生的概率除以 \(A\) 均不发生的概率不超过 \(1/\prod_{j\in V_a} (1-x_j)\),化简得证。

\(k-SAT\) 构造性证明

考虑构造每个 Clause 与不超过 \(2^{k-2}\) 个其余 Clause 相交的 \(k\)-SAT 的解。

考察一个操作 \(f(A)\),效果为:经过一些处理,使得 Clause \(A\) 从不满足变成满足,原先满足的仍然满足。 具体执行定义如下:首先我们重新随机 sample \(A\) 涉及到的变量。而后当存在 \(A\) 有交 (含 \(A\) 自己) 的 Clause \(B\) 未满足,我们递归调用 \(f(B)\)

\(f\) 的正确性显然成立,我们希望证明 \(f\) 的执行时间。事实上,我们只需要说明:\(f\) 的调用时间 \(\ge 2\log m\) 的概率不超过 \(O(1/m^2)\) (于是,可以在某次超过 \(2\log m\)次调用后完全从头再来)。考虑固定一棵(给定根)的调用树,大小为 \(t\)。我们声称:这棵调用树出现的概率不超过 \(1/2^{kt}\)。这是因为每当树上节点用过一些变量,这些变量会立即被sample成新的值,所以树上节点的事件是完全独立的。而大小为 \(t\) 的调用树个数有界:因为每次只有最多 \(2^{k-2}+1\) 个邻点可供选择;为了回溯,也只需记录这个点是不是当前子树最后一个点即可。因此方法数不超过 \((2(2^{k-2}+1))^t\)

于是,大概率从外部 \(m\)\(f\) 的调用后,每次调用的时间均不超过 \(m\log m\)。于是我们可以在不超过 \(O(m^2\log m)\) 的时间给出构造。

一般的 LLL 构造性证明

考虑如下设定: 每个事件与 \(\Omega\) 中若干个变量相关,\(\Omega\) 中的变量两两独立。

我们考虑如下算法:初始给 \(\Omega\) 中的变量随机赋值。当有事件发生时,我们将该事件涉及的变量重新 sample,一直执行知道所有事件均不发生。

我们证明:事件 \(i\) 被重新 sample 的期望次数不超过 \(x_i/(1-x_i)\)。证明如下:记 \(a_i\) 为事件 \(i\) 重新 sample 的期望次数。我们将事件 \(i\) 的每次 sample charge 到最近一次涉及到其中变量的修改上。那么容易发现, \(a_i\le P_i (1+a_i+\sum_{j\in V_i}a_j)\). 化简后只需证明 \(1\ge \prod (1-x_j) + \sum_j x_j \sum_{k\ne j} (1-x_k)\),显然得证。

posted @ 2022-08-15 10:49  CauchySheep  阅读(714)  评论(0编辑  收藏  举报