Tecniche Algoritmiche: divide et impera

Documenti analoghi
Algoritmi e Strutture Dati

Analisi algoritmi ricorsivi e relazioni di ricorrenza

5. DIVIDE AND CONQUER I

Esercizi di Algoritmi e Strutture Dati

Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni.

Algoritmi (9 CFU) (A.A )

Divide et impera. Divide et impera. Divide et impera. Divide et impera

Algoritmi e strutture dati. Analisi di algoritmi Funzioni di costo, notazione asintotica

Tempo e spazio di calcolo (continua)

Albero di Riscorsione

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

5) Equazioni di ricorrenza

Algoritmi e Strutture Dati

Algoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione

Grafi: ordinamento topologico

Tempo e spazio di calcolo

2. Analisi degli Algoritmi

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base

Cammini minimi fra tutte le coppie

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

Algoritmi e Strutture Dati

Dispense per i corsi di Informatica generale Corso di laurea in Matematica e. Introduzione agli Algoritmi Corso di laurea in Informatica

Parte III: Algoritmo di Branch-and-Bound

Note per la Lezione 6 Ugo Vaccaro

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Algoritmi e Strutture Dati

Programmazione dinamica

Lezione 3 - Teoria dei Numeri

Note per la Lezione 4 Ugo Vaccaro

m = a k n k + + a 1 n + a 0 Tale scrittura si chiama rappresentazione del numero m in base n e si indica

Esercizi Capitolo 12 - Divide-et-Impera

Laboratorio di Programmazione M-Z

! Dividere il problema in diverse parti. ! Risolvere ogni parte ricorsivamente. ! Combinare le soluzioni dei sottoproblemi in soluzioni globali.

Corso di Architettura degli Elaboratori

poiché f(n) max{f(n),g(n)}, e g(n) max{f(n),g(n)}, sommando termine a termine: Quindi possiamo concludere che f(n)+g(n) = Θ(max{f(n),g(n)})

Programmazione dinamica

Esercizi su alberi binari

Esempio : i numeri di Fibonacci

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

Esercizi per il corso di Algoritmi e Strutture Dati

Architettura degli Elaboratori

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n

11. Misure con segno.

Esercizi sulla complessità di frammenti di pseudo-codice

una possibile funzione unidirezionale

Programmazione dinamica

04 - Numeri Complessi

UNIVERSITA DEGLI STUDI DI PERUGIA

Equazioni di primo grado

A.A CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5.

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla

Algoritmi e Strutture Dati

Esercizi di Analisi Numerica. Errori, Cambi di base, Numeri macchina, Aritmetica finita

Principio di induzione: esempi ed esercizi

Ordinamenti per confronto: albero di decisione

1 Il polinomio minimo.

Università degli Studi di Roma Tor Vergata. Principio di induzione matematica

4.1 Modelli di calcolo analisi asintotica e ricorrenze

LEZIONE 3. a + b + 2c + e = 1 b + d + g = 0 3b + f + 3g = 2. a b c d e f g

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort

L algoritmo AKS. L algoritmo AKS. Seminario per il corso di Elementi di Algebra Computazionale. Oscar Papini. 22 luglio 2013

Proprietà delle notazioni asintotiche

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15

z =[a 4 a 3 a 2 a 1 a 0 ] 10

Algoritmi e Strutture Dati

Tutti i numeri qui considerati sono interi. Se si tratta in particolare di numeri Naturali (quindi non negativi) verrà specificato.

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

Un esempio di calcolo di complessità: insertion sort

8. Completamento di uno spazio di misura.

Transcript:

Tecniche Algoritmiche: divide et impera Una breve presentazione F. Damiani - Alg. & Lab. 04/05

Divide et impera (o Divide and conquer) Per regnare occorre tenere divisi i nemici e trarne vantaggio F. Damiani - Alg. & Lab. 04/05

Divide et impera Tecnica top-down: 1. Dividi l istanza del problema in due o più sottoistanze 2. Risolvi ricorsivamente il problema sulle sottoistanze 3. Ricombina la soluzione dei sottoproblemi allo scopo di ottenere la soluzione globale Esempi: ricerca binaria, mergesort, quicksort F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Divide et impera - Schema generale Divide-et-impera (P, n) if n k then risolvi direttamente else dividi P in sottoproblemi P 1, P 2,,P h di dimensione n 1, n 2,, n h risp. for i 1 to h do Divide-et-impera (P i, n i ) combina i risultati di P 1,, P h per ottenere quello di P F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

Divide et impera - Complessità Il costo dell algoritmo è di solito costante per i casi in cui la soluzione viene costruita direttamente; per i casi in cui non è immediata, il costo può essere espresso come somma di h + 2 costi: il costo di dividere il problema nei sottoproblemi il costo di combinare i risultati dei sottoproblemi per ottenere il risultato del problema gli h costi delle soluzioni dei sottoproblemi T(n) = c n k = D(n) + C(n) + Σ i=1..h T(n i ) n > k F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

