Salta al contenuto
Note per Studenti Esercizio - distribuzione esatta dei confronti di quicksort su 6 elementi e caso pessimo

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 n=6n=6 chiavi distinte.

  1. Con pivot sempre l'ultimo elemento e input già ordinato, quanti confronti si fanno? E con pivot casuale sullo stesso input, in media?
  2. Dimostrare che, con pivot casuale, il numero massimo di confronti (n2)\binom n2 si ha con probabilità 2n−1n!\frac{2^{n-1}}{n!} e calcolarla per n=6n=6 e n=10n=10.
  3. Distribuzione esatta di C6C_6 (valori e probabilità) e media.
  4. Con Markov, limite su P(C6≥12)P(C_6\ge12); confronto con il valore vero.
  5. 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 n−1n-1 elementi da una parte: 5+4+3+2+1=15=(62)5+4+3+2+1=15=\binom62 confronti, sempre. Con pivot casuale la media non dipende dall'input: C6=2⋅7⋅H6−24=14⋅4920−24=34,3−24=10,3C_6=2\cdot7\cdot H_6-24=14\cdot\frac{49}{20}-24=34{,}3-24=10{,}3. È il vantaggio della randomizzazione: nessun input fissato è cattivo.

2. Probabilità del caso pessimo. Il totale (n2)\binom n2 si ottiene solo se in ogni sottoproblema il pivot è il minimo o il massimo (altrimenti la somma ∑(mi−1)\sum(m_i-1) delle taglie dei sottoproblemi diminuisce). Un sottoproblema di taglia m≥2m\ge2 ha 22 pivot estremi su mm, probabilità 2m\frac2m, e il sottoproblema che resta ha taglia m−1m-1. Dunque P(Cn=(n2))=∏m=2n2m=2n−1n!.P\Big(C_n=\binom n2\Big)=\prod_{m=2}^n\frac2m=\frac{2^{n-1}}{n!}. (m=2m=2 ha probabilità 11, perché entrambi gli elementi sono estremi.) n=6n=6: 32720=245≈0,0444\frac{32}{720}=\frac2{45}\approx0{,}0444. n=10n=10: 5123 628 800≈1,4⋅10−4\frac{512}{3\,628\,800}\approx1{,}4\cdot10^{-4}.

3. Distribuzione di C6C_6. Il pivot ha rango r=1..6r=1..6 (probabilità 16\frac16), costa 55 e lascia taglie r−1r-1 e 6−r6-r; i due sottoproblemi sono indipendenti. Servono le distribuzioni di CmC_m per m≤5m\le5: C0=C1=0C_0=C_1=0; C2=1C_2=1; C3∈{2,3}C_3\in\{2,3\} con 13,23\frac13,\frac23; C4∈{4,5,6}C_4\in\{4,5,6\} con 12,16,13\frac12,\frac16,\frac13; C5∈{6,…,10}C_5\in\{6,\dots,10\} con 13,415,15,115,215\frac13,\frac4{15},\frac15,\frac1{15},\frac2{15}. Componendo sui ranghi si ottiene:

C6C_6 8 9 10 11 12 13 14 15
probabilità (su 9090) 10 35 5 20 8 6 2 4

cioè 19,718,118,29,445,115,145,245\frac19,\frac7{18},\frac1{18},\frac29,\frac4{45},\frac1{15},\frac1{45},\frac2{45} (somma 9090\frac{90}{90} con denominatore comune 9090). Esempi: il valore 1515 viene da r=1r=1 o r=6r=6 con C5=10C_5=10: 26⋅215=245\frac26\cdot\frac2{15}=\frac2{45} ✓ (la formula del punto 2). Il minimo 88 si ha solo con r=3r=3 o r=4r=4 (taglie 22 e 33) e C3=2C_3=2: 5+1+2=85+1+2=8, probabilità 26⋅13=19\frac26\cdot\frac13=\frac19 ✓. Media: 8⋅10+9⋅35+10⋅5+11⋅20+12⋅8+13⋅6+14⋅2+15⋅490=80+315+50+220+96+78+28+6090=92790=10,3\frac{8\cdot10+9\cdot35+10\cdot5+11\cdot20+12\cdot8+13\cdot6+14\cdot2+15\cdot4}{90}=\frac{80+315+50+220+96+78+28+60}{90}=\frac{927}{90}=10{,}3 ✓.

4. Markov. P(C6≥12)≤10,312=0,858P(C_6\ge12)\le\frac{10{,}3}{12}=0{,}858. Il valore vero è 890+690+290+490=2090=29≈0,222\frac8{90}+\frac6{90}+\frac2{90}+\frac4{90}=\frac{20}{90}=\frac29\approx0{,}222. Per C6≥2E[C6]=20,6C_6\ge2E[C_6]=20{,}6 Markov dà ≤12\le\frac12, ma il massimo è 1515: la probabilità vera è 00. 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 {1..6}\{1..6\} e, dato il rango, le due parti sono permutazioni uniformi dei rispettivi elementi: stessa ricorrenza di prima. Enumerando le 720720 permutazioni e applicando quicksort con pivot ultimo la media è 10310=10,3\frac{103}{10}=10{,}3. La differenza con il punto 1: qui la casualità è nell'input, non nell'algoritmo, e un input ordinato costa sempre 1515.

Risultato. 1515 confronti (pivot fisso, input ordinato) contro 10,310{,}3 in media (pivot casuale); P(Cn=(n2))=2n−1n!P(C_n=\binom n2)=\frac{2^{n-1}}{n!}, 245\frac2{45} per n=6n=6; E[C6]=10310E[C_6]=\frac{103}{10}; P(C6≥12)=29P(C_6\ge12)=\frac29 contro il limite di Markov 0,8580{,}858.

Verifica Python: distribuzione esatta per composizione delle distribuzioni con Fraction (tutti i valori della tabella); enumerazione delle 720720 permutazioni con pivot ultimo: media 10310\frac{103}{10}; simulazione con pivot casuale su input ordinato: media 10,3010{,}30 e frequenza di 1515 confronti 0,04430{,}0443 (200 000200\,000 prove).

Versione ripasso

Teoria collegata