Union bound e verifica randomizzata - identità polinomiali e prodotti di matrici
In questa pagina 6
Modello e classi (Monte Carlo a errore unilaterale, amplificazione): 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 →. 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 →, Misura di probabilità e sue proprietàUna misura di probabilità è una funzione P: F → [0,1] con P(Ω) = 1 e σ-additiva; ne seguono P(Aᶜ) = 1 − P(A), P(∅) = 0, monotonia, P(A ∪ B) = P(A) + P(B) − P(A ∩ B) e la formula di inclusione-esclusione.Misura di probabilità e sue proprietà →, 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 →.
1. Spazi discreti, inclusione-esclusione e union bound
Uno spazio discreto è un insieme finito o numerabile con pesi di somma ; un evento è e . Valgono monotonia (), complemento e, per eventi disgiunti, .
Inclusione-esclusione. Per tre eventi e in generale la somma alternata sulle intersezioni di eventi. Fermarsi dopo un numero dispari di termini dà un maggiorante, dopo un numero pari un minorante (disuguaglianze di Bonferroni).
Esempio. Si lanciano due dadi. : il primo dà ; : il secondo dà ; : la somma è . Allora , , (per servono ), . Quindi La somma sola è un maggiorante, la somma meno le coppie un minorante, e il valore vero sta in mezzo.
Teorema (union bound). Per eventi qualunque (finiti o numerabili)
Dimostrazione. Si pone . Gli sono disgiunti, e . Quindi per monotonia.
Non richiede nessuna indipendenza: è lo strumento per dire «nessun evento cattivo accade», sommando le probabilità di ciascuno. È stretto quando gli eventi sono rari e quasi disgiunti, largo quando si sovrappongono molto.
Collisioni in una tabella hash. Si inseriscono chiavi in celle, ciascuna scelta uniformemente e in modo indipendente (Tabelle hashTabella hash per implementare una mappa: funzione hash = hash code + compression function, bucket array, separate chaining; hash code per numeri e stringhe (polynomial, cyclic shift), division e MAD; load factor, complessità al caso pessimo Theta(n) e medio O(1+lambda), rehashing; esempio svolto con inserimenti e collisioni.Tabelle hash →). Per ogni coppia l'evento «le chiavi e cadono nella stessa cella» ha probabilità (data la cella di , deve coincidere). Le coppie sono , quindi Con , : bound , valore esatto (quasi uguali: le collisioni sono rare). Con , : bound , esatto (largo, perché molte collisioni coincidono; vedi Palline e urne - compleanno, carico massimo e approssimazione di PoissonModello palline e urne (m palline, n urne, scelte indipendenti e uniformi): paradosso del compleanno con soglia sqrt(2 n ln 2), urne vuote attese n e^(-m/n), carico massimo ln n / ln ln n con dimostrazione (first moment e union bound), approssimazione di Poisson con il fattore e sqrt(m), potere delle due scelte (ln ln n / ln 2).Palline e urne - compleanno, carico massimo e approssimazione di Poisson →).
2. Principio delle decisioni differite
Se le scelte casuali sono indipendenti, si può immaginare di fissare tutte tranne una e di estrarre l'ultima soltanto alla fine. Formalmente, per ogni evento con le scelte diverse da (Formula delle probabilità totali e formula di BayesSe (A_i) è una partizione di Ω, P(B) = Σ P(B ∣ A_i) P(A_i) (probabilità totali); la formula di Bayes inverte il condizionamento: P(A_k ∣ B) = P(B ∣ A_k) P(A_k) / P(B).Formula delle probabilità totali e formula di Bayes →). Se per ogni valore fissato di si prova , allora . È la tecnica di tutte le dimostrazioni di questa nota.
3. Lemma di Schwartz-Zippel e identità polinomiali
Teorema (Schwartz-Zippel). Sia un polinomio non nullo di grado totale su 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 →) e sia finito. Se sono scelti uniformemente e indipendentemente in , allora
Dimostrazione. Per induzione sul numero di variabili.
- . Un polinomio non nullo di grado in un campo ha al più radici, quindi si annulla in al più punti di : probabilità .
- Passo. Si scrive , con la massima potenza di presente, cioè . Il grado totale di è . Sia l'evento : per ipotesi induttiva . Se non accade, il polinomio in una variabile ha coefficiente direttivo : è non nullo di grado . Per decisioni differite, è indipendente da , quindi . Allora (Se la variabile non compare e basta l'ipotesi induttiva.)
Il bound è ottimo: con distinti si annulla in punti di , probabilità esatta .
Test di identità polinomiale
Dato come «scatola nera» (o come formula/circuito, magari di grado esponenziale se espanso), si vuole sapere se . Algoritmo: scegliere a caso, calcolare ; se rispondere NON NULLO (certo), altrimenti rispondere NULLO. L'errore è unilaterale: sbaglia solo se e , con probabilità . Con l'errore è ; con prove indipendenti (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 →).
Esempio. Si lavora in (numeri modulo , primo) con e il punto .
- Identità vera: . Il lato sinistro è e il destro è : coincidono (per ogni punto, perché la differenza è il polinomio nullo).
- Identità falsa: . La differenza è , di grado . In si ha : il test la smaschera. Gli zeri della differenza in sono i punti con , oppure : su , cioè , quasi uguale al bound .
Applicazione: accoppiamento perfetto. Dato un grafo bipartito con vertici (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à →), si costruisce la matrice con (variabile) se - è un arco e altrimenti. Il determinante (Permutazioni e definizione di determinanteIl determinante di una matrice quadrata è la somma, su tutte le n! permutazioni, dei prodotti di n elementi presi uno per riga e uno per colonna, con segno + o − secondo la parità della permutazione; per 2×2 è ad − bc, per 3×3 c'è la regola di Sarrus, per le triangolari è il prodotto della diagonale.Permutazioni e definizione di determinante →) è la somma, con segni, dei prodotti delle permutazioni, e ogni accoppiamento perfetto dà un monomio diverso: se e solo se esiste un accoppiamento perfetto. ha grado : si valuta in un punto casuale modulo un primo grande con l'eliminazione di Gauss (Eliminazione di GaussCon tre operazioni elementari sulle righe (scambio, moltiplicazione per uno scalare non nullo, somma di un multiplo di un'altra riga) ogni matrice si riduce a scala senza cambiare il rango; serve a calcolare ranghi, risolvere sistemi, trovare relazioni di dipendenza e matrici che riducono a scala.Eliminazione di Gauss →), in . Per : archi danno (accoppiamento ); archi danno (nessun accoppiamento).
import random
P = 101 # campo F_101
def vero(x, y): return pow(x + y, 3, P) == (x**3 + 3*x*x*y + 3*x*y*y + y**3) % P
def falso(x, y): return pow(x + y, 3, P) == (x**3 + y**3) % P
def pit(identita, prove=1): # True = "identita' valida" (errore unilaterale)
return all(identita(random.randrange(P), random.randrange(P)) for _ in range(prove))
print(pit(vero, 10), pit(falso, 10)) # True False (il secondo sbaglia con prob <= (3/101)^10)4. Algoritmo di Freivalds: verificare un prodotto di matrici
Problema. Date matrici , è vero che (Operazioni tra matriciLe matrici m×n formano uno spazio vettoriale (somma e prodotto per scalare elemento per elemento); il prodotto righe per colonne corrisponde alla composizione di funzioni lineari, è associativo ma non commutativo; la trasposta scambia righe e colonne e (AB)^T = B^T A^T.Operazioni tra matrici →)? Calcolare costa con l'algoritmo ovvio (e circa con i migliori noti, Prodotto di matrici - algoritmo iterativo e ricorsivo a blocchimodello di costo sulle matrici n x n (operazioni tra scalari, taglia n oppure N = n^2); somma in n^2 operazioni (ottima); prodotto righe per colonne iterativo con costo esatto 2n^3 - n^2; proprietà frattale del prodotto a blocchi dimostrata sugli indici; algoritmo ricorsivo RMUL con T(n) = 8T(n/2) + n^2, Theta(n^3) e soluzione esatta 2n^3 - n^2 per induzione e per srotolamento: fa le stesse operazioni dell'iterativo.Prodotto di matrici - algoritmo iterativo e ricorsivo a blocchi →). Freivalds lo verifica in .
Algoritmo (Freivalds). Si sceglie uniformemente (ogni componente o con probabilità , indipendenti). Si calcola (due prodotti matrice-vettore, operazioni) e (). Si risponde se , altrimenti .
Teorema. Se risponde sempre giusto. Se risponde (errore) con probabilità .
Dimostrazione. Se allora per ogni . Se la matrice ha un elemento . L'algoritmo sbaglia solo se , e in particolare solo se . Per decisioni differite si fissano tutte le componenti con : la somma diventa con numero fisso. Poiché , i due valori e sono diversi, quindi al più uno annulla la somma: per ogni , e perciò .
È un caso particolare di Schwartz-Zippel con e grado . Il bound è stretto: se ha un solo elemento non nullo , equivale a , probabilità esatta . Con prove indipendenti l'errore è e il costo ; usando con elementi l'errore scende a .
A mano, . Siano e sia uguale a tranne (invece di ), quindi . Si provano tutti gli vettori (colonna , poi confrontato con ):
| esito | ||||
|---|---|---|---|---|
| passa (errore) | ||||
| passa (errore) | ||||
| scoperto | ||||
| scoperto | ||||
| passa (errore) | ||||
| passa (errore) | ||||
| scoperto | ||||
| scoperto |
L'errore avviene per i vettori con : probabilità esatta , come previsto dal caso a un solo elemento sbagliato.
import random
def freivalds(A, B, C, k=20): # False => AB != C (certo); True => AB == C con errore <= 2^-k
n = len(A)
mv = lambda M, v: [sum(M[i][j] * v[j] for j in range(n)) for i in range(n)]
for _ in range(k):
r = [random.randint(0, 1) for _ in range(n)]
if mv(A, mv(B, r)) != mv(C, r):
return False
return True
A = [[1, 2, 0], [3, 1, 2], [0, 1, 1]]; B = [[2, 0, 1], [1, 1, 0], [1, 3, 2]]
AB = [[4, 2, 1], [9, 7, 7], [2, 4, 2]]; C = [row[:] for row in AB]; C[0][1] = 3
print(freivalds(A, B, AB), freivalds(A, B, C)) # True False5. Fingerprint: confrontare stringhe con poca comunicazione
Alice ha una stringa di bit, Bob una stringa ; vogliono sapere se scambiando pochi bit. Deterministicamente servono bit. Con la randomizzazione: Alice sceglie un primo casuale e manda , interpretando come intero; Bob risponde che sono uguali se .
Teorema. Se l'esito è sempre giusto. Se l'errore ha probabilità , dove è il numero di primi .
Dimostrazione. L'errore avviene se divide , con . Ogni primo divisore è , quindi ha al più divisori primi distinti (il loro prodotto è ). Scegliendo uniforme tra i primi, la probabilità di cadere in uno di quegli è .
Numeri. Con bit e : , errore (più finemente: il prodotto dei primi più piccoli supera già , quindi ha al più divisori primi e l'errore è ). Si comunicano circa bit invece di . Con l'errore è circa e tende a . Un tipico uso è il confronto di una finestra di testo con un pattern (Rabin-Karp): si confrontano le impronte e solo in caso di uguaglianza si verifica carattere per carattere. Altre impronte (famiglie universali, Bloom): Hashing randomizzato - famiglie universali, filtri di Bloom e fingerprintHashing con catene e costo atteso 1+alfa; famiglie universali (probabilità di collisione al più 1/m) e costruzione h(x)=((ax+b) mod p) mod m con dimostrazione; hashing perfetto a due livelli (spazio lineare, ricerca O(1) nel caso peggiore); filtri di Bloom: falsi positivi (1-e^(-kn/m))^k e k ottimo (m/n) ln 2; fingerprint di stringhe e numero di bit necessari.Hashing randomizzato - famiglie universali, filtri di Bloom e fingerprint →.
Esempio piccolo. , , (unico primo: ). Con scelto tra i resti di sono e quelli di sono : coincidono solo per , errore . Con , : coincidono per , errore .
Domande d'esame
- Dimostra l'union bound. Si disgiunge: , , .
- Enuncia Schwartz-Zippel e dimostra il caso . Vedi la sezione 3: un polinomio non nullo di grado ha al più radici, probabilità .
- Perché Freivalds ha errore ? Con e si fissano le , : i due valori di danno due valori diversi di , e al più uno è .
- Quanti primi casuali servono per far scendere l'errore del fingerprint di stringhe da bit sotto ? Una prova ha errore ; con prove indipendenti dà (con il bound più fine ne bastano ).
Versione ripasso
- Spazi discreti: ; monotonia, complemento, somma per disgiunti (Misura di probabilità e sue proprietàUna misura di probabilità è una funzione P: F → [0,1] con P(Ω) = 1 e σ-additiva; ne seguono P(Aᶜ) = 1 − P(A), P(∅) = 0, monotonia, P(A ∪ B) = P(A) + P(B) − P(A ∩ B) e la formula di inclusione-esclusione.Misura di probabilità e sue proprietà →). Inclusione-esclusione per tre eventi: somme alternate; fermarsi a un numero dispari di termini dà un maggiorante, pari un minorante. Dadi con sopra: , minorante .
- Union bound: , senza indipendenza. Prova: disgiunti, . Collisioni: ; , : contro esatto ; , : contro .
- Decisioni differite: fissare tutte le scelte tranne una e limitare la probabilità condizionata su quella; se vale per ogni valore fissato, vale in totale (Formula delle probabilità totali e formula di BayesSe (A_i) è una partizione di Ω, P(B) = Σ P(B ∣ A_i) P(A_i) (probabilità totali); la formula di Bayes inverte il condizionamento: P(A_k ∣ B) = P(B ∣ A_k) P(A_k) / P(B).Formula delle probabilità totali e formula di Bayes →).
- Schwartz-Zippel: di grado totale , uniforme: . Prova per induzione su : , con ; , altrimenti polinomio in di grado con radici; somma . Ottimo per .
- Test di identità: valutare in un punto casuale, errore unilaterale , con prove . Esempio in : ha zeri contro il bound . Accoppiamento perfetto: della matrice di Edmonds sse esiste, grado , modulo un primo.
- Freivalds: , confrontare con in ; se errore (prova con e decisioni differite, stretto con un solo elemento sbagliato), con prove. Esempio con : errore per i vettori con su .
- Fingerprint: con primo casuale, errore (ogni ha primi divisori). , : (più fine ), circa bit comunicati.
- Dadi, dettaglio: (per : ), .
- Collisioni: perché, data la cella di , la cella di deve coincidere; le coppie sono .
- Esempio , punto : coincide con lo sviluppo, mentre smaschera l'identità falsa; zeri della differenza: , o , cioè punti.
- Edmonds, : archi danno (accoppiamento); archi danno (nessun accoppiamento).
- Freivalds, : con invece di (quindi ) si scoprono gli con : dà ; non scopre nulla, . Costo di una prova: prodotti matrice-vettore, , contro del prodotto.
- Fingerprint, esempio piccolo: , , : con primi in i resti coincidono solo per (errore ); con , , coincidono per (). Con prove indipendenti sotto da : .
- Errori tipici: usare l'union bound con ripetizioni e dimenticare che è solo un maggiorante; confondere grado totale e grado in una variabile; scegliere troppo piccolo ( il bound è vuoto); usare lo stesso per tutte le prove di Freivalds; scrivere senza disgiunzione.
Esercizi su questo argomento
- Esercizio - Accoppiamento perfetto con la matrice di Edmonds e Schwartz-Zippel
- Esercizio - Algoritmo di Freivalds su matrici 3x3 con elementi sbagliati
- Esercizio - bilanciamento di insiemi con un colore casuale
- Esercizio - Impronta di stringhe con un primo casuale e comunicazione
- Esercizio - Schwartz-Zippel su identità vere e false modulo 101
- Esercizio - Union bound e inclusione-esclusione, due dadi e collisioni di una funzione hash
Teoria collegata
- Algoritmi randomizzati - Monte Carlo, Las Vegas e amplificazione
- Hashing randomizzato - famiglie universali, filtri di Bloom e fingerprint
- Metodo probabilistico - valore atteso, alterazioni e derandomizzazione
- Palline e urne - compleanno, carico massimo e approssimazione di Poisson
- Taglio minimo randomizzato - algoritmo di Karger