alberi di ricorrenza -...

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

Upload: others

Post on 10-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Alberi di Ricorrenza

Esempio: T(n) = 2T(n/2) + n2

2

nT

2n

2

nT

Page 3: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Alberi di Ricorrenza

Esempio: T(n) = 2T(n/2) + n2

2

2

n 2

2

n

2

4

n2

4

n2

4

n2

4

n

2n

Page 5: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Alberi di Ricorrenza

Esempio: T(n) = 2T(n/2) + n2

2

2

n 2

2

n

2

4

n2

4

n2

4

n2

4

n

2n

2

4

1n

2

2

1n+

+ + +

2n

1

Page 6: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Alberi di Ricorrenza

Esempio: T(n) = 2T(n/2) + n2

2

2

n 2

2

n

2

4

n2

4

n2

4

n2

4

n

2n

2

4

1n

2

2

1n

nlog

+

+ + +

2n

1

Page 7: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Alberi di Ricorrenza

Esempio: T(n) = 2T(n/2) + n2

2

2

n 2

2

n

2

4

n2

4

n2

4

n2

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Alberi di Ricorrenza

Esempio: T(n) = 2T(n/2) + n2

2

2

n 2

2

n

2

4

n2

4

n2

4

n2

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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

n

4

n

4

n

4

n

4

n

4

n

4

n

4

n

4

n

Page 10: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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

n

4

n

4

n

4

n

4

n

4

n

4

n

4

n

4

n

12)12(12

1222)( 2

1loglog

0

log

0

−=−=−

−===

+

==

nnnnnnnTnn

k

kn

k

k

Page 11: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Alberi di Ricorrenza

Esempio: T(n) = 4T(n/2) + n2

2

2

n

2

2

4

n

1

2n 2n

nlog2n

2n

2

2

n2

2

n2

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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

k

log1)( 2log

1

2log

1

2 === ==

2n

2n

2

2

n2

2

n2

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort: caso medio

Il tempo di esecuzione di QuickSort dipende

dal bilanciamento delle partizioni effettuatedall’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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 è 9 volte l’altra (partizionamento sbi-

lanciato)

• Supponiamo che ad ogni chiamata l’algo-ritmo Partiziona produca una partizione

che è 99 volte l’altra (partizionamento molto

sbilanciato)

Page 15: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort: caso medio

• Supponiamo che ad ogni chiamata l’algoritmoPartiziona produca una partizione che è 9

volte l’altra (partizionamento sbilanciato)

L’equazione di ricorrenza diventa quindi:

T(n) = T(9n/10) + T(n/10) + n

Page 16: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort: caso medio

• Supponiamo che ad ogni chiamata l’algoritmoPartiziona produca una partizione che è 99

volte l’altra (partizionamento sbilanciato)

L’equazione di ricorrenza diventa quindi:

T(n) = T(99n/100) + T(n/100) + n

Page 19: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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

9801n

3

3

100

99 n

1

1

n n

n

n

)log( nn

n

n

n

n100log

n99100log

Page 20: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 logn)

Page 21: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort: caso medio

Per fare un’analisi corretta del caso medio, è

necessario definire una nozione chiara di

caso medio.

Assumiamo allora che tutte le permutazioni

dei valori in input abbiamo uguale

probabilità di presentarsi.

In tal caso, se QuickSort è eseguito 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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort: caso medio

1

n

1−n

2

)1( −n

2

)1( −n

n

1−n1

partizioni

sbilanciate

partizioni

bilanciate

Page 24: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort: caso medio

1

n

1−n

2

)1( −n

2

)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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort: caso medio

n

12

)1(+

−n

2

)1( −n

)(n

La situazione del partizionamento precedente

non è asintoticamente peggiore di questa, che ha

ancora costo dell’ordine di (n) e rappresenta un

partizionamento piuttosto ben bilanciato

Page 26: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Dunque, supponendo 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(nlogn)

dove, però, ora la notazione O-grande

nasconde una costante maggiore che nel

caso migliore

Analisi di QuickSort: caso medio

Page 27: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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

gli elementi dell’array in input

Analisi di QuickSort

Page 28: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random

int 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 valore

intero casuale compreso tra p ed r.

Page 29: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random

int 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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random

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)

int Partiziona-Random(A,p,r)

i = Random(p,r)

“scambia A[p]con A[i]”

return Partiziona(A,p,r)

Page 31: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random

La versione random di QuickSort presentata:

• non modifica le prestazioni nel caso

peggiore (che rimane quadratico) Perché?

• né modifica le prestazioni nel caso migliore

o medio.

• ma rende le prestazioni indipendenti

