Salta al contenuto
Note per Studenti Esercizio - confronti attesi di quicksort su 5 elementi, tre metodi

Esercizio - confronti attesi di quicksort su 5 elementi, tre metodi

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 →.

Testo. Quicksort con pivot scelto uniformemente a caso ordina 55 chiavi distinte. Sia C5C_5 il numero di confronti.

  1. Calcolare E[C5]E[C_5] sommando le probabilità di confronto delle coppie.
  2. Calcolarlo con la formula chiusa 2(n+1)Hn−4n2(n+1)H_n-4n e con la ricorrenza Cn=n−1+2n∑k<nCkC_n=n-1+\frac2n\sum_{k<n}C_k.
  3. Scrivere la distribuzione esatta di C5C_5 e ricalcolare la media.
  4. Con Markov, quale limite si ottiene su P(C5≥10)P(C_5\ge10)? Qual è il valore vero?

Soluzione

1. Coppie. Con le chiavi ordinate z1<⋯<z5z_1<\dots<z_5, la coppia (zi,zj)(z_i,z_j) è confrontata con probabilità 2j−i+1\frac2{j-i+1} (il primo pivot scelto tra zi..zjz_i..z_j deve essere uno dei due estremi). Per distanza d=j−id=j-i:

  • d=1d=1: 44 coppie, probabilità 22=1\frac22=1, contributo 44;
  • d=2d=2: 33 coppie, 23\frac23, contributo 22;
  • d=3d=3: 22 coppie, 24=12\frac24=\frac12, contributo 11;
  • d=4d=4: 11 coppia, 25\frac25, contributo 0,40{,}4.

E[C5]=4+2+1+0,4=7,4E[C_5]=4+2+1+0{,}4=7{,}4.

2. Formula e ricorrenza. H5=1+12+13+14+15=13760H_5=1+\frac12+\frac13+\frac14+\frac15=\frac{137}{60}, quindi 2⋅6⋅13760−4⋅5=1375−20=27,4−20=7,42\cdot6\cdot\frac{137}{60}-4\cdot5=\frac{137}5-20=27{,}4-20=7{,}4.

Ricorrenza, con C0=C1=0C_0=C_1=0 (usati come valori attesi): C2=1+22(C0+C1)=1C_2=1+\frac22(C_0+C_1)=1; C3=2+23(0+0+1)=83C_3=2+\frac23(0+0+1)=\frac83; C4=3+24(0+0+1+83)=3+12⋅113=296C_4=3+\frac24(0+0+1+\frac83)=3+\frac12\cdot\frac{11}3=\frac{29}6; C5=4+25(0+0+1+83+296)=4+25⋅6+16+296=4+25⋅516=4+175=375=7,4C_5=4+\frac25\big(0+0+1+\frac83+\frac{29}6\big)=4+\frac25\cdot\frac{6+16+29}6=4+\frac25\cdot\frac{51}6=4+\frac{17}5=\frac{37}5=7{,}4. ✓

3. Distribuzione. Il pivot ha rango r∈{1..5}r\in\{1..5\} con probabilità 15\frac15; costa 44 e lascia sottoproblemi di taglia r−1r-1 e 5−r5-r. Costi delle taglie piccole: taglie 0,10,1: 00; taglia 22: 11; taglia 33: pivot centrale (probabilità 13\frac13) costa 22, pivot estremo (23\frac23) costa 2+1=32+1=3, quindi C3∈{2,3}C_3\in\{2,3\} con probabilità 13,23\frac13,\frac23; taglia 44: i pivot di rango 2,32,3 (probabilità 12\frac12) costano 3+0+1=43+0+1=4, quelli di rango 1,41,4 costano 3+C33+C_3, cioè 55 con probabilità 12⋅13=16\frac12\cdot\frac13=\frac16 e 66 con 12⋅23=13\frac12\cdot\frac23=\frac13. Per i ranghi del pivot su 55 elementi:

  • r=3r=3 (probabilità 15\frac15): 4+C2+C2=4+1+1=64+C_2+C_2=4+1+1=6;
  • r=2,4r=2,4 (probabilità 25\frac25): 4+C1+C3=4+C34+C_1+C_3=4+C_3, cioè 66 con 25⋅13=215\frac25\cdot\frac13=\frac2{15} e 77 con 25⋅23=415\frac25\cdot\frac23=\frac4{15};
  • r=1,5r=1,5 (probabilità 25\frac25): 4+C44+C_4, cioè 88 con 15\frac15, 99 con 25⋅16=115\frac2{5}\cdot\frac16=\frac1{15} e 1010 con 25⋅13=215\frac25\cdot\frac13=\frac2{15}.

Il valore 66 ha probabilità 15+215=13\frac15+\frac2{15}=\frac13.

Distribuzione risultante:

C5C_5 6 7 8 9 10
probabilità 13\frac13 415\frac4{15} 15\frac15 115\frac1{15} 215\frac2{15}

Media: 6⋅5+7⋅4+8⋅3+9⋅1+10⋅215=30+28+24+9+2015=11115=7,4\frac{6\cdot5+7\cdot4+8\cdot3+9\cdot1+10\cdot2}{15}=\frac{30+28+24+9+20}{15}=\frac{111}{15}=7{,}4. ✓

4. Markov. P(C5≥10)≤E[C5]10=0,74P(C_5\ge10)\le\frac{E[C_5]}{10}=0{,}74. Il valore vero è 215≈0,133\frac2{15}\approx0{,}133: Markov è utile solo per dare una garanzia generale (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 →).

Risultato. E[C5]=375=7,4E[C_5]=\frac{37}5=7{,}4 con tutti e tre i metodi; C5∈{6,…,10}C_5\in\{6,\dots,10\} con probabilità 13,415,15,115,215\frac13,\frac4{15},\frac15,\frac1{15},\frac2{15}; P(C5≥10)=215P(C_5\ge10)=\frac2{15} contro il limite di Markov 0,740{,}74.

Verifica Python: ricorrenza e distribuzione esatte con Fraction, simulazione di 100 000100\,000 esecuzioni di quicksort: media 7,407{,}40.

Versione ripasso

Teoria collegata