Salta al contenuto
Note per Studenti Esercizio - Insiemi indipendenti con alterazione e lemma locale di Lovász per k-SAT

Esercizio - Insiemi indipendenti con alterazione e lemma locale di Lovász per k-SAT

Teoria: Metodo probabilistico - valore atteso, alterazioni e derandomizzazioneMetodo probabilistico: se un oggetto casuale ha una proprietà con probabilità positiva (o una variabile ha media mu, quindi qualche esito la raggiunge) allora l'oggetto esiste; taglio di almeno |E|/2, MAX-SAT con 7/8, limite inferiore di Ramsey R(k,k) > 2^(k/2), alterazioni (insiemi indipendenti, Ramsey), derandomizzazione con le aspettative condizionate, lemma locale di Lovász solo enunciato.Metodo probabilistico - valore atteso, alterazioni e derandomizzazione → (alterazione, lemma locale di Lovász), Grafi - definizioni e proprietàGrafo G=(V,E) diretto e non diretto, grafo semplice e pesato; incidenza, adiacenza, grado; cammini, cicli, sottografi, grafi connessi e componenti connesse; alberi liberi, foreste, spanning tree e spanning forest; proprietà con dimostrazioni (somma dei gradi = 2m, m <= n(n-1)/2, alberi m = n-1, connessi m >= n-1, foreste m <= n-1).Grafi - definizioni e proprietà →.

Testo.

  1. Un grafo ha nn vertici e m≥n2m\ge\frac n2 archi. Dimostrare con l'alterazione che ha un insieme indipendente di almeno n24m\frac{n^2}{4m} vertici. Per n=1000n=1000, m=2000m=2000 calcolare il guadagno np−mp2np-mp^2 per p=0,1; 0,2; 0,25; 0,3; 0,4p=0{,}1;\ 0{,}2;\ 0{,}25;\ 0{,}3;\ 0{,}4.
  2. Verificare con una simulazione su un grafo casuale con n=1000n=1000, m=2000m=2000: dimensione media dell'insieme indipendente ottenuto, e valore medio di ∣S∣−Y|S|-Y.
  3. Variante: ordinare i vertici con una permutazione casuale e tenere quelli che precedono tutti i vicini. Dimostrare E∣I∣=∑v1dv+1E|I|=\sum_v\frac1{d_v+1} e confrontare con il punto 1 sullo stesso grafo.
  4. Esempio a mano: il ciclo C9C_9.
  5. Lemma locale di Lovász. Una formula kk-CNF ha clausole con kk variabili distinte e ogni variabile compare in al più rr clausole. Per k=5,10,12k=5,10,12 trovare il massimo rr per cui il lemma garantisce che la formula sia soddisfacibile (condizione e 2−k(k(r−1)+1)≤1e\,2^{-k}\bigl(k(r-1)+1\bigr)\le1) e confrontare con l'union bound.

Soluzione

1. Dimostrazione. Ogni vertice entra in SS con probabilità pp indipendentemente. Sia YY il numero di archi con entrambi gli estremi in SS. Allora E[∣S∣]=npE[|S|]=np e, per la linearità, E[Y]=mp2E[Y]=mp^2 (un arco è in SS con probabilità p⋅pp\cdot p). Si toglie da SS un estremo per ogni arco rimasto in SS: l'insieme che resta è indipendente e ha almeno ∣S∣−Y|S|-Y vertici. E[∣S∣−Y]=np−mp2E[|S|-Y]=np-mp^2 è una parabola in pp con massimo in p=n2mp=\frac n{2m} (che è ≤1\le1 perché m≥n2m\ge\frac n2), dove vale n22m−n24m=n24m\frac{n^2}{2m}-\frac{n^2}{4m}=\frac{n^2}{4m}. Per il principio del valore atteso esiste un esito con ∣S∣−Y≥n24m|S|-Y\ge\frac{n^2}{4m}.

Numeri. n=1000n=1000, m=2000m=2000 (d=4d=4, p=1dp=\frac1d ottimo =0,25=0{,}25):

pp 0,10{,}1 0,20{,}2 0,250{,}25 0,30{,}3 0,40{,}4
np−mp2np-mp^2 8080 120120 125125 120120 8080

Bound: 125\boxed{125} vertici (verificato np−mp2=250−125np-mp^2=250-125).

