Salta al contenuto
Note per Studenti Esercizio - Numero di ripetizioni di Karger per un errore prefissato

Esercizio - Numero di ripetizioni di Karger per un errore prefissato

Testo. Un'esecuzione dell'algoritmo di Karger su un multigrafo con nn vertici trova un dato taglio minimo con probabilità almeno 1/(n2)1/\binom n2. Si eseguono tt esecuzioni indipendenti e si tiene il taglio più piccolo.

  1. Dimostrare che la probabilità di fallimento è ≤e−t/(n2)\le e^{-t/\binom n2} e ricavare tt per un fallimento ≤δ\le\delta.
  2. Calcolare tt per δ=0,01\delta=0{,}01 e n=10, 50, 100n=10,\ 50,\ 100; calcolare anche la probabilità di fallimento con t=(n2)t=\binom n2.
  3. Con una matrice di adiacenza una esecuzione costa circa n2n^2 operazioni. Stimare il costo totale per n=100n=100 e δ=0,01\delta=0{,}01.
  4. Per il grafo con due triangoli e un ponte (n=6n=6) la probabilità vera di successo è 13/3513/35. Quante esecuzioni bastano per δ=0,01\delta=0{,}01, col valore vero e col limite?

Teoria: Taglio minimo randomizzato - algoritmo di KargerTaglio minimo globale di un multigrafo con n vertici. Algoritmo di Karger: finché restano più di 2 vertici, scegliere un arco uniformemente tra i rimasti e contrarlo (fondere gli estremi, tenere i paralleli, togliere i cappi); gli archi tra i due supervertici finali sono un taglio. Un taglio minimo C di k archi sopravvive se nessun suo arco viene contratto; con n_i vertici il grado minimo è ≥ k, quindi |E_i| ≥ n_i k/2 e Pr[contrarre un arco di C] ≤ 2/n_i; il prodotto telescopico dà Pr[output = C] ≥ 2/(n(n-1)) = 1/C(n,2). Con t = C(n,2) ln(1/δ) ripetizioni indipendenti il fallimento è ≤ δ. Corollario: un grafo ha al più C(n,2) tagli minimi (stretto per il ciclo). Karger-Stein: contrarre fino a n/√2+1 vertici (sopravvive con prob ≥ 1/2) e ricorrere due volte, T(n) = O(n² log n), successo Ω(1/log n).Taglio minimo randomizzato - algoritmo di Karger → (sezione sulle ripetizioni); Algoritmi randomizzati - Monte Carlo, Las Vegas e amplificazioneUn algoritmo randomizzato usa bit casuali indipendenti; la probabilità è sulle scelte dell'algoritmo, mai sull'input (garanzia per ogni input). Las Vegas: sempre corretto, tempo aleatorio (conta il tempo atteso). Monte Carlo: tempo fisso, risposta sbagliata con probabilità limitata; errore unilaterale (RP: accetta solo se x sta nel linguaggio, accetta con prob almeno 1/2) o bilaterale (BPP: giusto con prob almeno 2/3). ZPP = RP ∩ co-RP = Las Vegas con tempo atteso polinomiale. Amplificazione: unilaterale, k ripetizioni indipendenti, errore (1-p)^k ≤ e^(-pk), serve k ≥ ln(1/ε)/p; bilaterale, voto di maggioranza su k esecuzioni, errore binomiale esatto, esponenziale in k (Chernoff, e^(-k/18) per p=2/3) mentre Chebyshev dà solo 8/k. Las Vegas -> Monte Carlo: interrompere a c volte il tempo atteso (Markov, errore ≤ 1/c). Monte Carlo -> Las Vegas: solo se la risposta si verifica in fretta. Esempio: Miller-Rabin, errore ≤ 1/4 per esecuzione.Algoritmi randomizzati - Monte Carlo, Las Vegas e amplificazione →.

Soluzione

