Salta al contenuto
Note per Studenti Esercizio - Concentrazione del numero cromatico di un grafo casuale con le differenze limitate (lezioni MIT)

Esercizio - Concentrazione del numero cromatico di un grafo casuale con le differenze limitate (lezioni MIT)

Teoria: Limiti di Chernoff e di HoeffdingMarkov applicato a e^(tX) dà code esponenziali. Per somme di Bernoulli indipendenti con media μ: P(X ≥ (1+δ)μ) ≤ [e^δ/(1+δ)^(1+δ)]^μ ≤ e^(-δ²μ/3) per 0<δ≤1, P(X ≤ (1-δ)μ) ≤ e^(-δ²μ/2), P(X ≥ R) ≤ 2^(-R) se R ≥ 6μ. Hoeffding per X_i in [a_i,b_i]: P(|S-E[S]| ≥ t) ≤ 2exp(-2t²/Σ(b_i-a_i)²). Applicazioni: n ≥ ln(2/δ)/(2ε²) campioni per stimare una probabilità, amplificazione BPP con k = O(log 1/ε) ripetizioni, bilanciamento di insiemi con scarto √(4m ln n).Limiti di Chernoff e di Hoeffding → (differenze limitate, disuguaglianza di McDiarmid); grafi e colorazioni in 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à →. Esempio tratto dalle videolezioni di Probabilistic Methods in Combinatorics, MIT OpenCourseWare.

Testo. Nel grafo casuale G(n,p)G(n,p) ogni coppia di vertici è collegata con probabilità pp, indipendentemente. Il numero cromatico χ(G)\chi(G) è il minimo numero di colori per colorare i vertici in modo che due vertici adiacenti abbiano colori diversi.

  1. Mostrare che se due grafi differiscono solo per archi che toccano un vertice vv allora ∣χ(G)−χ(G′)∣≤1|\chi(G)-\chi(G')|\le1.
  2. Scrivere χ\chi come funzione di n−1n-1 variabili casuali indipendenti, raggruppando gli archi, e dedurre P(∣χ−E[χ]∣≥λn−1)≤2e−2λ2P\big(|\chi-E[\chi]|\ge\lambda\sqrt{n-1}\big)\le2e^{-2\lambda^2}.
  3. Che cosa si otterrebbe usando una variabile per ogni arco?
  4. Per n=12n=12, p=12p=\frac12: quale scarto garantisce il limite con probabilità 95%95\%? Confrontare con una simulazione.

Soluzione

1. Un vertice cambia χ\chi di al più 11. Sia G′G' ottenuto da GG cambiando solo archi incidenti a vv. Si prende una colorazione ottima di GG con χ(G)\chi(G) colori e si dà a vv un colore nuovo: gli altri vertici hanno tra loro gli stessi archi in GG e in G′G', quindi restano colorati bene, e vv non può avere conflitti perché il suo colore non è usato da nessun altro. Si ottiene una colorazione di G′G' con χ(G)+1\chi(G)+1 colori: χ(G′)≤χ(G)+1\chi(G')\le\chi(G)+1. Scambiando i ruoli, χ(G)≤χ(G′)+1\chi(G)\le\chi(G')+1. Quindi ∣χ(G)−χ(G′)∣≤1|\chi(G)-\chi(G')|\le1.

