Esercizio - Due scatole di caramelle e soglia casuale contro ogni input (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 → (garanzia per ogni input, probabilità sui bit casuali); 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 →. Problema dalle videolezioni di Mathematics for Computer Science, MIT OpenCourseWare.
Testo. Due scatole contengono due numeri diversi di caramelle, interi tra e , scelti da un avversario che conosce la strategia ma non i bit casuali. Si apre una scatola presa a caso (probabilità ciascuna), si conta e si decide se tenerla o prendere l'altra. Si vince se si finisce con la scatola più piena.
- Con la regola fissa «tieni se ci sono almeno caramelle», qual è la probabilità di vincere sugli input e ? Qual è il caso pessimo?
- Dimostrare che ogni regola deterministica «tieni se il numero aperto sta nell'insieme » ha caso pessimo .
- Algoritmo randomizzato: si sceglie una soglia uniforme in e si tiene la scatola se contiene almeno caramelle. Calcolare la probabilità di vincere sull'input con contenuti e il suo minimo su tutti gli input.
- Eseguire l'algoritmo a mano sull'input per tutte le soglie.
- Con contenuti tra e , quale garanzia si ottiene? E qual è la media su tutte le coppie di valori tra e ?
Soluzione
1. Soglia fissa . Con : se si apre lo si tiene, se si apre si cambia e si prende : si vince sempre, probabilità . Con entrambi i valori sono : si tiene sempre la prima scatola aperta e si vince solo se è quella da , probabilità . Il caso pessimo è : l'avversario mette entrambi i valori dallo stesso lato della soglia.
2. Nessuna regola deterministica fa meglio di . Una regola deterministica divide gli valori in «tengo» () e «cambio» (il resto). Una delle due classi contiene almeno valori, quindi almeno due valori distinti con la stessa decisione. Sull'input :
- se entrambi stanno in si tiene sempre la prima scatola, che è quella giusta con probabilità ;
- se entrambi sono fuori da si cambia sempre, e si vince solo se si era aperta la scatola sbagliata: ancora .
L'unica casualità di questa strategia è la scelta della scatola, e l'avversario, che conosce , sceglie proprio .
3. Soglia casuale. Si fissa l'input e si condiziona sul valore di (probabilità totale). Le soglie si dividono in tre gruppi.
- (la soglia separa i due valori): se si apre si tiene (), se si apre si cambia (); si vince sempre. Queste soglie sono , cioè .
- : entrambi i valori sono , si tiene sempre: si vince con probabilità .
- : entrambi , si cambia sempre: probabilità .
Quindi Il minimo si ha per (valori consecutivi), il massimo per (). La garanzia vale per ogni input, perché la probabilità è calcolata sui bit casuali dell'algoritmo ( e la scatola) con l'input fissato: è lo stesso modello degli algoritmi randomizzati, dove non si assume nessuna distribuzione sugli input.
4. A mano, input . La sola soglia che separa è .
| soglia | aperta | aperta | vittoria |
|---|---|---|---|
| tiene (perde) | tiene (vince) | ||
| cambia, prende (vince) | tiene (vince) | ||
| cambia, prende (vince) | cambia, prende (perde) |
Media: , come la formula con .
5. Generalizzazioni. Con valori tra e e soglia uniforme in lo stesso conto dà : per la garanzia è . Il vantaggio sul caso pessimo è piccolo ma garantito, mentre nessuna regola deterministica supera . Se invece l'input fosse una coppia uniforme tra le possibili, la media di è : ma è un'analisi del caso medio, che vale solo se l'input ha davvero quella distribuzione.
Risultato. Soglia fissa: caso pessimo , e lo stesso per ogni regola deterministica. Soglia casuale: per ogni input; con valori fino a , .
from fractions import Fraction as F
def vittoria(s, l, N=10): # soglia T uniforme in 1..N, scatola aperta a caso
p = F(0)
for T in range(1, N + 1):
for aperta, altra in ((s, l), (l, s)):
ottiene = aperta if aperta >= T else altra
p += F(1, 2 * N) * (ottiene == l)
return p
v = {(s, l): vittoria(s, l) for s in range(11) for l in range(s + 1, 11)}
print(min(v.values()), v[(4, 5)], v[(3, 8)], v[(0, 10)]) # 11/20 11/20 3/4 1
print(all(p == F(1, 2) + F(l - s, 20) for (s, l), p in v.items()), sum(v.values()) / len(v)) # True 7/10Verificato con frazioni esatte su tutte le coppie e con una simulazione sull'input ( su prove).
Versione ripasso
- Gioco: due valori diversi tra e scelti da un avversario; si apre una scatola a caso e si decide se tenerla.
- Deterministico: ogni regola «tieni se il valore sta in » lascia due valori con la stessa decisione (una classe ha almeno degli valori); su quell'input si vince con . Soglia fissa : vince sempre, solo con .
- Soglia casuale uniforme in : le soglie con fanno vincere sempre, le altre danno ; per probabilità 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 →).
- A mano : solo separa; .
- Valori fino a : ( per ). Media sulle coppie uniformi: , ma è caso medio, non garanzia.
- Idea: la probabilità è sui bit dell'algoritmo con l'input fissato, quindi vale contro ogni avversario (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: confondere la garanzia per ogni input con la media su input casuali.