E relativamente semplice esprimere la complessità con una relazione di ricorrenza. Puo essere però piuttosto complicato risolvere la relazione di ricorrenza. Abbiamo esaminato tre modi per trovare la soluzione: metodo iterativo metodo di sostituzione metodo principale F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

Il metodo iterativo Sviluppare la ricorrenza ed esprimerla come somma di termini che dipendono solo da n e dalle condizioni al contorno. Per risolvere la ricorrenza si applicano le tecniche per limitare le sommatorie (puo essere utile disegnare l albero della ricorsione) Esempio: consideriamo l equazione T(n) = 4T(n/2) + n T(n) = n + 4T(n/2) = n + 4 ( n/2 + 4 T(n/4)) = n + 2n + 4 2 (n/4 + 4 T(n/8) ) = n + 2n + 4n + 4 3 (n/8 + 4 T(n/16) ) = n + 2n + + 2 lgn-1 n + 2 lgn T(1) = n (1 + 2 + + 2 lgn-1 ) + n Θ(1) = n (2 lgn -1) + Θ(n) = n 2 -n + Θ(n) 2 F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

Alberi di ricorsione ( variante del metodo iterativo) Esempio: disegnamo l unfolding della ricorrenza T(n) = n + 4T(n/2) T(n) n T(n/2) T(n/2) T(n/2) T(n/2) F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

n n n/2 n/2 n/2 n/2 2n lgn 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/4 4n 2 lgn Θ(1) Totale: lgn-1 n Σ 2 i + 2 lgn Θ(1) = n (n - 1) + n Θ(1) = Θ(n 2 ) i=0 F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

Il metodo di sostituzione Ipotizza un limite asintotico, e verifica l ipotesi con una dimostrazione per induzione. Esempio T(n) = 4T(n/2) + n Per provare che T(n) = O(n 3 ) mostriamo che esistono c ed n 0 : T(n) c n 3 per tutti gli n n 0 Supponendo T(k) c k 3 per tutti i k < n, si ottiene T(n) = 4T(n/2) + n 4c(n/2) 3 + n = cn 3 - (c/2 n 3 -n) cn 3 per c 2 e n 1 Nota: T(1) deve essere c 1 3 F. Damiani - Alg. & Lab. 04/05

Esempio (continua): proviamo che T(n) = O(n 2 ) Cerchiamo di dimostrare che T(n) c n 2 per tutti gli n n 0 Supponendo T(k) c k 2 per tutti i k < n, si ottiene T(n) = 4T(n/2) + n 4c(n/2) 2 + n = cn 2 + n cn 2 per nessun c 0 Dobbiamo modificare l ipotesi, consideriamo: T(n) c n 2 - d n, d 1 T(n) = 4T(n/2) + n 4 (c(n/2) 2 - d(n/2)) + n = cn 2-2dn + n = c n 2 d n - (d n - n) cn 2 -dn Si può scegliere d = 1. F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

Bisogna fare attenzione alle condizioni al contorno (non è sempre scontato che esse siano limitate da c f(n)) Ad esempio supponiamo di aver dimostrato per la ricorrenza T(n) = 2 T( n/2 ) + n che T(n) c n lgn e sia T(1) = 1 Allora non si ottiene T(1) c 1 lg1 per nessun c, essendo lg1 = 0 La difficoltà può essere superata ricordando che la notazione asintotica richiede di dimostrare T(n) c n lgn per gli n n 0, dove n 0 è una costante. Consideriamo allora T(2) e T(3), in quanto per n > 3, la relazione non dipende più da T(1). T(2) = 4 c 2 lg2 T(3) = 5 c 3 lg3 Basta scegliere c 2 F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

Un inconveniente del metodo di sostituzione è che non esiste una regola per trovare la soluzione corretta per ogni ricorrenza. Di solito bisogna provare più tentativi, ma se la ricorrenza è simile ad una di cui si conosce la soluzione, si può provare la stessa soluzione. Ad esempio: T(n) = 2T( n/2 + 15) + n Intuitivamente per n grande la differenza tra n/2 e n/2 + 15 non è molto significativa. Si può perciò tentare con la soluzione T(n) = O(n lgn), che sappiamo risolvere la ricorrenza T(n) = 2T( n/2 ) + n. F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