2. Esposizione per vertici. Si numerano i vertici 1,…,n1,\dots,n e per i=1,…,n−1i=1,\dots,n-1 si pone Yi=(presenza degli archi {j, i+1} per j=1,…,i)∈{0,1}i,Y_i=\big(\text{presenza degli archi }\{j,\,i+1\}\text{ per }j=1,\dots,i\big)\in\{0,1\}^i, cioè Y1Y_1 dice se c'è l'arco {1,2}\{1,2\}, Y2Y_2 gli archi {1,3},{2,3}\{1,3\},\{2,3\}, e così via. Ogni arco {j,k}\{j,k\} con j<kj<k sta in esattamente una YiY_i (quella con i+1=ki+1=k), e gruppi diversi contengono archi diversi: le YiY_i sono indipendenti. Il grafo, e quindi χ\chi, è una funzione f(Y1,…,Yn−1)f(Y_1,\dots,Y_{n-1}). Cambiare una sola YiY_i cambia solo archi incidenti al vertice i+1i+1, quindi per il punto 1 ff cambia di al più ci=1c_i=1. La disuguaglianza delle differenze limitate per variabili indipendenti (McDiarmid) con ∑ici2=n−1\sum_ic_i^2=n-1 dà P(∣χ−E[χ]∣≥t)≤2e−2t2/(n−1),P\big(|\chi-E[\chi]|\ge t\big)\le2e^{-2t^2/(n-1)}, e con t=λn−1t=\lambda\sqrt{n-1} l'esponente diventa −2λ2-2\lambda^2: P(∣χ−E[χ]∣≥λn−1)≤2e−2λ2P(|\chi-E[\chi]|\ge\lambda\sqrt{n-1})\le2e^{-2\lambda^2}. Il risultato vale per ogni pp, senza sapere quanto vale E[χ]E[\chi].

3. Una variabile per arco. Anche aggiungere o togliere un arco cambia χ\chi di al più 11 (è un caso particolare del punto 1). Ma le variabili sono (n2)\binom n2, quindi ∑ci2=(n2)\sum c_i^2=\binom n2 e il limite diventa 2e−2t2/(n2)2e^{-2t^2/\binom n2}: lo scarto garantito è dell'ordine di (n2)≈n/2\sqrt{\binom n2}\approx n/\sqrt2, inutile perché χ≤n\chi\le n comunque. Raggruppare gli archi in n−1n-1 blocchi mantiene ci=1c_i=1 e riduce la somma dei quadrati da (n2)\binom n2 a n−1n-1.

4. Numeri per n=12n=12. Si vuole 2e−2λ2=0,052e^{-2\lambda^2}=0{,}05: λ=ln⁡40/2=1,358\lambda=\sqrt{\ln40/2}=1{,}358 e lo scarto è λ11=4,50\lambda\sqrt{11}=\mathbf{4{,}50}; con un arco per variabile sarebbe λ66=11,0\lambda\sqrt{66}=11{,}0. Una simulazione di 20002000 grafi G(12,12)G(12,\frac12), con χ\chi calcolato esattamente per ricerca esaustiva, dà χ=3,4,5,6\chi=3,4,5,6 in 5858, 11621162, 738738, 4242 grafi: media 4,384{,}38, deviazione standard 0,580{,}58. Tutti i valori stanno entro 1,71{,}7 dalla media, ben dentro ±4,5\pm4{,}5. Per n=12n=12 il limite è largo, ma conta la crescita: lo scarto garantito è O(n)O(\sqrt n), mentre per p=12p=\frac12 il numero cromatico cresce come n2log⁡2n\frac n{2\log_2n}, quindi per nn grande χ\chi è concentrato in una finestra molto più stretta del suo valore.