dall’ordinamento iniziale dell’array di input.

• non c’è alcun particolare input che

determina il verificarsi del caso peggiore

(né del caso migliore).

Page 32: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Peggiore

Partiziona suddivide un array di dimensione

n in due partizioni di dimensioni (casuali) non

note, 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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Peggiore

Partiziona suddivide un array di dimensione

n in due partizioni di dimensioni (casuali) non

note, 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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Migliore

Partiziona suddivide un array di dimensione

n in due partizioni di dimensioni (casuali) non

note, che chiamiamo 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)1qn-1

Page 40: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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)1qn-1

c min {q log q + (n - q) log (n - q) } + (n)1qn-1

Page 42: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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)1qn-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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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)1qn-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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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)1qn-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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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)1qn-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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

Quello che dobbiamo fare è costruire l’equazio-

ne di ricorrenza per il caso medio.

• Per semplificare l’analisi, assumeremo che

tutti gli elementi siano distinti.

• 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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 h2), Partiziona ritornerà

una partizione lunga h -1 e una lunga n -h+1

ciascun caso ha probabilità 1/n

Nota: tutto questo è garantito solo se gli elementi

sono tutti distinti!

Page 51: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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

rispettivamente 1 ed n -1

con probabilità 1/n

Nota: tutto questo è garantito solo se gli elementi

sono tutti distinti!

Page 52: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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

Nota: tutto questo è garantito solo se gli

elementi sono tutti distinti!