Esercizio: dimostriamo che la ricorrenza T(n) = 2T ( n/2 + 15) + n appartiene all insieme O(n lgn) Proviamo T(n) c n lgn (n) = 2T ( n/2 + 15) + n (per n > 30, n/2 + 15 < n) 2 (c (n/2 + 15) lg(n/2 + 15)) + n = 2 (c ((n + 30)/2) lg ((n + 30)/2)) + n = c (n + 30) lg ((n + 30)/2)) + n = c (n + 30) lg (n + 30) c (n + 30) lg2 + n = c (n + 30) lg (n + 30) c (n + 30) + n = c n lg (n + 30) + c 30 lg (n + 30) c n c 30 + n c n lg (5 n/4) + c 30 lg (5 n/4) + n c n c 30 (per n > 120 = c n (lg n + lg 3 lg 4) + c 30 (lg n + lg 3 lg 4) + n c n c 30 = c n lg n + c (lg 5 2) n + c 30 lg n + c 30 (log 5 2) + n c n c 30 = c n lg n + c 30 lg n + n c (3 log 5) n c 30 (3 log 5) = c n lg n + c 30 (lg n + log 5 3) (c (3 log 5) + 1) n c n lg n (per c=1 e n suff. grande) F. Damiani - Alg. & Lab. 04/05

Il metodo principale Teorema Master (versione semplificata) Siano a 1, b > 1 e c 0 delle costanti. T(n) sia definita dalla seguente ricorrenza: T(n) = a T(n/b) + Θ(n c ) dove n/b rappresenta n/b oppure n/b. Allora T(n) è asintoticamente limitato nel modo seguente: 1. se c < log b a allora T(n) = Θ(n log b a ) 2. se c = log b a allora T(n) = Θ(n c lgn) 3. se c > log b a allora T(n) = Θ(n c ) F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

Consideriamo un semplice esempio Per le equazioni di ricorrenza: 1. T 1 (n) = 4 T(n/2) + n 2. T 2 (n) = 4 T(n/2) + n 2 3. T 3 (n) = 4 T(n/2) + n 3 Si applicano rispettivamente i casi 1, 2 e 3 del teorema principale. Si ha allora: 1. T 1 (n) = Θ(n 2 ) 2. T 2 (n) = Θ(n 2 lgn) 3. T 3 (n) = Θ(n 3 ) F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

Proviamo a interpretare le complessità ottenute Caso 1. T 1 (n) = 4 T(n/2) + n = Θ(n 2 ) si applica se il costo della divisione in sottoproblemi e della costruzione della soluzione a partire da quella dei sottoproblemi (n c ) è trascurabile rispetto al costo della soluzione dei sottoproblemi stessi (a T(n/b)). Caso 2. T 2 (n) = 4 T(n/2) + n 2 = Θ(n 2 lgn) si applica se il costo della divisione in sottoproblemi e della costruzione della soluzione a partire da quella dei sottoproblemi (n c ) è analogo al costo della soluzione dei sottoproblemi stessi (a T(n/b)). Caso 3. T 3 (n) = 4 T(n/2) + n 3 = Θ(n 3 ) si applica se il costo della divisione in sottoproblemi e della costruzione della soluzione a partire da quella dei sottoproblemi (n c ) è il fattore dominante. F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

Un esempio di uso del teorema principale Il tempo di calcolo per l algoritmo DI-Massimo-Ricorsivo soddisfa la ricorrenza: T(n) = 2 T(n/2) + Θ(1) a = b = 2 c = 0 < 1 = log b a Caso 1 del teorema principale: T(n) = Θ(n log 2 2 ) = Θ(n) Il costo della divisione in sottoproblemi e della costruzione della soluzione a partire da quella dei sottoproblemi (n c ) è trascurabile rispetto al costo della soluzione dei sottoproblemi stessi (a T(n/b)). F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

Ancora un esempio di uso del teorema principale Il tempo di calcolo per l algoritmo Merge-Sort soddisfa la ricorrenza: T(n) = 2 T(n/2) + Θ(n) a = b = 2 c = 1 = log b a Caso 2 del teorema principale: T(n) = Θ(n c lgn) = Θ(n lgn) l costo della divisione in sottoproblemi e della costruzione della soluzione a partire a quella dei sottoproblemi (n c ) è analogo al costo della soluzione dei ottoproblemi stessi (a T(n/b)). F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04)

Un case study F. Damiani - Alg. & Lab. 04/05

Problema: moltiplicazione di interi di grandezza arbitraria Moltiplicare o sommare due numeri non sempre è un operazione eseguibile in tempo costante: se i numeri occupano più di una parola di memoria, anche le operazioni elementari potrebbero richiedere tempo superiore a O(1) Moltiplicare due numeri a n cifre, secondo un algoritmo che conosciamo fin dalla scuola elementare, richiede tempo O(n 2 ): possiamo fare di meglio? F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Rappresentazione decimale di interi a n cifre Idea: dividiamo X e Y a metà: X 1 (Y 1 ) = n/2 cifre più significative di X (Y) X 0 (Y 0 ) = n/2 cifre meno significative di X (Y) F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Divisione del problema F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Osservazioni Moltiplicare un numero per 10 k = shift a sinistra delle cifre del numero di k posizioni Somma di due numeri di k cifre: tempo O(k) La moltiplicazione di due numeri a n cifre si riduce quindi a: quattro moltiplicazioni di numeri a n/2 cifre un numero costante di operazioni implementabili in tempo O(k) F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Equazione di ricorrenza La soluzione è Θ(n 2 ) dal Teorema Master Cosa abbiamo guadagnato? F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Ridurre il numero di moltiplicazioni Detti: si ha F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Analisi Eseguiamo tre moltiplicazioni e un numero costante di somme e shift log 2 3 La soluzione è Θ(n ) = Θ(n 1.59 ) dal Teorema Master F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Conclusione Divide et impera: varie applicazioni: ricerca binaria, mergesort, quicksort, moltiplicazione di interi di grandezza arbitraria, moltiplicazione di matrici, F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)