Risultato. ∣χ(G)−χ(G′)∣≤1|\chi(G)-\chi(G')|\le1 cambiando gli archi di un vertice; con n−1n-1 variabili indipendenti P(∣χ−Eχ∣≥λn−1)≤2e−2λ2P(|\chi-E\chi|\ge\lambda\sqrt{n-1})\le2e^{-2\lambda^2}; per n=12n=12 lo scarto al 95%95\% è 4,54{,}5 (osservato: deviazione standard 0,580{,}58).

Verifica.

python
import math, random
from collections import Counter

def cromatico(n, adj):                    # adj[v] = maschera di bit dei vicini
    ordine = sorted(range(n), key=lambda v: -bin(adj[v]).count("1"))
    def colorabile(k):
        col = [-1] * n
        def bt(i, usati):
            if i == n: return True
            v = ordine[i]
            vietati = {col[u] for u in range(n) if adj[v] >> u & 1}
            for c in range(min(usati + 1, k)):          # un colore nuovo alla volta
                if c not in vietati:
                    col[v] = c
                    if bt(i + 1, max(usati, c + 1)): return True
            col[v] = -1
            return False
        return bt(0, 0)
    k = 1
    while not colorabile(k): k += 1
    return k

def grafo(n, p, rng):
    adj = [0] * n
    for i in range(n):
        for j in range(i + 1, n):
            if rng.random() < p: adj[i] |= 1 << j; adj[j] |= 1 << i
    return adj

rng = random.Random(1)
v = [cromatico(12, grafo(12, 0.5, rng)) for _ in range(2000)]
m = sum(v) / len(v); sd = (sum((x - m) ** 2 for x in v) / len(v)) ** 0.5
lam = math.sqrt(math.log(40) / 2)
print(sorted(Counter(v).items()), round(m, 2), round(sd, 2), round(lam * math.sqrt(11), 2), round(lam * math.sqrt(66), 2))

Risultato: la distribuzione dei valori di χ\chi (33, 44, 55, 66 con frequenze 5858, 11621162, 738738, 4242), media 4.38, deviazione standard 0.58, e gli scarti 4.5 e 11.03.

Versione ripasso

Lipschitz. Cambiare gli archi di un vertice vv cambia χ\chi di al più 11: si dà a vv un colore nuovo nella colorazione ottima, poi si scambiano i ruoli (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à →).

Esposizione per vertici. YiY_i = archi da i+1i+1 verso 1,…,i1,\dots,i: n−1n-1 blocchi indipendenti, ci=1c_i=1, ∑ci2=n−1\sum c_i^2=n-1. McDiarmid (Limiti di Chernoff e di HoeffdingMarkov applicato a e^(tX) dà code esponenziali. Per somme di Bernoulli indipendenti con media μ: P(X ≥ (1+δ)μ) ≤ [e^δ/(1+δ)^(1+δ)]^μ ≤ e^(-δ²μ/3) per 0<δ≤1, P(X ≤ (1-δ)μ) ≤ e^(-δ²μ/2), P(X ≥ R) ≤ 2^(-R) se R ≥ 6μ. Hoeffding per X_i in [a_i,b_i]: P(|S-E[S]| ≥ t) ≤ 2exp(-2t²/Σ(b_i-a_i)²). Applicazioni: n ≥ ln(2/δ)/(2ε²) campioni per stimare una probabilità, amplificazione BPP con k = O(log 1/ε) ripetizioni, bilanciamento di insiemi con scarto √(4m ln n).Limiti di Chernoff e di Hoeffding →): P(∣χ−Eχ∣≥t)≤2e−2t2/(n−1)P(|\chi-E\chi|\ge t)\le2e^{-2t^2/(n-1)}, cioè ≤2e−2λ2\le2e^{-2\lambda^2} per t=λn−1t=\lambda\sqrt{n-1}, per ogni pp.

Una variabile per arco. ∑ci2=(n2)\sum c_i^2=\binom n2: scarto ≈n/2\approx n/\sqrt2, inutile. Raggruppare riduce il numero di variabili senza aumentare le cic_i.

Numeri, n=12n=12, p=12p=\frac12. λ=ln⁡40/2=1,358\lambda=\sqrt{\ln40/2}=1{,}358: scarto al 95%95\% λ11=4,5\lambda\sqrt{11}=4{,}5 (per archi: 11,011{,}0). Simulazione: χ=3,4,5,6\chi=3,4,5,6, media 4,384{,}38, deviazione standard 0,580{,}58. Lo scarto O(n)O(\sqrt n) è piccolo rispetto a χ≈n2log⁡2n\chi\approx\frac n{2\log_2n} per nn grande.

Errore tipico. Usare le (n2)\binom n2 variabili degli archi: il limite è valido ma vuoto.

Teoria collegata