Algoritmi randomizzati - Monte Carlo, Las Vegas e amplificazione
In questa pagina 7
Probabilità di base: Spazi di probabilità discreti e uniformiIn uno spazio discreto la probabilità è determinata dalla densità discreta p(ω) = P({ω}), con somma 1, e P(A) è la somma di p(ω) sugli esiti di A; negli spazi uniformi (esiti equiprobabili) P(A) = |A| / |Ω|, casi favorevoli su casi possibili.Spazi di probabilità discreti e uniformi →, Indipendenza di eventiA e B sono indipendenti se P(A ∩ B) = P(A) P(B), cioè se sapere che uno si è verificato non cambia la probabilità dell'altro; l'indipendenza passa ai complementari, non va confusa con l'incompatibilità, e per più eventi va richiesta su ogni sottofamiglia.Indipendenza di eventi →, Valore attesoIl valore atteso E[X] = Σ x p_X(x) è la media dei valori di X pesata con le loro probabilità (esiste se la serie converge assolutamente); per una funzione g vale E[g(X)] = Σ g(x) p_X(x) senza trovare la legge di g(X), ed E è lineare: E[aX + bY + c] = aE[X] + bE[Y] + c.Valore atteso →, Distribuzione geometricaGeo(p) è il numero della prova in cui arriva il primo successo in prove indipendenti: P(X = n) = (1−p)^(n−1) p per n ≥ 1, P(X > n) = (1−p)^n (lunga attesa), media 1/p, varianza (1−p)/p², ed è senza memoria.Distribuzione geometrica →. Complessità: Complessità in tempo e caso pessimoPerché lo studio sperimentale non basta; complessità al caso pessimo come massimo sul numero di operazioni tra le istanze di una data taglia; stima con limiti superiore e inferiore senza trovare l'istanza peggiore; esempi arrayMax, prefixAverages e InsertionSort; efficienza asintotica e limiti dell'analisi.Complessità in tempo e caso pessimo →, Notazione asintoticaDefinizioni di O, Omega, Theta e o piccolo con le costanti c ed n0; esempi con costanti esplicite; proprietà (polinomi, esponenziali, logaritmi, somme, implicazioni tra notazioni); sommatorie notevoli; terminologia (logaritmica, lineare, polinomiale, esponenziale).Notazione asintotica →.
1. Il modello
Un algoritmo randomizzato è un algoritmo che, oltre all'input, legge un flusso di bit casuali indipendenti ed equi (lanci di moneta). Il suo comportamento è quindi una variabile aleatoria, definita sullo spazio dei bit casuali.
Garanzia. Le probabilità sono sui bit casuali, non sull'input. Un enunciato come «per ogni input , » vale nel caso peggiore sull'input: nessun avversario che scelga in anticipo può fare peggio. È diverso dall'analisi del caso medio, dove si assume una distribuzione sugli input. Un esempio piccolo in cui una scelta casuale batte ogni strategia deterministica nel caso pessimo: Esercizio - Due scatole di caramelle e soglia casuale contro ogni input (lezioni MIT).
Perché servono: sono spesso più semplici e più veloci di quelli deterministici (verifica di prodotti di matrici, test di primalità, taglio minimo: Union bound e verifica randomizzata - identità polinomiali e prodotti di matriciSpazi discreti richiamati; inclusione-esclusione (con le troncate di Bonferroni) e union bound Pr[unione] ≤ somma, valido senza indipendenza e stretto quando gli eventi sono rari (collisioni: C(n,2)/m). Principio delle decisioni differite: si fissa tutto tranne una scelta casuale e si limita la probabilità su quella. Lemma di Schwartz-Zippel: un polinomio non nullo di grado totale d, valutato in un punto di S^n scelto uniformemente, si annulla con prob ≤ d/|S| (induzione sul numero di variabili); test di identità polinomiale con errore unilaterale, ripetuto (d/|S|)^k. Freivalds: per verificare AB=C si controlla A(Br)=Cr con r in {0,1}^n in tempo O(n^2), errore ≤ 1/2 (stretto), 2^-k con k prove. Fingerprint: due stringhe di n bit si confrontano con a mod p per un primo casuale p ≤ M, errore ≤ n/π(M).Union bound e verifica randomizzata - identità polinomiali e prodotti di matrici →, 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 →). Un esempio già noto è quicksort con pivot casuale, che diventa Las Vegas (Algoritmi di ordinamentoSelection sort e insertion sort (quadratici, con invarianti), merge sort (divide et impera, Theta(n log n)), quick sort (caso pessimo quadratico, medio n log n), heap sort (in loco, Theta(n log n)), ordinamento senza confronti per chiavi intere in un intervallo piccolo, limite inferiore Omega(n log n) per gli algoritmi basati su confronti.Algoritmi di ordinamento →, Analisi probabilistica di quicksort e quickselectCon pivot casuale due elementi di rango $i<j$ vengono confrontati con probabilità $2/(j-i+1)$; sommando sulle coppie il numero atteso di confronti di quicksort è esattamente $2(n+1)H_n-4n\approx2n\ln n-2{,}85,n$ (stessa formula dalla ricorrenza $C_n=n-1+\frac2n\sum_{k<n}C_k$). Quickselect trova il $k$-esimo elemento con attesa lineare, al più $4n$ confronti (mediana $\approx3{,}39,n$). Pivot fisso su input casuale equivale a pivot casuale su input qualunque.Analisi probabilistica di quicksort e quickselect →).
2. Las Vegas e Monte Carlo
Definizione. Un algoritmo è Las Vegas se la risposta è sempre corretta e il tempo di esecuzione è una variabile aleatoria: si studia . È Monte Carlo se il tempo è limitato (deterministico) ma la risposta può essere sbagliata con una probabilità limitata.
Esempio (cerca un 1). Un array ha almeno metà delle celle uguali a . Si vuole un indice con .
- Las Vegas: si sceglie un indice a caso, si legge, e si ripete finché si trova un . Ogni tentativo riesce con probabilità e i tentativi sono indipendenti, quindi è geometrica e .
- Monte Carlo: si fanno tentativi e, se nessuno riesce, si restituisce l'ultimo indice estratto (sbagliato). L'errore è .
Esecuzione a mano su (, quattro , ) con la sequenza casuale : , , , . Si restituisce dopo tentativi. In generale (i primi tre falliscono), .
import random
def cerca_uno_lv(A): # Las Vegas: sempre corretto, tempo aleatorio
t = 0
while True:
t += 1
i = random.randrange(len(A))
if A[i] == 1:
return i, t
def cerca_uno_mc(A, k): # Monte Carlo: k tentativi, errore <= 2^-k
for _ in range(k):
i = random.randrange(len(A))
if A[i] == 1:
return i
return i # sbagliato con prob (1-p)^k
A = [0, 1, 1, 0, 0, 1, 0, 1]
N = 100000
print(sum(cerca_uno_lv(A)[1] for _ in range(N)) / N) # circa 2
print(sum(A[cerca_uno_mc(A, 3)] == 0 for _ in range(N)) / N) # circa 1/83. Errore unilaterale e bilaterale, classi di complessità
Per un problema di decisione (linguaggio : si risponde SI se , NO altrimenti) si distinguono tre casi di Monte Carlo.
Definizione (errore unilaterale). Un algoritmo è RP (randomized polynomial time) se lavora in tempo polinomiale e
- ;
- .
Un SI è quindi certo, un NO può essere un errore. La classe co-RP è speculare: un NO è certo, un SI può essere un errore.
Definizione (errore bilaterale). Un algoritmo è BPP (bounded-error probabilistic polynomial time) se, in tempo polinomiale, risponde correttamente con probabilità almeno per ogni , sia in sia fuori.
Definizione. ZPP (zero-error) è la classe dei linguaggi decisi da un algoritmo Las Vegas con tempo atteso polinomiale.
In breve vale . Le costanti e sono arbitrarie, perché l'amplificazione (sezione 4) le porta ovunque in e . Per esempio perché un errore unilaterale , ripetuto due volte, diventa .
Teorema. .
Dimostrazione. () Siano un algoritmo RP e un co-RP per . A turno: si esegue e, se dice SI, si risponde SI (certo); si esegue e, se dice NO, si risponde NO (certo); altrimenti si ricomincia. Se , dice SI con probabilità (e non dice mai NO); se , dice NO con probabilità . Ogni giro termina quindi con probabilità : i giri sono geometrici, in media , e la risposta è sempre corretta. () Sia un Las Vegas con polinomiale. Lo si interrompe a passi: per Markov . Se si risponde NO allo scadere del tempo si ottiene un algoritmo RP (un SI è sempre certo, perché prodotto da concluso, e se si risponde SI con probabilità ); se si risponde SI si ottiene un co-RP.
4. Amplificazione
Errore unilaterale: ripetizione
Si esegue l'algoritmo volte con bit casuali indipendenti e si risponde SI se almeno una esecuzione dice SI.
- Se nessuna esecuzione dice SI: errore .
- Se , ogni esecuzione sbaglia con probabilità , e per indipendenza tutte sbagliano con probabilità .
Poiché (la retta tangente in sta sotto la convessa ),
Esempi numerici (verificati): con e servono esattamente ripetizioni (la formula con dice ); con e servono (la formula con dice , pessimistica ma semplice). Il costo cresce linearmente in , l'errore cala esponenzialmente: per questo gli algoritmi randomizzati sono pratici.
Errore bilaterale: voto di maggioranza
Con errore bilaterale non si può fidare di un SI isolato. Si eseguono esecuzioni indipendenti ( dispari) e si risponde come la maggioranza. Ogni esecuzione è giusta con probabilità , quindi il numero di esecuzioni giuste è (Bernoulli, binomiale e uniforme discretaBernoulli Be(p): un solo tentativo, vale 1 con probabilità p; binomiale Bin(n, p): numero di successi in n prove indipendenti, P(X = k) = C(n,k) p^k (1−p)^(n−k), media np e varianza np(1−p); uniforme discreta: n valori equiprobabili.Bernoulli, binomiale e uniforme discreta →) e
Valori esatti per (calcolati con Python):
| errore |
Per : , cioè sbaglia se le giuste sono o su .
Quanto decresce? Con Chebyshev (Disuguaglianze di Markov, Chebyshev e JensenMarkov: per X ≥ 0, P(X ≥ a) ≤ E[X]/a; Chebyshev: P(|X − μ| ≥ ε) ≤ Var(X)/ε²; Jensen: per φ convessa, φ(E[X]) ≤ E[φ(X)]. Stimano probabilità e medie conoscendo solo media e varianza.Disuguaglianze di Markov, Chebyshev e Jensen →): , , l'evento richiede uno scarto di almeno , quindi . È solo : per dà , contro il valore vero . Il limite di Chernoff-Hoeffding (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 →) dà invece esponenziale in . Per ottenere errore servono esecuzioni esatte (la formula di Hoeffding ne chiede ). Serve però uno scarto costante da : se il numero di ripetizioni sale a .
5. Da Las Vegas a Monte Carlo e ritorno
Las Vegas Monte Carlo (Markov). Sia . Per la disuguaglianza di Markov Si interrompe l'algoritmo dopo passi e, se non ha finito, si restituisce una risposta qualsiasi: si ottiene un Monte Carlo con errore e tempo . Ripetendo blocchi indipendenti di durata e tenendo la prima risposta completata, l'errore cala a .
Nell'esempio «cerca un 1» : fermarsi a tentativi () dà per Markov errore , mentre il valore vero è . Markov sfrutta solo la media, quindi è largo ma sempre valido.
Monte Carlo Las Vegas. Si può fare solo se la risposta si può verificare in fretta: si ripete il Monte Carlo finché il verificatore accetta. Con errore il numero di ripetizioni è geometrico, in media . Nell'esempio, il verificatore legge . Senza un verificatore (per esempio un Monte Carlo bilaterale su un problema di decisione) non si sa in generale farlo: che BPP sia uguale a ZPP è una questione aperta.
6. Esempio: test di primalità di Miller-Rabin
Dato dispari si scrive con dispari. Un numero è un testimone di composizione se
- Se è primo non esistono testimoni: in (un campo, CampiUn campo è un insieme di numeri con somma e prodotto che rispettano le regole usuali (associativa, commutativa, neutri, opposti, inversi, distributiva): è ciò che serve per risolvere le equazioni di primo grado. Esempi: Q, R, C e i campi finiti.Campi →) l'unica radice quadrata di oltre a è , e la catena (piccolo teorema di Fermat) deve partire da oppure passare per .
- Se è composto almeno i dei valori sono testimoni (teorema di Rabin, senza dimostrazione qui).
L'algoritmo sceglie a caso e risponde COMPOSTO se è un testimone, PROBABILMENTE PRIMO altrimenti. L'errore è unilaterale (un COMPOSTO è certo) e per esecuzione: con esecuzioni indipendenti , per la formula della sezione 4 con . Il valore è la probabilità che un composto fissato superi il test; la probabilità che un numero estratto a caso e promosso dal test sia composto si ricava con la regola di Bayes e dipende da quanti primi ci sono (Esercizio - Moneta a due teste e regola di Bayes per le risposte di un test randomizzato (lezioni MIT)).
A mano, . , quindi , .
- : (non è né ) e (non è ). Nessuna condizione di non-testimone è soddisfatta: è un testimone, quindi è composto.
- : e : qui è un «bugiardo» (passa il test pur con composto).
Contando tutte le basi con Python: per i bugiardi sono solo , cioè su ( di testimoni, ben oltre ). Il test di Fermat da solo () è molto peggiore: su (primo numero di Carmichael) tutte le basi coprime con lo superano, mentre Miller-Rabin ha solo bugiardi su .
import random
def testimone(a, n): # True se a prova che n e' composto
d, s = n - 1, 0
while d % 2 == 0:
d //= 2; s += 1
x = pow(a, d, n)
if x in (1, n - 1):
return False
for _ in range(s - 1):
x = x * x % n
if x == n - 1:
return False
return True
def miller_rabin(n, k=20): # n dispari >= 5; errore <= 4^-k
return not any(testimone(random.randrange(2, n - 1), n) for _ in range(k))
print(miller_rabin(221), miller_rabin(561), miller_rabin(1000003)) # False False TrueDomande d'esame
- Differenza tra Las Vegas e Monte Carlo, con un esempio. Las Vegas: risposta sempre giusta, tempo aleatorio (quicksort con pivot casuale, «cerca un 1»). Monte Carlo: tempo fisso, risposta sbagliata con probabilità limitata (Miller-Rabin).
- Dimostra che . Vedi il teorema della sezione 3: i due algoritmi a turno nel verso , Markov a passi nel verso .
- Un algoritmo RP ha . Quante ripetizioni per errore ? dà ; la formula con ne chiede .
- Un Las Vegas ha tempo atteso ms. Come ottenere un Monte Carlo con errore ? Markov con : interromperlo a s; l'errore è .
Versione ripasso
- Modello: bit casuali indipendenti; la probabilità è sui bit, non sull'input: la garanzia vale per ogni input (Indipendenza di eventiA e B sono indipendenti se P(A ∩ B) = P(A) P(B), cioè se sapere che uno si è verificato non cambia la probabilità dell'altro; l'indipendenza passa ai complementari, non va confusa con l'incompatibilità, e per più eventi va richiesta su ogni sottofamiglia.Indipendenza di eventi →).
- Las Vegas: sempre corretto, aleatorio, conta . Monte Carlo: tempo fisso, errore limitato. Esempio «cerca un 1» con : LV con (Distribuzione geometricaGeo(p) è il numero della prova in cui arriva il primo successo in prove indipendenti: P(X = n) = (1−p)^(n−1) p per n ≥ 1, P(X > n) = (1−p)^n (lunga attesa), media 1/p, varianza (1−p)/p², ed è senza memoria.Distribuzione geometrica →), MC con errore .
- RP: , (un SI è certo). co-RP speculare. BPP: giusto con prob per ogni . ZPP: Las Vegas con tempo atteso polinomiale. .
- Teorema : () eseguire a turno (RP) e (co-RP), ogni giro dà una risposta certa con prob , in media giri; () Las Vegas interrotto a passi, Markov dà , poi NO (RP) o SI (co-RP).
- Unilaterale: ripetizioni indipendenti, errore (da ), basta . Esempi: , : (con : ); , : (con : ).
- Bilaterale: maggioranza su dispari, errore . Per : dà , dà , dà . Chebyshev dà solo , Hoeffding (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 →) .
- LV MC: Markov, ; errore con blocchi. Nell'esempio , stop a tentativi: Markov , vero . MC LV: solo se la risposta si verifica in fretta, ripetizioni attese (Disuguaglianze di Markov, Chebyshev e JensenMarkov: per X ≥ 0, P(X ≥ a) ≤ E[X]/a; Chebyshev: P(|X − μ| ≥ ε) ≤ Var(X)/ε²; Jensen: per φ convessa, φ(E[X]) ≤ E[φ(X)]. Stimano probabilità e medie conoscendo solo media e varianza.Disuguaglianze di Markov, Chebyshev e Jensen →).
- Miller-Rabin: ; è testimone se e per . Primo: nessun testimone; composto: almeno sono testimoni; errore unilaterale . Per : , , quindi è testimone; i bugiardi sono su . Su Fermat ha bugiardi, Miller-Rabin .
- Esecuzione a mano (, indici ): , , , , quindi e si restituisce ; , .
- RP BPP: un errore unilaterale ripetuto due volte diventa . Il voto di maggioranza serve solo con errore bilaterale; con errore unilaterale basta un SI. Nel verso del teorema ZPP nessun giro sbaglia mai, perché un SI di e un NO di sono certi.
- Maggioranza per , : errore . Errore : servono esecuzioni esatte contro della formula di Hoeffding; Chebyshev darebbe ().
- Algoritmo Miller-Rabin: scegliere a caso in ; se è testimone, COMPOSTO (certo), altrimenti PROBABILMENTE PRIMO; con basi indipendenti l'errore è .
- Errori tipici: ripetere con gli stessi bit casuali (niente indipendenza); votare a maggioranza un errore unilaterale (basta un SI); dimenticare che servono costante per l'errore bilaterale; credere che Markov sia stretto.
Esercizi su questo argomento
- Esercizio - amplificazione di un algoritmo BPP con il voto di maggioranza
- Esercizio - Da Las Vegas a Monte Carlo con Markov e da Monte Carlo a Las Vegas
- Esercizio - Dimostrazione che ZPP è uguale a RP intersecato co-RP
- Esercizio - Due scatole di caramelle e soglia casuale contro ogni input (lezioni MIT)
- Esercizio - Moneta a due teste e regola di Bayes per le risposte di un test randomizzato (lezioni MIT)
- Esercizio - Numero di ripetizioni di Karger per un errore prefissato
- Esercizio - Ripetizioni di un Monte Carlo a errore unilaterale per un errore prefissato
- Esercizio - Test di Miller-Rabin su 221 e 561 e confronto con il test di Fermat
- Esercizio - Voto di maggioranza per un algoritmo a errore bilaterale
Teoria collegata
- Algoritmi di streaming - campionamento di riserva e conteggio degli elementi distinti
- Hashing randomizzato - famiglie universali, filtri di Bloom e fingerprint
- Limiti di Chernoff e di Hoeffding
- Linearità del valore atteso e variabili indicatrici
- Metodi Monte Carlo - stima, generazione di variabili aleatorie e MCMC
- Passeggiate aleatorie - rovina del giocatore, 2-SAT e grafi
- Taglio minimo randomizzato - algoritmo di Karger
- Union bound e verifica randomizzata - identità polinomiali e prodotti di matrici