Esercizio - Urne vuote e carico massimo con mille server
Teoria: 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 → (urne vuote e carico massimo), Linearità del valore atteso e variabili indicatriciLa linearità $E[X+Y]=E[X]+E[Y]$ vale sempre, anche senza indipendenza; con le variabili indicatrici ($E[I_A]=P(A)$) trasforma un conteggio in una somma di probabilità. Applicazioni: attesa del primo successo $1/p$, collezionista di figurine $nH_n$, punti fissi di una permutazione (media $1$), record (media $H_n$), inversioni ($n(n-1)/4$), attesa condizionata, identità di Wald $E[S_N]=E[N]E[X]$.Linearità del valore atteso e variabili indicatrici →, Momenti e deviazioni - Markov, Chebyshev e mediana randomizzataVar(ΣX_i) = ΣVar + 2ΣCov, e basta l'indipendenza a coppie perché la varianza si sommi. Chebyshev dà code polinomiali (collezionista: P(T ≥ nH_n + cn) ≤ π²/(6c²)); il metodo del secondo momento dà P(X=0) ≤ Var(X)/E[X]². Algoritmo della mediana: campione di n^(3/4) elementi, due estremi d e u a ±√n, ordinamento dei soli elementi tra d e u; fallisce con probabilità ≤ n^(-1/4) ed è Las Vegas con 2n + o(n) confronti.Momenti e deviazioni - Markov, Chebyshev e mediana randomizzata →.
Testo. Un bilanciatore assegna ogni richiesta a uno di server scelto uniformemente e indipendentemente.
- Dopo richieste, sia il numero di server che non hanno ricevuto nulla. Calcolare , , la deviazione standard e il limite di Chebyshev su .
- Quante richieste servono perché, con probabilità almeno , tutti i server ne abbiano ricevuta almeno una? Confrontare il valore minimo (con il limite di Markov ) con .
- Con server e richieste, trovare il più piccolo per cui l'union bound garantisce , usando (a) la coda binomiale esatta e (b) il limite . Confrontare con il valore del teorema e con una simulazione.
Soluzione
1. Urne vuote. Sia se il server è vuoto: , perché ciascuna delle richieste deve evitarlo. Per la linearità Per la varianza serve (: le richieste evitano entrambi), quindi Il primo termine è , il secondo è (perché ), il terzo è . Chebyshev: . Il limite è largo: in simulazioni ha media e deviazione e capita nello dei casi ( volte).
2. Tutti i server raggiunti. Per Markov . Si vuole : il minimo intero con è (dà ; con si supera ). Con la stima : , vicino al valore esatto. Il valore garantisce . Il tempo medio per riempire tutti i server è (): serve più del doppio per avere il di sicurezza (collezionista di figurine, Linearità del valore atteso e variabili indicatriciLa linearità $E[X+Y]=E[X]+E[Y]$ vale sempre, anche senza indipendenza; con le variabili indicatrici ($E[I_A]=P(A)$) trasforma un conteggio in una somma di probabilità. Applicazioni: attesa del primo successo $1/p$, collezionista di figurine $nH_n$, punti fissi di una permutazione (media $1$), record (media $H_n$), inversioni ($n(n-1)/4$), attesa condizionata, identità di Wald $E[S_N]=E[N]E[X]$.Linearità del valore atteso e variabili indicatrici →).
3. Carico massimo con . Per un server ; per l'union bound .
- (a) Coda binomiale esatta: per . Per si è appena sopra : il minimo con garanzia è .
- (b) Il limite (da ) dà per : di nuovo .
- Il teorema (con ) dà con probabilità di errore : una garanzia molto più forte ma con costante larga.
- Simulazione (300 prove di richieste): massimo in prove, in , in . Quindi (il valore dell'union bound esatto è ) e mai in 300 prove.
Codice di verifica
import numpy as np
from math import comb, lgamma, log, log1p, exp, factorial
n, m = 1000, 1000
Ez = n * (1 - 1 / n) ** m
var = n * (n - 1) * (1 - 2 / n) ** m + Ez - Ez ** 2
print(round(Ez, 2), round(var, 2), round(var ** 0.5, 2), var / (400 - Ez) ** 2)
mm = 1
while n * (1 - 1 / n) ** mm > 0.05: # minimo m con E[Z] <= 0,05
mm += 1
print(mm)
N = 10 ** 6
def coda(k): # P(Bin(N, 1/N) >= k), somma dei primi 60 termini
p = 1 / N
return sum(exp(lgamma(N + 1) - lgamma(j + 1) - lgamma(N - j + 1)
+ j * log(p) + (N - j) * log1p(-p)) for j in range(k, k + 60))
for k in (9, 10, 11, 12):
print(k, round(N * coda(k), 5), round(N / factorial(k), 4))
rng = np.random.default_rng(5)
mx = [np.bincount(rng.integers(0, N, size=N), minlength=N).max() for _ in range(40)]
print(sorted(set(mx)), np.mean(mx))Risultato: 367.7 97.23 9.86 0.0932, poi 9899, poi le righe 9 1.12517 2.7557, 10 0.11142 0.2756, 11 0.01005 0.0251, 12 0.00083 0.0021; l'ultima riga (40 prove) mostra massimi tra e .
Versione ripasso
- Urne vuote. indicatore di server vuoto, ; : per , (). e , sd . Chebyshev ; simulato (Momenti e deviazioni - Markov, Chebyshev e mediana randomizzataVar(ΣX_i) = ΣVar + 2ΣCov, e basta l'indipendenza a coppie perché la varianza si sommi. Chebyshev dà code polinomiali (collezionista: P(T ≥ nH_n + cn) ≤ π²/(6c²)); il metodo del secondo momento dà P(X=0) ≤ Var(X)/E[X]². Algoritmo della mediana: campione di n^(3/4) elementi, due estremi d e u a ±√n, ordinamento dei soli elementi tra d e u; fallisce con probabilità ≤ n^(-1/4) ed è Las Vegas con 2n + o(n) confronti.Momenti e deviazioni - Markov, Chebyshev e mediana randomizzata →).
- Tutti raggiunti. Markov : (limite esponenziale: ; dà ). Media per riempire tutti: .
- Carico massimo, . ; coda binomiale esatta per , quindi per il ; con ( per , per ) di nuovo . Teorema: con errore . Simulazione: massimo in prove su (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 →).
- Errori tipici. Dimenticare l'union bound sulle urne; usare come se fosse esatto nel confronto con ; sommare le varianze degli come se fossero indipendenti (non lo sono: covarianza negativa).