Esercizio - distribuzione esatta dei confronti di quicksort su 6 elementi e caso pessimo
Teoria: Analisi probabilistica di quicksort e quickselectCon pivot casuale due elementi di rango $i<j$ vengono confrontati con probabilità $2/(j-i+1)$; sommando sulle coppie il numero atteso di confronti di quicksort è esattamente $2(n+1)H_n-4n\approx2n\ln n-2{,}85,n$ (stessa formula dalla ricorrenza $C_n=n-1+\frac2n\sum_{k<n}C_k$). Quickselect trova il $k$-esimo elemento con attesa lineare, al più $4n$ confronti (mediana $\approx3{,}39,n$). Pivot fisso su input casuale equivale a pivot casuale su input qualunque.Analisi probabilistica di quicksort e quickselect → (pivot casuale o input casuale, probabilità del caso pessimo).
Testo. Quicksort ordina chiavi distinte.
- Con pivot sempre l'ultimo elemento e input già ordinato, quanti confronti si fanno? E con pivot casuale sullo stesso input, in media?
- Dimostrare che, con pivot casuale, il numero massimo di confronti si ha con probabilità e calcolarla per e .
- Distribuzione esatta di (valori e probabilità) e media.
- Con Markov, limite su ; confronto con il valore vero.
- Mostrare che il pivot fisso su input casuale ha la stessa media del pivot casuale.
Soluzione
1. Input ordinato. Con pivot l'ultimo (il massimo) ogni partizione lascia elementi da una parte: confronti, sempre. Con pivot casuale la media non dipende dall'input: . È il vantaggio della randomizzazione: nessun input fissato è cattivo.
2. Probabilità del caso pessimo. Il totale si ottiene solo se in ogni sottoproblema il pivot è il minimo o il massimo (altrimenti la somma delle taglie dei sottoproblemi diminuisce). Un sottoproblema di taglia ha pivot estremi su , probabilità , e il sottoproblema che resta ha taglia . Dunque ( ha probabilità , perché entrambi gli elementi sono estremi.) : . : .
3. Distribuzione di . Il pivot ha rango (probabilità ), costa e lascia taglie e ; i due sottoproblemi sono indipendenti. Servono le distribuzioni di per : ; ; con ; con ; con . Componendo sui ranghi si ottiene:
| 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
|---|---|---|---|---|---|---|---|---|
| probabilità (su ) | 10 | 35 | 5 | 20 | 8 | 6 | 2 | 4 |
cioè (somma con denominatore comune ). Esempi: il valore viene da o con : ✓ (la formula del punto 2). Il minimo si ha solo con o (taglie e ) e : , probabilità ✓. Media: ✓.
4. Markov. . Il valore vero è . Per Markov dà , ma il massimo è : la probabilità vera è . Markov usa solo la media e quindi è molto largo (Disuguaglianze di Markov, Chebyshev e JensenMarkov: per X ≥ 0, P(X ≥ a) ≤ E[X]/a; Chebyshev: P(|X − μ| ≥ ε) ≤ Var(X)/ε²; Jensen: per φ convessa, φ(E[X]) ≤ E[φ(X)]. Stimano probabilità e medie conoscendo solo media e varianza.Disuguaglianze di Markov, Chebyshev e Jensen →).
5. Pivot fisso su input casuale. Con pivot l'ultimo e la sequenza una permutazione uniforme di sei elementi, il pivot ha rango uniforme in e, dato il rango, le due parti sono permutazioni uniformi dei rispettivi elementi: stessa ricorrenza di prima. Enumerando le permutazioni e applicando quicksort con pivot ultimo la media è . La differenza con il punto 1: qui la casualità è nell'input, non nell'algoritmo, e un input ordinato costa sempre .
Risultato. confronti (pivot fisso, input ordinato) contro in media (pivot casuale); , per ; ; contro il limite di Markov .
Verifica Python: distribuzione esatta per composizione delle distribuzioni con Fraction (tutti i valori della tabella); enumerazione delle permutazioni con pivot ultimo: media ; simulazione con pivot casuale su input ordinato: media e frequenza di confronti ( prove).
Versione ripasso
- Pivot ultimo su input ordinato: . Pivot casuale: media per ogni input (Analisi probabilistica di quicksort e quickselectCon pivot casuale due elementi di rango $i<j$ vengono confrontati con probabilità $2/(j-i+1)$; sommando sulle coppie il numero atteso di confronti di quicksort è esattamente $2(n+1)H_n-4n\approx2n\ln n-2{,}85,n$ (stessa formula dalla ricorrenza $C_n=n-1+\frac2n\sum_{k<n}C_k$). Quickselect trova il $k$-esimo elemento con attesa lineare, al più $4n$ confronti (mediana $\approx3{,}39,n$). Pivot fisso su input casuale equivale a pivot casuale su input qualunque.Analisi probabilistica di quicksort e quickselect →).
- Caso pessimo solo se ogni pivot è un estremo: ; : ; : .
- Distribuzione (rango del pivot uniforme, sottoproblemi indipendenti): con probabilità ; media .
- Controlli sulla tabella: il minimo solo con e (): ; il massimo con e : . Numeratori su : .
- Markov: , vero (Disuguaglianze di Markov, Chebyshev e JensenMarkov: per X ≥ 0, P(X ≥ a) ≤ E[X]/a; Chebyshev: P(|X − μ| ≥ ε) ≤ Var(X)/ε²; Jensen: per φ convessa, φ(E[X]) ≤ E[φ(X)]. Stimano probabilità e medie conoscendo solo media e varianza.Disuguaglianze di Markov, Chebyshev e Jensen →).
- Pivot fisso su input casuale: stessa ricorrenza, media (enumerate permutazioni).
- Verifica: Fraction, enumerazione, simulazione e .
- Errore tipico: confondere casualità dell'input (caso medio) con casualità dell'algoritmo (attesa su ogni input).