2. Simulazione. Grafo casuale con 20002000 archi distinti su 10001000 vertici (seme 4242, grado massimo 1212), p=14p=\frac14, 20002000 prove. ∣S∣|S| vale in media 250,2250{,}2 e YY vale in media 125,2125{,}2, quindi ∣S∣−Y=125,0|S|-Y=125{,}0 in media (come previsto). L'insieme indipendente ottenuto togliendo un estremo solo degli archi che sono ancora interamente in SS ha invece dimensione media 157,6157{,}6 (minimo 130130, massimo 187187): togliere un vertice elimina tutti i suoi archi, quindi si toglie meno di YY vertici. Il teorema garantisce quindi ≥125\ge125 e la procedura reale ottiene ≈158\approx158.

3. Permutazione casuale. Sia π\pi una permutazione uniforme dei vertici e I={v:π(v)<π(u) ∀u∈N(v)}I=\{v:\pi(v)<\pi(u)\ \forall u\in N(v)\}. (i) II è indipendente: se u∼vu\sim v non possono entrambi precedere l'altro. (ii) Tra vv e i suoi dvd_v vicini (dv+1d_v+1 vertici) il primo è vv con probabilità 1dv+1\frac1{d_v+1} per simmetria. Per la linearità E∣I∣=∑v1dv+1E|I|=\sum_v\frac1{d_v+1}, e per la convessità di x↦1x+1x\mapsto\frac1{x+1} (Jensen) ∑v1dv+1≥nd+1\sum_v\frac1{d_v+1}\ge\frac n{d+1}. Sullo stesso grafo: nd+1=200\frac n{d+1}=200 e ∑v1dv+1=243,0\sum_v\frac1{d_v+1}=\boxed{243{,}0}; 300300 permutazioni danno ∣I∣|I| in media 243,5243{,}5 (da 206206 a 268268). Quindi la variante è molto più forte della precedente (243243 contro 125125).

4. Il ciclo C9C_9. n=m=9n=m=9, d=2d=2: con p=12p=\frac12, E∣S∣=4,5E|S|=4{,}5, E[Y]=9⋅14=2,25E[Y]=9\cdot\frac14=2{,}25, E[∣S∣−Y]=2,25E[|S|-Y]=2{,}25, quindi esiste un insieme indipendente di almeno ⌈2,25⌉=3\lceil2{,}25\rceil=3 vertici. Per la variante: ogni vertice ha grado 22, E∣I∣=9⋅13=3E|I|=9\cdot\frac13=3 e quindi esiste un insieme indipendente di 33 vertici. Il valore vero è α(C9)=4\alpha(C_9)=4 (vertici 0,2,4,60,2,4,6): nessuno dei due limiti è esatto.

5. Lovász. Sia ACA_C l'evento "la clausola CC è falsa" in un'assegnazione uniforme: p=2−kp=2^{-k}. ACA_C dipende solo dalle kk variabili di CC ed è indipendente da tutte le clausole che non condividono variabili con CC; ognuna delle kk variabili compare in al più r−1r-1 altre clausole, quindi d≤k(r−1)d\le k(r-1). La condizione e p (d+1)≤1e\,p\,(d+1)\le1 diventa e 2−k(k(r−1)+1)≤1e\,2^{-k}(k(r-1)+1)\le1, cioè r≤1+2k/e−1kr\le1+\frac{2^k/e-1}k:

kk 55 1010 1212
rr massimo 33 3838 126126
valore della condizione in rr 0,9340{,}934 0,9850{,}985 0,9960{,}996
con r+1r+1 1,361{,}36 1,0111{,}011 1,0041{,}004

Con questi rr la formula è soddisfacibile qualunque sia il numero di clausole (con nn variabili, fino a nrk\frac{nr}k clausole). L'union bound dà invece la soddisfacibilità solo per m<2km<2^k clausole: 3232, 10241024, 40964096 per k=5,10,12k=5,10,12.

Codice di verifica

python
import random
from math import e

def grafo(n, m, seme):
    r, E = random.Random(seme), set()
    while len(E) < m:
        a, b = r.sample(range(n), 2)
        E.add((min(a, b), max(a, b)))
    return sorted(E)

n, m = 1000, 2000
G = grafo(n, m, 42)
d = 2 * m / n
grado = [0] * n
adj = {v: [] for v in range(n)}
for a, b in G:
    grado[a] += 1; grado[b] += 1; adj[a].append(b); adj[b].append(a)
print([n * p - m * p * p for p in (0.1, 0.2, 0.25, 0.3, 0.4)], sum(1 / (x + 1) for x in grado), n / (d + 1), max(grado))

r = random.Random(5)
dim, s0, y0 = [], 0, 0
for _ in range(2000):
    S = {v for v in range(n) if r.random() < 1 / d}
    s0 += len(S); y0 += sum(a in S and b in S for a, b in G)
    for a, b in G:
        if a in S and b in S:
            S.discard(a)                       # toglie un estremo solo se l'arco è ancora in S
    assert not any(a in S and b in S for a, b in G)
    dim.append(len(S))
