Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i...
-
Upload
gabriella-drago -
Category
Documents
-
view
222 -
download
0
Transcript of Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i...
![Page 1: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/1.jpg)
Alberi di Ricorrenza
Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu-zione necessari per risolvere una ricorrenza col Metodo Iterativo.
� Utili per semplificare i calcoli ed evidenziare le condizioni limite della ricorrenza.
![Page 2: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/2.jpg)
Alberi di Ricorrenza
Esempio: T(n) = 2T(n/2) + n2
2
nT
2n
2
nT
![Page 3: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/3.jpg)
Alberi di Ricorrenza
Esempio: T(n) = 2T(n/2) + n2
4
nT
2
2
n
4
nT
4
nT
4
nT
2n2
2
n
![Page 4: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/4.jpg)
Alberi di Ricorrenza
Esempio: T(n) = 2T(n/2) + n2
2
2
n 2
2
n
2
4
n 2
4
n 2
4
n
2
4
n
2n
![Page 5: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/5.jpg)
Alberi di Ricorrenza
Esempio: T(n) = 2T(n/2) + n2
2
2
n 2
2
n
2
4
n 2
4
n
2
4
n
2
4
n
2n
2
4
1n
2
2
1n
2n
1
![Page 6: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/6.jpg)
Alberi di Ricorrenza
Esempio: T(n) = 2T(n/2) + n2
2
2
n 2
2
n
2
4
n 2
4
n
2
4
n
2
4
n
2n
2
4
1n
2
2
1n
nlog
2n
1
![Page 7: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/7.jpg)
Alberi di Ricorrenza
Esempio: T(n) = 2T(n/2) + n2
2
2
n 2
2
n
2
4
n 2
4
n
2
4
n
2
4
n
2n
2
4
1n
2
2
1n
2
0
2log
0
2log
0
2 22
1
2
1
2
1)( nnnnnT
k
kn
k
kn
k
k
2n
1
nlog
![Page 8: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/8.jpg)
Alberi di Ricorrenza
Esempio: T(n) = 2T(n/2) + n2
2
2
n 2
2
n
2
4
n 2
4
n
2
4
n
2
4
n
2n
2
4
1n
2
2
1n
)( 2n
2
0
2log
0
2log
0
2 22
1
2
1
2
1)( nnnnnT
k
kn
k
kn
k
k
2n
1
nlog
![Page 9: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/9.jpg)
Alberi di Ricorrenza
Esempio: T(n) = 4T(n/2) + n
2
n
4
n
2
n
1
n n
n2
n4
nlog 2
n
2
n
4
n
4
n
4
n
4
n
4
n
4
n
4
n4
n
4
n
4
n
4
n
4
n
4
n
4
n
4
n
![Page 10: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/10.jpg)
Alberi di Ricorrenza
Esempio: T(n) = 4T(n/2) + n
2
n
4
n
2
n
1
n n
n2
n4
)( 2n
nlog 2
n
2
n
4
n
4
n
4
n
4
n
4
n
4
n
4
n4
n
4
n
4
n
4
n
4
n
4
n
4
n
4
n
12)12(12
1222)( 2
1loglog
0
log
0
nnnnnnnT
nn
k
kn
k
k
![Page 11: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/11.jpg)
Alberi di Ricorrenza
Esempio: T(n) = 4T(n/2) + n2
2
2
n
2
2
4
n
1
2n 2n
nlog2n
2n
2
2
n
2
2
n
2
2
n
2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n
![Page 12: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/12.jpg)
Alberi di Ricorrenza
Esempio: T(n) = 4T(n/2) + n2
2
2
n
2
2
4
n
1
2n 2n
)log( 2 nn
nlog
nnnnnTn
k
n
klog1)( 2
log
1
2log
1
2
2n
2n
2
2
n
2
2
n
2
2
n
2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n2
2
4
n
![Page 13: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/13.jpg)
Analisi di QuickSort: caso medio
Il tempo di esecuzione di QuickSort dipende dal bilanciamento delle partizioni effettuate dall’algoritmo Partiziona
� Ci resta da capire come si comporta nel caso medio: è più vicino al caso migliore o al caso peggiore?
![Page 14: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/14.jpg)
Analisi di QuickSort: caso medio
Analizziamo alcuni possibili casi di cattivo bilanciamento delle partizioni.
Supponiamo che ad ogni chiamata l’algo-ritmo Partiziona produca una partizione che è i 9/10 dell’altra (partizionamento sbi-lanciato)
Supponiamo che ad ogni chiamata l’algo-ritmo Partiziona produca una partizione che è i 99/100 dell’altra (partizionamento molto sbilanciato)
![Page 15: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/15.jpg)
Analisi di QuickSort: caso medio
Supponiamo che ad ogni chiamata l’algoritmo Partiziona produca una partizione che è i 9/10 dell’altra (partizionamento sbilanciato)
L’equazione di ricorrenza diventa quindi:
T(n) = T(9n/10) + T(n/10) + n
![Page 16: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/16.jpg)
Analisi di QuickSort: caso medio
T(n) = T(9n/10) + T(n/10) + n
10
n
100
n
100
9n
10
9n
100
9n
100
81n
1000
81n
1000
729n
1
1
n n
n
n
)log( nn
n
n
n
n10log
n910log
![Page 17: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/17.jpg)
Analisi di QuickSort: caso medio
T(n) = T(9n/10) + T(n/10) + n
10
n
100
n
100
9n
10
9n
100
9n
100
81n
1000
81n
1000
729n
1
1
n n
n
n
)log( nn
n
n
n
n10log
n910log
)(loglog9/10log
loglog 9/10 nnc
nn
![Page 18: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/18.jpg)
Analisi di QuickSort: caso medio
Supponiamo che ad ogni chiamata l’algoritmo Partiziona produca una partizione che è i 99/100 dell’altra (partizionamento sbilanciato)
L’equazione di ricorrenza diventa quindi:
T(n) = T(99n/100) + T(n/100) + n
![Page 19: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/19.jpg)
Analisi di QuickSort: caso medio
T(n) = T(99n/100) + T(n/100) + n
100
n
10000
n
10000
99n
100
99n
10000
99n
10000
9801n
3100
9801n3
3
100
99 n
1
1
n n
n
n
)log( nn
n
n
n
n100log
n99100log
![Page 20: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/20.jpg)
Analisi di QuickSort: caso medio
In effetti si può dimostrare che:
ogni volta che Partiziona suddivide l’array in porzioni che differiscono per un fattore proporzionale costante,
il Tempo di Esecuzione è (n log n)
![Page 21: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/21.jpg)
Analisi di QuickSort: caso medio
È necessario definire una nozione chiara di caso medio.
Assumiamo che tutte le permutazioni dei valori in input abbiamo uguale probabilità.
Assumendo di eseguire QuickSort su un array di input casuale (random) ci aspet-tiamo che alcune partizioni siano ben bilanciate ed altre mal bilanciate.
![Page 22: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/22.jpg)
Analisi di QuickSort: caso medio
Nel caso medio Partiziona produrrà un “mix” di partizioni ben bilanciate e mal bilanciate, distribuite casualmente lungo l’albero di ricorsione.
Supponiamo che le partizioni ben bilanciate e quelle mal bilanciate si alternino nei diversi livelli dell’albero, cioè:
� a livello i le partizioni sono di dimensioni 1 e n -
1� a livello i + 1 le partizioni sono di dimensioni n/2
ed n/2
![Page 23: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/23.jpg)
Analisi di QuickSort: caso medio
1
n
1n
2
)1( n2
)1( n
n
1n1
partizionisbilanciate
partizioni bilanciate
![Page 24: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/24.jpg)
Analisi di QuickSort: caso medio
1
n
1n
2
)1( n2
)1( n
)(12 nn
Combinando il costo di un partizionamento sbilanciato seguito da uno bilanciato, si ottiene un costo combinato sui due livelli che è (n)
![Page 25: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/25.jpg)
Analisi di QuickSort: caso medio
n
12
)1(
n
2
)1( n
)(n
La situazione del partizionamento precedente non è peggiore di questa, che ha ancora
un costo dell’ordine di (n) e rappresenta un partizionamento piuttosto ben bilanciato
![Page 26: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/26.jpg)
Supponendo allora che le partizioni ben bilanciate e quelle mal bilanciate si alternino nei diversi livelli dell’albero:
otteniamo che in questo caso il costo medio è ancora O(n log n)
dove però la notazione O-grande nasconde qui una costante maggiore che nel caso migliore
Analisi di QuickSort: caso medio
![Page 27: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/27.jpg)
L’analisi che abbiamo fatto si basa sull’as-sunzione che ciascun input abbia uguale probabilità di presentarsi.
Questa non è però sempre un’assunzione sufficientemente generale!
Possiamo fare di più! Invece di assumere una distribuzione casuale, è possibile imporla!
ad esempio permutando in maniera casuale (alcuni) elementi dell’array in input
Analisi di QuickSort
![Page 28: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/28.jpg)
Analisi di QuickSort Random
Partiziona-Random(A,p,r)
i = Random(p,r)
“scambia A[p]con A[i]”
return Partiziona(A,p,r)
Random(p,r): ritorna un intero
che è un valore casuale compreso
tra p ed r.
![Page 29: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/29.jpg)
Analisi di QuickSort Random
Partiziona-Random(A,p,r)
i = Random(p,r)
“scambia A[p]con A[i]”
return Partiziona(A,p,r)
Sposta in A[p] il valore contenuto
in A[i ] determinando così una
scelta casuale del Pivot.
![Page 30: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/30.jpg)
Analisi di QuickSort Random
Partiziona-Random(A,p,r)
i = Random(p,r)
“scambia A[p]con A[i]”
return Partiziona(A,p,r)
Quick-Sort-Random(A,p,r)
IF p < r
THEN
q = Partiziona-Random(A,p,r)
Quick-Sort-Random(A,p,q)
Quick-Sort-Random(A,q + 1,r)
![Page 31: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/31.jpg)
Analisi di QuickSort Random
La versione casuale di QuickSort presentata:
� non modifica le prestazioni nel caso peggiore (che rimane quadratico) Perche?
� ma rende le prestazioni indipendenti dall’ordinamento iniziale dell’array di input
� non c’è alcun particolare input che determina il verificarsi del caso peggiore.
![Page 32: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/32.jpg)
Analisi di QuickSort Random: Caso Peggiore
Partiziona suddivide un array di dimensione n in due partizioni di dimensioni che diremo q e n - q, rispettivamente.
Per calcolare il caso peggiore, cercheremo di calcolare il valore massimo del tempo di esecuzione dato dalla ricorrenza
T(n) = T(q) + T(n - q) + (n)
![Page 33: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/33.jpg)
Analisi di QuickSort Random: Caso Peggiore
Partiziona suddivide un array di dimensione n in due partizioni di dimensioni che diremo q e n - q, rispettivamente.
Per calcolare il caso peggiore, cercheremo di calcolare il valore massimo, al variare di q, del tempo di esecuzione dato dalla ricorrenza
T(n) = T(q) + T(n - q) + (n)
Cioè:
T(n) = max {T(q) + T(n - q) } + (n) 1 q n-1
![Page 34: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/34.jpg)
Analisi di QuickSort Random: Caso Peggiore
T(n) = max {T(q) + T(n - q) } + (n) 1 q n-1
Usiamo il metodo di sostituzione
Ipotizziamo T(n) cn2
Sostituendo otteniamo
T(n) max { cq2 + c(n - q)2 } + (n) 1 q n-1
c max { q2 + (n - q)2 } + (n) 1 q n-1
![Page 35: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/35.jpg)
Analisi di QuickSort Random: Caso Peggiore
T(n) = max {T(q) + T(n - q) } + (n) 1 q n-1
T(n) c max { q2 + (n - q)2 } + (n) 1 q n-1
Ci serve sapere quando q2 + (n - q)2 raggiunge il valore massimo tra 1 e n - 1
Calcoliamo la sua derivata prima:
2q - 2(n - q) = 4q - 2n
che è negativa per q < n/2 e positiva per q > n/2
![Page 36: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/36.jpg)
Analisi di QuickSort Random: Caso Peggiore
T(n) = max {T(q) + T(n - q) } + (n) 1 q n-1
T(n) c max { q2 + (n - q)2 } + (n) 1 q n-1
La derivata prima:
2q - 2(n - q) = 4q - 2n
è negativa per q < n/2 e positiva per q > n/2
Quindi, q2 + (n - q)2 nell’intervallo [1,n - 1] raggiunge il valore massimo quando q = 1 o q = n - 1.
![Page 37: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/37.jpg)
Analisi di QuickSort Random: Caso Peggiore
T(n) = max {T(q) + T(n - q) } + (n) 1 q n-1
T(n) c max { q2 + (n - q)2 } + (n) 1 q n-1
c ( 12 + (n - 1)2 ) + (n)
c ( n2 - 2(n - 1) ) + (n)
c n2 - 2c (n - 1) + (n)
![Page 38: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/38.jpg)
Analisi di QuickSort Random: Caso Peggiore
T(n) = max {T(q) + T(n - q) } + (n) 1 q n-1
T(n) c max { q2 + (n - q)2 } + (n) 1 q n-1
c ( 12 + (n - 1)2 ) + (n)
c ( n2 - 2(n - 1) ) + (n)
c n2 - 2c (n - 1) + (n)
c n2
poiché possiamo scegliere c abbastanza grande da rendere 2c (n - 1) dominante su (n)
![Page 39: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/39.jpg)
Analisi di QuickSort Random: Caso Migliore
Partiziona suddivide un array di dimensione n in due partizioni di dimensioni che diremo q e n - q, rispettivamente.
Per calcolare il caso migliore, cercheremo di calcolare il valore minimo del tempo di esecuzione dato dalla ricorrenza
T(n) = T(q) + T(n - q) + (n)
Cioè:
T(n) = min {T(q) + T(n - q) } + (n) 1 q n-1
![Page 40: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/40.jpg)
Analisi di QuickSort Random: Caso Migliore
T(n) = min {T(q) + T(n - q) } + (n) 1 q n-1
Usiamo il metodo di sostituzione
Ipotizziamo T(n) c n log n
![Page 41: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/41.jpg)
Analisi di QuickSort Random: Caso Migliore
T(n) = min {T(q) + T(n - q) } + (n) 1 q n-1
Usiamo il metodo di sostituzione
Ipotizziamo T(n) c n log n
Sostituendo otteniamo
T(n) min { c q log q + c (n - q) log (n - q) } + (n) 1 q n-1
c min {q log q + (n - q) log (n - q) } + (n) 1 q n-1
![Page 42: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/42.jpg)
Analisi di QuickSort Random: Caso Migliore
T(n) = min {T(q) + T(n - q) } + (n) 1 q n-1
T(n) c min {q log q + (n - q) log (n - q) } + (n) 1 q n-1
Ci serve sapere quando q log q + (n - q) log (n - q) raggiunge il valore minimo tra 1 e n - 1
Calcoliamo la sua derivata prima:
log q - log(n - q)
che è nulla per q = n/2, negativa per q < n/2 e po-sitiva per q > n/2 (quindi q = n/2 è un minimo)
![Page 43: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/43.jpg)
Analisi di QuickSort Random: Caso Migliore
T(n) = min {T(q) + T(n - q) } + (n) 1 q n-1
T(n) c min {q log q + (n - q) log (n - q) } + (n) 1 q n-1
La derivata prima:
log q - log(n - q)
che è nulla per q = n/2, negativa per q < n/2 e po-sitiva per q > n/2 (cioè q = n/2 è un minimo)
Quindi q log q + (n - q) log (n - q) raggiunge il valore minimo tra 1 e n - 1 quando q = n/2
![Page 44: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/44.jpg)
Analisi di QuickSort Random: Caso Migliore
T(n) = min {T(q) + T(n - q) } + (n) 1 q n-1
T(n) c min {q log q + (n - q) log (n - q) } + (n) 1 q n-1
c ( n log n/2 ) + (n)
c n log n - c n + (n)
c n log n - c n + (n)
![Page 45: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/45.jpg)
Analisi di QuickSort Random: Caso Migliore
T(n) = min {T(q) + T(n - q) } + (n) 1 q n-1
T(n) c min {q log q + (n - q) log (n - q) } + (n) 1 q n-1
c ( n log n/2 ) + (n)
c n log n - c n + (n)
c n log n - c n + (n)
c n log n
poiché possiamo scegliere c abbastanza grande da rendere c n dominante su (n)
![Page 46: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/46.jpg)
Analisi di QuickSort Random: Caso Medio
Quello che dobbiamo fare è costruire l’equazio-ne di ricorrenza per il caso medio.
Assumeremo che tutti gli elementi siano distinti per semplificare l’analisi.
Partiziona-Random chiama Partiziona dopo aver scambiato A[p] con un elemento a caso dell’array
quale sarà allora il valore di q ritornato da Partiziona?
![Page 47: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/47.jpg)
Analisi di QuickSort Random: Caso Medio
Quale sarà allora il valore di q ritornato Partiziona?
Dipenderà dal rango di A[p] (che è un elemento casuale dell’array).
Il rango di un numero x rispetto a A[p,…,r] è il numero di elementi di A[p,…,r] che sono minori o uguali ad x
![Page 48: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/48.jpg)
Analisi di QuickSort Random: Caso Medio
Quale sarà allora il valore di q ritornato Partiziona?
Dipenderà dal rango di A[p] (che è un elemento casuale dell’array).
Essendo A[p] un elemento casuale dell’array, la probabilità che il rango di A[p] sia i (con i = 1,…,n) sarà 1/n (dove n = r - p + 1)
poiché tutti gli elementi hanno uguale probabilità di essere scelti e sono tutti distinti.
![Page 49: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/49.jpg)
Analisi di QuickSort Random: Caso Medio
Quale sarà allora il valore di q ritornato Partiziona?
Se il rango è 1 Partiziona ritornerà una partizione lunga 1 e una lunga n - 1
Se il rango è 2 Partiziona ritornerà ancora una partizione lunga 1 e una lunga n - 1
… Se il rango è h Partiziona ritornerà una
partizione lunga h - 1 e una lunga n - h + 1 Se il rango è n Partiziona ritornerà una
partizione lunga n - 1 e una lunga 1
![Page 50: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/50.jpg)
Analisi di QuickSort Random: Caso Medio
Quale sarà allora il valore di q ritornato Partiziona?
Se il rango è 1 Partiziona ritornerà una partizione lunga 1 e una lunga n - 1
Se il rango è h (per h 2) Partiziona ritornerà una partizione lunga h - 1 e una lunga n - h + 1
ciascun caso ha probabilità 1/n
![Page 51: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/51.jpg)
Analisi di QuickSort Random: Caso Medio
Quale sarà allora il valore di q ritornato Partiziona?
Se il rango è 1 Partiziona ritornerà una partizione lunga 1 e una lunga n - 1
allora q = 1 e QuickSort sarà chiamato ricorsivamente su partizioni di dimensioni 1 e n - 1
con probabilità 1/n
![Page 52: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/52.jpg)
Analisi di QuickSort Random: Caso Medio
Quale sarà allora il valore di q ritornato Partiziona?
Se il rango è h (per h 2) Partiziona ritornerà una partizione lunga h - 1 e una lunga n - h + 1
allora q = h - 1 e QuickSort sarà chiamato ricorsivamente su partizioni di dimensioni h - 1 e n - h + 1
con probabilità 1/n
![Page 53: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/53.jpg)
Analisi di QuickSort Random: Caso Medio
)())()(()1()1(1
)(1
1nqnTqTnTT
nnT
n
q
Se il rango è 1 Partiziona ritornerà una partizione lunga 1 e una lunga n - 1
![Page 54: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/54.jpg)
Analisi di QuickSort Random: Caso Medio
)())()(()1()1(1
)(1
1nqnTqTnTT
nnT
n
q
Se il rango è 1 Partiziona ritornerà una partizione lunga 1 e una lunga n - 1
Se il rango è h (per h 2) Partiziona ritornerà una
partizione lunga h - 1 e una lunga n - h + 1 (q varia tra 1 e n - 1)
![Page 55: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/55.jpg)
Analisi di QuickSort Random: Caso Medio
)())()(()1()1(1
)(1
1nqnTqTnTT
nnT
n
q
Se il rango è 1 Partiziona ritornerà una partizione lunga 1 e una lunga n - 1
Se il rango è h (per h 2) Partiziona ritornerà una
partizione lunga h - 1 e una lunga n - h + 1 (q varia tra 1 e n - 1)
ciascun caso ha probabilità 1/n
![Page 56: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/56.jpg)
Analisi di QuickSort Random: Caso Medio
L’equazione di ricorrenza per il caso medio sarà quindi:
)())()(()1()1(1
)(1
1nqnTqTnTT
nnT
n
q
![Page 57: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/57.jpg)
Analisi di QuickSort Random: Caso Medio
)())()(()1()1(1
)(1
1nqnTqTnTT
nnT
n
q
)()1(1
)1()1(1 2n
nnTT
n
![Page 58: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/58.jpg)
Analisi di QuickSort Random: Caso Medio
)())()(()1()1(1
)(1
1nqnTqTnTT
nnT
n
q
)()1(1
)1()1(1 2n
nnTT
n
)()(1 2 nnn
![Page 59: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/59.jpg)
Analisi di QuickSort Random: Caso Medio
)())()((1
)(1
1nqnTqT
nnT
n
q
)()1()1(1
nnTTn
poiché O(n) viene assorbito da (n)
![Page 60: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/60.jpg)
Analisi di QuickSort Random: Caso Medio
)())()((1
)(1
1nqnTqT
nnT
n
q
)()(2 1
1nqT
n
n
q
poiché per q che varia fra 1 e n - 1 ciascun valo-re di T(q) compare due volte nella sommato-ria, una volta come T(q) ed una come T(n - q).
![Page 61: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/61.jpg)
Analisi di QuickSort Random: Caso Medio
L’equazione di ricorrenza diviene:
La risolveremo col metodo di sostituzione
)()(2
)(1
1nqT
nnT
n
q
![Page 62: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/62.jpg)
Analisi di QuickSort Random: Caso Medio
L’equazione di ricorrenza diviene:
Vogliamo dinostrare che T(n) = O(n log n)
)()(2
)(1
1nqT
nnT
n
q
![Page 63: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/63.jpg)
Analisi di QuickSort Random: Caso Medio
L’equazione di ricorrenza diviene:
Ipotizziamo T(n) a n log n
)()(2
)(1
1nqT
nnT
n
q
![Page 64: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/64.jpg)
Analisi di QuickSort Random: Caso Medio
T(n) = O(n log n)
)()(2
)(1
1nqT
nnT
n
q
)(log2 1
1
nqaqn
n
q
![Page 65: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/65.jpg)
Analisi di QuickSort Random: Caso Medio
T(n) = O(n log n)
)()(2
)(1
1nqT
nnT
n
q
)(log2 1
1
nqaqn
n
q
)(log2 1
1
nqqn
a n
q
![Page 66: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/66.jpg)
Analisi di QuickSort Random: Caso Medio
T(n) = O(n log n)
poiché si può dimostrare che
)()(2
)(1
1nqT
nnT
n
q
221
1 8
1log
2
1log nnnqq
n
q
)(log2 1
1
nqqn
a n
q
![Page 67: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/67.jpg)
Analisi di QuickSort Random: Caso Medio
T(n) = O(n log n)
)()(2
)(1
1nqT
nnT
n
q
221
1 8
1log
2
1log nnnqq
n
q
)(8
1log
2
12 22 nnnnn
a
)(log2 1
1
nqqn
a n
q
![Page 68: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/68.jpg)
Analisi di QuickSort Random: Caso Medio
T(n) = O(n log n)
)()(2
)(1
1nqT
nnT
n
q
)(8
1log
2
12 22 nnnnn
a
)(4
log nna
nan
![Page 69: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/69.jpg)
Analisi di QuickSort Random: Caso Medio
T(n) = O(n log n )
)()(2
)(1
1nqT
nnT
n
q
)()1(2
8
1log
2
12 22 nnn
bnnn
n
a
)(24
log nbna
nan
n
annan
4)(log
![Page 70: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/70.jpg)
Analisi di QuickSort Random: Caso Medio
T(n) = O(n log n)
)()(2
)(1
1nqT
nnT
n
q
)(4
log nna
nan
n
annan
4)(log
nan log
Scegliendo a grande abbastanza da rendere a n/4 dominante su (n)
![Page 71: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/71.jpg)
Analisi di QuickSort Random: Caso Medio
Possiamo concludere che
T(n) = O(n log n)
A patto di dimostrare che
221
1 8
1log
2
1log nnnqq
n
q
![Page 72: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/72.jpg)
Analisi di QuickSort Random: Caso Medio
Questo limite non è però sufficiente per risolvere la ricorrenza, ma quello che abbiamo calcolato sarà utile per trovane uno adeguato!
1
1
1
1loglog
n
k
n
kknkk
nn log2
2log)1(
2
1 2 nnnnn
![Page 73: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/73.jpg)
1
2/
12/
1
1
1logloglog
n
nk
n
k
n
kkkkkkk
12/
1
12/
1)2/log(logn
k
n
kknkk
12/
1)1(logn
kkn
1
1
1
1loglog
n
k
n
kknkk
Analisi di QuickSort Random: Caso Medio
![Page 74: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/74.jpg)
1
2/
12/
1
1
1logloglog
n
nk
n
k
n
kkkkkkk
1
2/
1
2/loglog
n
nk
n
nkknkk
12/
1)1(logn
kkn
12/
1log
n
kkk
1
1
1
1loglog
n
k
n
kknkk
Analisi di QuickSort Random: Caso Medio
![Page 75: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/75.jpg)
1
2/
1
2/loglog
n
nk
n
nkknkk
12/
1)1(logn
kkn
12/
1log
n
kkk
1
2/
12/
1
1
1logloglog
n
nk
n
k
n
kkkkkkk
Analisi di QuickSort Random: Caso Medio
![Page 76: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/76.jpg)
1
2/
12/
1
1
1log)1(loglog
n
nk
n
k
n
kknknkk
1
2/
1
2/loglog
n
nk
n
nkknkk
12/
1)1(logn
kkn
12/
1log
n
kkk
Analisi di QuickSort Random: Caso Medio
![Page 77: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/77.jpg)
1
2/
12/
1
1
1log)1(loglog
n
nk
n
k
n
kknknkk
12/
1
1
2/
12/
1loglog
n
k
n
nk
n
kkknkn
Analisi di QuickSort Random: Caso Medio
![Page 78: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/78.jpg)
1
2/
12/
1
1
1log)1(loglog
n
nk
n
k
n
kknknkk
12/
1
1
1log
n
k
n
kkkn
12/
1
1
2/
12/
1loglog
n
k
n
nk
n
kkknkn
Analisi di QuickSort Random: Caso Medio
![Page 79: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/79.jpg)
1
2/
12/
1
1
1log)1(loglog
n
nk
n
k
n
kknknkk
12/
1
1
1log
n
k
n
kkkn
)1(2
11
1
nnk
n
k
1
222
112/
1
nnk
n
k
Analisi di QuickSort Random: Caso Medio
![Page 80: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/80.jpg)
1
2/
12/
1
1
1log)1(loglog
n
nk
n
k
n
kknknkk
12/
1
1
1log
n
k
n
kkkn
)1(2
11
1
nnk
n
k
1
222
112/
1
nnk
n
k
1222
1log)1(
2
1 nnnnn
Analisi di QuickSort Random: Caso Medio
![Page 81: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/81.jpg)
1
2/
12/
1
1
1log)1(loglog
n
nk
n
k
n
kknknkk
12/
1
1
1log
n
k
n
kkkn
)1(2
11
1
nnk
n
k
1
222
112/
1
nnk
n
k
1222
1log)1(
2
1 nnnnn
22
8
1log
2
1nnn
Analisi di QuickSort Random: Caso Medio
![Page 82: Alberi di Ricorrenza Gli alberi di ricorrenza rappresentano un modo conveniente per visualizzare i passi di sostitu- zione necessari per risolvere una.](https://reader035.fdocuments.net/reader035/viewer/2022062418/5542eb57497959361e8c0da0/html5/thumbnails/82.jpg)
Analisi di QuickSort Random: Caso Medio
Possiamo concludere che:
nel caso medio, il tempo di esecuzione è:
T(n) = O(n log n)
nel caso migliore, il tempo di esecuzione è:
T(n) = O(n log n)
nel caso peggiore, il tempo di esecuzione è:
T(n) = O(n2)