Page 53: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

)())()(()1()1(1

)(1

1

nqnTqTnTTn

nTn

q

+

−++−+=

=

Se il rango è 1 Partiziona

ritornerà una partizione

lunga 1 e una lunga n-1

Page 54: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

)())()(()1()1(1

)(1

1

nqnTqTnTTn

nTn

q

+

−++−+=

=

Se il rango è 1 Partiziona

ritornerà una partizione

lunga 1 e una lunga n-1

Se il rango è h (per 2 h n)

Partiziona ritornerà una

partizione lunga h -1 e una lunga

n -h+1 (e q varia tra 1 e n -1)

Page 55: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

)())()(()1()1(1

)(1

1

nqnTqTnTTn

nTn

q

+

−++−+=

=

Se il rango è 1 Partiziona

ritornerà una partizione

lunga 1 e una lunga n-1

Se il rango è h (per h2)

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

L’equazione di ricorrenza per il caso medio sarà

quindi:

)())()(()1()1(1

)(1

1

nqnTqTnTTn

nTn

q

+

−++−+=

=

Page 57: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

)())()(()1()1(1

)(1

1

nqnTqTnTTn

nTn

q

+

−++−+=

=

( ) ( ))()1(1

)1()1(1 2n

nnTT

n+=−+

Page 58: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

)())()(()1()1(1

)(1

1

nqnTqTnTTn

nTn

q

+

−++−+=

=

( ) ( ))()1(1

)1()1(1 2n

nnTT

n+=−+

)()(1 2 nnn

==

Page 59: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

)())()((1

)(1

1

nqnTqTn

nTn

q

+

−+=

=

( ) )()1()1(1

nnTTn

=−+

poiché O(n) viene assorbito da (n)! (Perché?)

Page 60: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

)())()((1

)(1

1

nqnTqTn

nTn

q

+

−+=

=

)()(2 1

1

nqTn

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

L’equazione di ricorrenza diviene:

La risolveremo col metodo di sostituzione

)()(2

)(1

1

nqTn

nTn

q

+

=

=

Page 62: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

L’equazione di ricorrenza diviene:

Vogliamo dinostrare che T(n) = O(n log n)

)()(2

)(1

1

nqTn

nTn

q

+

=

=

Page 63: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

L’equazione di ricorrenza diviene:

Ipotizziamo T(n) anlogn

)()(2

)(1

1

nqTn

nTn

q

+

=

=

Page 64: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

T(n) = O(nlogn)

)()(2

)(1

1

nqTn

nTn

q

+

=

=

)(log2 1

1

nqaqn

n

q

+

=

Page 65: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

T(n) = O(nlogn)

)()(2

)(1

1

nqTn

nTn

q

+

=

=

)(log2 1

1

nqaqn

n

q

+

=

)(log2 1

1

nqqn

a n

q

+ −

=

Page 66: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

T(n) = O(nlogn)

poiché si può dimostrare che

)()(2

)(1

1

nqTn

nTn

q

+

=

=

221

1 8

1log

2

1log nnnqq

n

q

−−

=

)(log2 1

1

nqqn

a n

q

+ −

=

Page 67: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

T(n) = O(nlogn)

)()(2

)(1

1

nqTn

nTn

q

+

=

=

221

1 8

1log

2

1log nnnqq

n

q

−−

=

)(8

1log

2

12 22nnnn

n

a+

)(log2 1

1

nqqn

a n

q

+ −

=

Page 68: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

T(n) = O(nlogn)

)()(2

)(1

1

nqTn

nTn

q

+

=

=

)(8

1log

2

12 22nnnn

n

a+

)(4

log nna

nan +−

Page 69: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

T(n) = O(nlogn )

)()(2

)(1

1

nqTn

nTn

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

Analisi di QuickSort Random: Caso Medio

T(n) = O(nlogn)

)()(2

)(1

1

nqTn

nTn

q

+

=

=

)(4

log nna

nan +−

−+ n

annan

4)(log

nan log

Scegliendo a grande

abbastanza da

rendere an/4

dominante su (n)

Page 71: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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 - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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

1

loglogn

k

n

k

knkk

nn log2

nnn

nnn log2

log)1(2

1 2 −=−

Page 73: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

=

=

=

+=1

2/

12/

1

1

1

logloglogn

nk

n

k

n

k

kkkkkk

=

=

12/

1

12/

1

)2/log(logn

k

n

k

knkk

=

−12/

1

)1(logn

k

kn

=

=

1

1

1

1

loglogn

k

n

k

knkk

Analisi di QuickSort Random: Caso Medio

Page 74: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

=

=

=

+=1

2/

12/

1

1

1

logloglogn

nk

n

k

n

k

kkkkkk

=

=

1

2/

1

2/

loglogn

nk

n

nk

knkk

=

−12/

1

)1(logn

k

kn

=

12/

1

logn

k

kk

=

=

1

1

1

1

loglogn

k

n

k

knkk

Analisi di QuickSort Random: Caso Medio

Page 75: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

=

=

1

2/

1

2/

loglogn

nk

n

nk

knkk

=

−12/

1

)1(logn

k

kn

=

12/

1

logn

k

kk

=

=

=

+=1

2/

12/

1

1

1

logloglogn

nk

n

k

n

k

kkkkkk

Analisi di QuickSort Random: Caso Medio

Page 76: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

=

=

=

+−1

2/

12/

1

1

1

log)1(loglogn

nk

n

k

n

k

knknkk

=

=

1

2/

1

2/

loglogn

nk

n

nk

knkk

=

−12/

1

)1(logn

k

kn

=

12/

1

logn

k

kk

Analisi di QuickSort Random: Caso Medio

Page 77: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

=

=

=

+−1

2/

12/

1

1

1

log)1(loglogn

nk

n

k

n

k

knknkk

=

=

=

−+12/

1

1

2/

12/

1

loglogn

k

n

nk

n

k

kknkn

Analisi di QuickSort Random: Caso Medio

Page 78: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

=

=

=

+−1

2/

12/

1

1

1

log)1(loglogn

nk

n

k

n

k

knknkk

=

=

−12/

1

1

1

logn

k

n

k

kkn

=

=

=

−+12/

1

1

2/

12/

1

loglogn

k

n

nk

n

k

kknkn

Analisi di QuickSort Random: Caso Medio

Page 79: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

=

=

=

+−1

2/

12/

1

1

1

log)1(loglogn

nk

n

k

n

k

knknkk

=

=

−12/

1

1

1

logn

k

n

k

kkn

)1(2

11

1

−=−

=

nnkn

k

−=

=

1222

112/

1

nnk

n

k

Analisi di QuickSort Random: Caso Medio

Page 80: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

=

=

=

+−1

2/

12/

1

1

1

log)1(loglogn

nk

n

k

n

k

knknkk

=

=

−12/

1

1

1

logn

k

n

k

kkn

)1(2

11

1

−=−

=

nnkn

k

−=

=

1222

112/

1

nnk

n

k

−−− 1

222

1log)1(

2

1 nnnnn

Analisi di QuickSort Random: Caso Medio

Page 81: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

=

=

=

+−1

2/

12/

1

1

1

log)1(loglogn

nk

n

k

n

k

knknkk

=

=

−12/

1

1

1

logn

k

n

k

kkn

)1(2

11

1

−=−

=

nnkn

k

−=

=

1222

112/

1

nnk

n

k

−−− 1

222

1log)1(

2

1 nnnnn

22

8

1log

2

1nnn −

Analisi di QuickSort Random: Caso Medio

Page 82: Alberi di Ricorrenza - wpage.unina.itwpage.unina.it/benerece/ASD/Benerecetti/ASD-1/6-quicksort-analisi.pdf · Analisi di QuickSort: caso medio Per fare un’analisicorretta del caso

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)