print(s0 / 2000, y0 / 2000, min(dim), sum(dim) / 2000, max(dim))

r, tot = random.Random(7), []
for _ in range(300):
    pos = list(range(n)); r.shuffle(pos)
    tot.append(sum(all(pos[v] < pos[u] for u in adj[v]) for v in range(n)))
print(sum(tot) / 300, min(tot), max(tot))

for k in (5, 10, 12):
    rmax = 1
    while e * 2 ** -k * (k * rmax + 1) <= 1:      # prova r = rmax + 1
        rmax += 1
    print(k, rmax, e * 2 ** -k * (k * (rmax - 1) + 1), e * 2 ** -k * (k * rmax + 1), 2 ** k)

Risultato: [80.0, 120.0, 125.0, 120.0, 80.0] 242.97... 200.0 12, 250.2 125.2 130 157.6 187, 243.5 206 268, e le righe 5 3 0.934 1.359 32, 10 38 0.985 1.011 1024, 12 126 0.996 1.004 4096.

Versione ripasso

  • Alterazione. SS con probabilità pp per vertice: E∣S∣=npE|S|=np, E[Y]=mp2E[Y]=mp^2 (YY archi in SS); togliere un estremo per arco: ≥∣S∣−Y\ge|S|-Y vertici indipendenti. np−mp2np-mp^2 massimo in p=n2mp=\frac n{2m}: α(G)≥n24m\alpha(G)\ge\frac{n^2}{4m}. Per n=1000n=1000, m=2000m=2000: np−mp2=80; 120; 125; 120; 80np-mp^2=80;\ 120;\ 125;\ 120;\ 80 per p=0,1; 0,2; 0,25; 0,3; 0,4p=0{,}1;\ 0{,}2;\ 0{,}25;\ 0{,}3;\ 0{,}4 (Metodo probabilistico - valore atteso, alterazioni e derandomizzazioneMetodo probabilistico: se un oggetto casuale ha una proprietà con probabilità positiva (o una variabile ha media mu, quindi qualche esito la raggiunge) allora l'oggetto esiste; taglio di almeno |E|/2, MAX-SAT con 7/8, limite inferiore di Ramsey R(k,k) > 2^(k/2), alterazioni (insiemi indipendenti, Ramsey), derandomizzazione con le aspettative condizionate, lemma locale di Lovász solo enunciato.Metodo probabilistico - valore atteso, alterazioni e derandomizzazione →).
  • Simulazione (grafo con seme 4242): E∣S∣=250,2E|S|=250{,}2, E[Y]=125,2E[Y]=125{,}2, ∣S∣−Y=125,0|S|-Y=125{,}0; insieme reale (togliendo solo archi ancora in SS): minimo 130130, media 157,6157{,}6, massimo 187187.
  • Permutazione casuale. I={v:π(v)<π(u) ∀u∼v}I=\{v:\pi(v)<\pi(u)\ \forall u\sim v\} indipendente; P(v∈I)=1dv+1P(v\in I)=\frac1{d_v+1}; E∣I∣=∑1dv+1≥nd+1E|I|=\sum\frac1{d_v+1}\ge\frac n{d+1} (Jensen). Stesso grafo: 243,0243{,}0 (simulato 243,5243{,}5) contro nd+1=200\frac n{d+1}=200 e 125125.
  • C9C_9. p=12p=\frac12: 4,5−2,25=2,25⇒≥34{,}5-2{,}25=2{,}25\Rightarrow\ge3; permutazione: 9⋅13=39\cdot\frac13=3; vero α=4\alpha=4.
  • Lovász. ACA_C = clausola falsa, p=2−kp=2^{-k}, d≤k(r−1)d\le k(r-1); e2−k(k(r−1)+1)≤1e2^{-k}(k(r-1)+1)\le1: rmax⁡=3,38,126r_{\max}=3,38,126 per k=5,10,12k=5,10,12 (condizione 0,934; 0,985; 0,9960{,}934;\ 0{,}985;\ 0{,}996; con r+1r+1: 1,36; 1,011; 1,0041{,}36;\ 1{,}011;\ 1{,}004). Soddisfacibile con qualunque numero di clausole; union bound solo per m<2k=32,1024,4096m<2^k=32,1024,4096.
  • Errori tipici. Togliere troppi vertici (uno per arco già eliminato) e dimenticare che il limite resta valido comunque; scrivere d=krd=kr invece di k(r−1)k(r-1); confondere pp dell'alterazione con la probabilità di un arco.

Teoria collegata