Esercizio - Moneta a due teste e regola di Bayes per le risposte di un test randomizzato (lezioni MIT)
Teoria: 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 → (errore unilaterale, Miller-Rabin); base in 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 →. Esempi dalle videolezioni di Mathematics for Computer Science, MIT OpenCourseWare (probabilità condizionata e indipendenza).
Testo.
- Da un sacchetto con una moneta equa () e una con due teste si estrae una moneta a caso e la si lancia: esce testa (). Calcolare con la forma a rapporto della regola di Bayes.
- Si lancia la stessa moneta volte ed escono teste (). Calcolare e la probabilità che l'undicesimo lancio sia testa.
- Il test di Miller-Rabin, su un numero composto, risponde PROBABILMENTE PRIMO con probabilità per ogni base; su un primo lo risponde sempre. Si sceglie a caso un dispari di bit (circa uno su è primo) e il test risponde PROBABILMENTE PRIMO per basi indipendenti. Dare un limite superiore a per .
- Quante basi servono perché questa probabilità sia ? Perché non basta dire «l'errore è »?
Soluzione
1. Una testa. La forma a rapporto della regola di Bayes divide le due formule di Bayes e cancella : Le due probabilità a posteriori sommano a e stanno nel rapporto , quindi e . La testa è più probabile con la moneta truccata, quindi la sposta verso quella.
2. Dieci teste. I lanci, data la moneta, sono indipendenti: e . Il rapporto diventa Per l'undicesimo lancio si usa la probabilità totale condizionata a , separando le due monete: Non è una contraddizione con «la moneta non ha memoria»: con la moneta equa nota il lancio successivo vale , ma qui la moneta non è nota e le teste sono un'informazione su quale moneta si sta usando.
3. Lo stesso schema per Miller-Rabin. Il ruolo della moneta a due teste lo gioca il numero primo (risponde sempre PROBABILMENTE PRIMO), quello della moneta equa il composto (risponde PROBABILMENTE PRIMO con probabilità per base). La probabilità a priori di un primo è circa (teorema dei numeri primi, ristretto ai dispari), quindi il rapporto a priori composto/primo è . Con risposte indipendenti, e
- : : una sola risposta non dice quasi nulla, perché i composti sono molti di più dei primi.
- : .
- : .
4. Basi per . Serve , cioè circa : , quindi (). Il valore della nota è , cioè la probabilità che un composto fissato passi basi: è la garanzia per ogni input. La domanda «quanto è probabile che il numero restituito sia composto» è invece , e dipende dal rapporto a priori: con vale , volte più di . È lo stesso errore dei test medici delle lezioni: un test accurato, applicato dove la condizione è rara, dà molti falsi positivi. In pratica il limite è pessimistico (i bugiardi sono di solito molto meno di un quarto, vedi Esercizio - Test di Miller-Rabin su 221 e 561 e confronto con il test di Fermat), ma il ragionamento corretto passa per Bayes.
Risultato. ; , . Miller-Rabin su un dispari casuale di bit: per ; servono basi per .
from fractions import Fraction as F
import math, random
post = lambda k: F(1, 2) * F(1, 2**k) / (F(1, 2) * F(1, 2**k) + F(1, 2)) # P(equa | k teste)
print(post(1), post(10), 1 - post(10) + F(1, 2) * post(10)) # 1/3 1/1025 2049/2050
pc = lambda k: 176 * F(1, 4**k) / (176 * F(1, 4**k) + 1) # P(composto | k risposte), limite
print([float(pc(k)) for k in (1, 5, 10, 14)], math.log(1.76e8, 4)) # 0.978 0.147 1.68e-4 6.6e-7; 13.7
c = h = 0
for _ in range(400000): # simulazione della moneta
equa = random.random() < 0.5
l = [random.random() < 0.5 if equa else True for _ in range(11)]
if all(l[:10]): h += 1; c += l[10]
print(c / h) # circa 0.9995Verificato con frazioni esatte e con la simulazione (); .
Versione ripasso
- Forma a rapporto: (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 →). Una testa: rapporto , .
- Dieci teste: rapporto , ; undicesimo lancio . Le teste informano su quale moneta si usa.
- Miller-Rabin come moneta: primo = moneta a due teste, composto = moneta che «passa» con . A priori un dispari di bit è primo con circa , rapporto . : , , per ; con ().
- Punto chiave: è , la garanzia per ogni input; dipende dalla probabilità a priori (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 →).
- Errore tipico: scambiare con (fallacia del tasso di base).