Esercizio - Ripetizioni di un Monte Carlo a errore unilaterale per un errore prefissato
Testo. Un algoritmo randomizzato per un problema di decisione non sbaglia mai quando risponde SI, e quando la risposta giusta è SI risponde SI con probabilità (errore unilaterale). Le esecuzioni usano bit casuali indipendenti e ciascuna costa operazioni.
- Qual è la probabilità di errore ripetendo l'algoritmo volte e rispondendo SI se almeno una esecuzione dice SI?
- Quante ripetizioni servono per un errore ? Calcolare il valore esatto e quello che dà la formula .
- Se invece fosse , quante ripetizioni per un errore ?
- Qual è il costo totale in operazioni per nel caso 2?
Soluzione
Punto 1. Se la risposta giusta è NO l'algoritmo non dice mai SI: errore . Se è SI, l'algoritmo risponde NO solo se tutte le esecuzioni indipendenti sbagliano: ognuna con probabilità . Quindi
Punto 2. Serve , cioè , ovvero (dividendo per si inverte il verso) Risultato: ripetizioni. Controllo: e . La formula semplificata, che usa e quindi , dà , cioè ripetizioni: valida ma più larga di .
Punto 3. dà esattamente ; la formula con darebbe .
Punto 4. Con esecuzioni da operazioni: operazioni, cioè il costo cresce di un fattore (lineare in ) mentre l'errore scende da a (esponenziale in ).
import math, random
p, eps = 0.3, 1e-6
print(0.7**10, math.ceil(math.log(eps)/math.log(1-p)), math.ceil(math.log(1/eps)/p), 0.7**39, 0.7**38)
N = 10**6 # simulazione dell'errore con k = 10
err = sum(all(random.random() >= p for _ in range(10)) for _ in range(N)) / N
print(err) # circa 0.0282Risultati verificati: ; e ; simulazione .
Versione ripasso
- Dati: errore unilaterale, ; un NO dell'algoritmo può essere sbagliato, un SI no. Errore dopo ripetizioni 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 →).
- : .
- Errore : ; con : .
- , : (con : ).
- Costo: per .
- Errori tipici: non invertire il verso della disuguaglianza dividendo per ; confondere con ; ripetizioni con gli stessi bit.