Punto 1. Ogni esecuzione fallisce con probabilità ≤1−1(n2)\le1-\frac1{\binom n2}. Per l'indipendenza tutte e tt falliscono con probabilità (1−1(n2))t≤e−t/(n2),\Big(1-\frac1{\binom n2}\Big)^t\le e^{-t/\binom n2}, perché 1−x≤e−x1-x\le e^{-x}. Il secondo membro è ≤δ\le\delta se t≥(n2)ln⁡(1/δ)t\ge\binom n2\ln(1/\delta). Quindi t=⌈(n2)ln⁡1δ⌉t=\big\lceil\binom n2\ln\frac1\delta\big\rceil ripetizioni bastano. Con t=(n2)ln⁡nt=\binom n2\ln n il fallimento è ≤1/n\le1/n.

Punto 2. Con ln⁡100=4,6052\ln100=4{,}6052:

  • n=10n=10: (102)=45\binom{10}2=45, t=⌈45⋅4,6052⌉=⌈207,2⌉=208t=\lceil45\cdot4{,}6052\rceil=\lceil207{,}2\rceil=208 (fallimento vero ≤0,00933\le0{,}00933).
  • n=50n=50: (502)=1225\binom{50}2=1225, t=⌈5641,3⌉=5642t=\lceil5641{,}3\rceil=5642.
  • n=100n=100: (1002)=4950\binom{100}2=4950, t=⌈22795,6⌉=22796t=\lceil22795{,}6\rceil=22796.

Con t=(n2)t=\binom n2: fallimento ≤(1−1(n2))(n2)\le\big(1-\frac1{\binom n2}\big)^{\binom n2}, cioè 0,36370{,}3637 per n=10n=10, 0,36770{,}3677 per n=50n=50, 0,36780{,}3678 per n=100n=100, quasi e−1=0,3679e^{-1}=0{,}3679 (il limite per n→∞n\to\infty).

Punto 3. n=100n=100: 22796⋅n2=22796⋅104≈2,3⋅10822796\cdot n^2=22796\cdot10^4\approx2{,}3\cdot10^8 operazioni (qualche secondo). Il costo cresce come n4log⁡nn^4\log n: a n=1000n=1000 sarebbe ≈(10002)ln⁡100⋅106≈2,3⋅1012\approx\binom{1000}2\ln100\cdot10^6\approx2{,}3\cdot10^{12}, che motiva Karger-Stein (O(n2log⁡3n)O(n^2\log^3n)).

Punto 4. Valore vero 13/3513/35: fallimento per esecuzione 22/3522/35. (22/35)t≤0,01(22/35)^t\le0{,}01 dà t≥ln⁡0,01ln⁡(22/35)=−4,605−0,4643=9,92t\ge\frac{\ln0{,}01}{\ln(22/35)}=\frac{-4{,}605}{-0{,}4643}=9{,}92, quindi t=10t=10 ((22/35)10=0,0096(22/35)^{10}=0{,}0096). Col limite 1/151/15: t=⌈15ln⁡100⌉=⌈69,08⌉=70t=\lceil15\ln100\rceil=\lceil69{,}08\rceil=70. Il limite chiede 77 volte più ripetizioni.

Risultati: t=⌈(n2)ln⁡(1/δ)⌉t=\lceil\binom n2\ln(1/\delta)\rceil; 208, 5642, 22796208,\ 5642,\ 22796; costo ≈2,3⋅108\approx2{,}3\cdot10^8 per n=100n=100; 1010 contro 7070 ripetizioni per i due triangoli.

python
from math import comb, log, ceil
for n in (10, 50, 100):
    c = comb(n, 2); t = ceil(c * log(100))
    print(n, c, t, (1 - 1 / c)**t, (1 - 1 / c)**c, t * n * n)
print(log(0.01) / log(22 / 35), (22 / 35)**10, ceil(15 * log(100)))

Versione ripasso

Teoria collegata