Algoritmi e Strutture Dati Selezioe e statistiche di ordie Problemi di statistiche d ordie Estrarre da gradi quatità di dati u piccolo isieme di idicatori che e rappresetio caratteristiche statisticamete salieti Esempi: miimo, massimo, media, moda (valore più frequete), mediao. Selezioe (k,): Dati isieme di elemeti ed itero k [1,], trovare elemeto che occuperebbe la k-esima posizioe se l isieme fosse ordiato Mediao: selezioe per k = /2 2
Selezioe: approcci aïf Ordia gli elemeti, poi restituisci quello i posizioe k : O( log ) Costruisci u heap, ed estrai il miimo per k volte: O( + k log ) O() se k = O(/log ) ma o risolve problema del mediao i tempo lieare! 3 Calcolo radomizzato del mediao (co umero atteso di cofroti lieare ) 4
Usare QuickSort? 1. Divide: scegli pivot x e partizioa i elemeti x ed elemeti > x 2. Risolvi due sottoproblemi (QuickSort) 3. Impera: cocatea sottosequeze ordiate 4. Restituisci k-esimo elemeto ella sequeza Numero atteso di cofroti O( log ) Possiamo fare di meglio? 5 Usare QuickSort? 1. Divide: scegli pivot x e partizioa i elemeti x ed elemeti > x 2. Risolvi UN SOTTOPROBLEMA (QuickSort) 3. Impera: cocatea sottosequeze 4. Restituisci k-esimo elemeto ella sequeza Numero atteso di cofroti: acora O( log ) Possiamo fare di meglio? 6
1. Divide: scegli pivot x e partizioa i elemeti x ed elemeti > x 2. Risolvi u solo sottoproblema (RICORSIVAMENTE) QuickSelect 7 QuickSelect 8
Aalisi el caso peggiore Nel caso peggiore, pivot scelto ad ogi passo è miimo o massimo degli elemeti ell array Numero di cofroti el caso peggiore è: C() = C(-1) + O() Risolvedo per iterazioe si ottiee C() = O( 2 ) 9 QuickSelect Radomizzato Come per QuickSort, possiamo evitare caso peggiore scegliedo pivot a caso Ad ogi passo elimiiamo almeo elemeti A 2 + mi{ A 1, A 3 } 10
Aalisi di QuickSelect Numero atteso di cofroti: Relazioe di ricorreza dipederà da k e da Difficile da risolvere Ci aspettiamo caso più difficile per k = /2 11 Ituizioe Maggior umero di cofroti i QuickSelect si ha per k = /2, ovvero el caso del mediao Per k < /2 ci soo maggiori possibilità di ricorrere sul più piccolo dei due isiemi A 1 e A 3 12
Aalisi di QuickSelect Radomizzato Ad ogi passo elimiiamo almeo A 2 + mi{ A 1, A 3 } elemeti Ogi elemeto ha stessa probabilità di essere scelto come pivot: probabilità di ricorrere su array di dimesioe i [/2,-1] è 2/ Numero di cofroti el caso atteso è quidi: C() = -1+ -1 i=/2 2 C(i) 13 Aalisi di QuickSelect Radomizzato Dimostriamo per sostituzioe che C() A C() = -1+ -1+ -1 i=/2 2-1 2 C(i) -1+ A -1-1+ 2 A ( i=/2 ( 1 + 3A 4 ) C() A se ( 1 + 3A 4 ) i i=/2 2 A i -1 ( i ) 2-1+ A i - i=1 /2-1 i=1 2 2-2 8 - ) 4 = ( 1 + 3A) 4-1- A 2 A ovvero A 4 14
Numero atteso di cofroti Relazioe di ricorreza del QuickSelect ha soluzioe C() 4 Il umero atteso di cofroti di QuickSelect è lieare 15 Algoritmo usato i pratica Per covergere rapidamete, scegli il pivot il più vicio possibile al k-esimo (dal lato giusto) Come? Scegli u campioe opportuo (m elemeti) Scegli il pivot come il j-esimo degli m elemeti: j = k m + - δ 16
Calcolo determiistico del mediao (co u umero lieare di cofroti el caso peggiore) 17 Algoritmo determiistico Deradomizzare l algoritmo radomizzato Segui l idea dell algoritmo usato i pratica Scegli u campioe determiistico (o casuale) Scegli il pivot come il mediao del campioe 18
Algoritmo determiistico: dettagli 1. Scegli /5 quituple 2. Per ogi quitupla calcola il mediao 3. Il campioe è defiito dai mediai delle quituple 4. Calcola (ricorsivamete) il pivot come mediao dei mediai 5. Prosegui ricorsivamete (come per l algoritmo radomizzato) 19 Select Calcolo determiistico del pivot tramite ua chiamata ricorsiva (riga 6) 20
Mediao dei mediai Pivot M è mediao dei mediai m i dei /5 gruppi di 5 elemeti Mediao di 5 elemeti può essere calcolato co al più 7 cofroti l implemetazioe della riga 5 richiede (7/5) cofroti (ordiado i 5 elemeti) La riga 6 è ua chiamata ricorsiva su /5 elemeti La partizioe (righe 7-10) richiede -1 cofroti 21 Secoda chiamata ricorsiva La chiamata ricorsiva ella riga 11 (riga 12) viee effettuata su u isieme coteete al più 7/10 +3 elemeti 22
Algoritmo determiistico: aalisi 1. Scegli /5 quituple 2. Per ogi quitupla calcola mediao 3. Campioe defiito da mediai delle quituple 4. Calcola (ricorsivamete) il pivot come mediao dei mediai 5. Partizioa itoro al pivot 6. Prosegui ricorsivamete (come per l algoritmo radomizzato) (7/5) T( /5 ) -1 T( (7/10) ) 23 Aalisi La seguete relazioe di ricorreza descrive il umero di cofroti eseguiti da select el caso peggiore: T() (12/5) + T( /5 ) + T( (7/10) ) La relazioe di ricorreza ha soluzioe T() = O() Facile dimostrare per sostituzioe che T() c per c 24 24
Riepilogo Abbiamo risolto il problema del calcolo del mediao studiadoe ua geeralizzazioe, ovvero il calcolo del k-esimo elemeto per k [1,] A volte problema più geerale più semplice da risolvere del problema origiario (dà più facilmete luogo a sottoproblemi ricorsivi) Il problema della selezioe può essere risolto i tempo lieare, sia co algoritmi radomizzati che co algoritmi determiistici L algoritmo radomizzato, sebbea richieda tempo O( 2 ) el caso peggiore, è più efficiete i pratica 25