Tecniche Algoritmiche: divide et impera

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Tecniche Algoritmiche: divide et impera"

Transcript

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

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

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

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

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

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

7 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 (n/4 + 4 T(n/8) ) = n + 2n + 4n (n/8 + 4 T(n/16) ) = n + 2n lgn-1 n + 2 lgn T(1) = n ( 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)

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

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

10 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

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

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

13 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/ 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)

14 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/ < 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Ricorsivi e Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 I conigli di Fibonacci Ricerca Binaria L isola dei conigli

Dettagli

Analisi algoritmi ricorsivi e relazioni di ricorrenza

Analisi algoritmi ricorsivi e relazioni di ricorrenza Analisi algoritmi ricorsivi e relazioni di ricorrenza Punto della situazione Finora abbiamo affrontato: il tempo di esecuzione di un algoritmo, l analisi asintotica con le notazioni asintotiche e la tecnica

Dettagli

5. DIVIDE AND CONQUER I

5. DIVIDE AND CONQUER I Divide-et-Impera (Divide and conquer) 5. DIVIDE AND CONQUER I Mergesort e Relazioni di ricorrenza Esempi di progettazione D&I Moltiplicazione di interi Contare inversioni Divide-et-Impera. Definizione

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla http://www.moreno.marzolla.name/ Ultima Modifica: 7 ottobre 202 Copyright Portions of this work are Copyright 202, Moreno Marzolla. This work is licensed

Dettagli

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

Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni. Algoritmi e Strutture Dati Macchina RAM Nastro di ingresso Modelli di calcolo e metodologie di analisi Contatore istruzioni Programm a Accumulatore Unità centrale M[0] M[1] Nastro di uscita Basato su materiale

Dettagli

Algoritmi (9 CFU) (A.A )

Algoritmi (9 CFU) (A.A ) Algoritmi (9 CFU) (A.A. 2009-10) Equazioni di ricorrenza Prof. V. Cutello Algoritmi 1 Overview Definiamo cos è una ricorrenza Introduciamo 3 metodi per risolvere equazioni di ricorrenza Sostituzione e

Dettagli

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

Divide et impera. Divide et impera. Divide et impera. Divide et impera Divide et impera Divide et impera La tecnica detta divide et impera è una strategia generale per impostare algoritmi (par. 9.4). Consideriamo un problema P e sia n la dimensione dei dati, la strategia

Dettagli

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

Algoritmi e strutture dati. Analisi di algoritmi Funzioni di costo, notazione asintotica Algoritmi e strutture dati Analisi di algoritmi Funzioni di costo, notazione asintotica Alberto Montresor Università di Trento 2016/09/11 This work is licensed under a Creative Commons Attribution-ShareAlike

Dettagli

Tempo e spazio di calcolo (continua)

Tempo e spazio di calcolo (continua) Tempo e spazio di calcolo (continua) I numeri di Fibonacci come case study (applichiamo ad un esempio completo le tecniche illustrate nei lucidi precedenti) Abbiamo introdotto tecniche per la correttezza

Dettagli

Albero di Riscorsione

Albero di Riscorsione Albero di Riscorsione Albero di ricorsione Un albero di ricorsione è un modo di visualizzare cosa accade in un algoritmo divide et impera L etichetta della radice rappresenta il costo non ricorsivo della

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi asintotica e Ricorrenze Esercizi Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Notazioni O, Ω e Θ Parte I Notazioni

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Informazioni sul corso + Un introduzione informale agli algoritmi Domenico Fabio Savo 1 Domenico Fabio Savo Email: [email protected] Web: http://www.dis.uniroma1.it/~savo

Dettagli

5) Equazioni di ricorrenza

5) Equazioni di ricorrenza Pag 37 5) Equazioni di ricorrenza Valutare la complessità di un algoritmo ricorsivo è, in genere, più laborioso che nel caso degli algoritmi iterativi. Infatti, la natura ricorsiva della soluzione algoritmica

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 1 Un introduzione informale agli algoritmi Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Definizione informale di algoritmo Insieme di istruzioni, definite

Dettagli

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

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

Dettagli

Grafi: ordinamento topologico

Grafi: ordinamento topologico .. Grafi: ordinamento topologico Che cosa e e come si calcola Che cosa e un ordinamento topologico F. Damiani - Alg. & Lab. 04/05 Una definizione di ordinamento topologico Definizione. Funzione σ: V {1,

Dettagli

Tempo e spazio di calcolo

Tempo e spazio di calcolo Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04) In quale modo stimiamo il tempo di calcolo? Possiamo considerare

Dettagli

2. Analisi degli Algoritmi

2. Analisi degli Algoritmi 2. Analisi degli Algoritmi Introduzione 2.1 Un modello di macchina elementare: la Macchina a Registri 2.2 Costo di esecuzione di un programma 2.3 Analisi del costo di esecuzione: il modello a costi uniformi

Dettagli

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

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. E. Calabrese: Fondamenti di Informatica Algoritmi-1 Algoritmi di ricerca Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati. Per esempio: - cercare

Dettagli

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

Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina) Esercizi sulle Nozioni di Base Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1. Sia T una stringa arbitraria di lunghezza n 1 su un alfabeto Σ. È sempre possibile

Dettagli

Cammini minimi fra tutte le coppie

Cammini minimi fra tutte le coppie Capitolo 12 Cammini minimi fra tutte le coppie Consideriamo il problema dei cammini minimi fra tutte le coppie in un grafo G = (V, E, w) orientato, pesato, dove possono essere presenti archi (ma non cicli)

Dettagli

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

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output F = { (s, s ) } per ogni s esiste una e una sola coppia (s, s ). Esempio: un algoritmo che calcola il quadrato di

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi di algoritmi Maria Rita Di Berardini 2, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino 2 Polo di Scienze Università di Camerino ad Ascoli Piceno Parte I Analisi

Dettagli

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

Dispense per i corsi di Informatica generale Corso di laurea in Matematica e. Introduzione agli Algoritmi Corso di laurea in Informatica Dispense per i corsi di Informatica generale Corso di laurea in Matematica e Introduzione agli Algoritmi Corso di laurea in Informatica Prof. Tiziana Calamoneri Prof. Giancarlo Bongiovanni Questi appunti

Dettagli

Parte III: Algoritmo di Branch-and-Bound

Parte III: Algoritmo di Branch-and-Bound Parte III: Algoritmo di Branch-and-Bound Divide et Impera Sia z * max {c T x : x S} (1) un problema di ottimizzazione combinatoria difficile da risolvere. Domanda: E possibile decomporre il problema (1)

Dettagli

Note per la Lezione 6 Ugo Vaccaro

Note per la Lezione 6 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 6 Ugo Vaccaro Ancora sulla tecnica Programmazione Dinamica Nella lezione scorsa abbiamo appreso che la tecnica Divide-et-Impera,

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

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

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point) Rappresentazione di Numeri Reali Un numero reale è una grandezza continua Può assumere infiniti valori In una rappresentazione di lunghezza limitata, deve di solito essere approssimato. Esistono due forme

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 27 marzo 2012 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi Asintotica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Un graduale processo di astrazione Passo 1: abbiamo ignorato il costo effettivo

Dettagli

Programmazione dinamica

Programmazione dinamica Programmazione dinamica Primi esempi 29 ottobre 2014 Punto della situazione Abbiamo visto: analisi asintotica relazioni di ricorrenza (vedremo altri esempi) prima tecnica di programmazione: divide-etimpera

Dettagli

Lezione 3 - Teoria dei Numeri

Lezione 3 - Teoria dei Numeri Lezione 3 - Teoria dei Numeri Problema 1 Trovare il più piccolo multiplo di 15 formato dalle sole cifre 0 e 8 (in base 10). Il numero cercato dev'essere divisibile per 3 e per 5 quindi l'ultima cifra deve

Dettagli

Note per la Lezione 4 Ugo Vaccaro

Note per la Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 4 Ugo Vaccaro Ripasso di nozioni su Alberi Ricordiamo che gli alberi rappresentano una generalizzazione delle liste, nel senso che

Dettagli

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

m = a k n k + + a 1 n + a 0 Tale scrittura si chiama rappresentazione del numero m in base n e si indica G. Pareschi COMPLEMENTI ED ESEMPI SUI NUMERI INTERI. 1. Divisione con resto di numeri interi 1.1. Divisione con resto. Per evitare fraintendimenti nel caso in cui il numero a del Teorema 0.4 sia negativo,

Dettagli

Esercizi Capitolo 12 - Divide-et-Impera

Esercizi Capitolo 12 - Divide-et-Impera Esercizi Capitolo 12 - Divide-et-Impera Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare

Dettagli

Laboratorio di Programmazione M-Z

Laboratorio di Programmazione M-Z Diretta Laboratorio di Programmazione M-Z Docente: Dott.ssa Alessandra Lumini [email protected] Università di Bologna, Sede di Cesena Divide et impera Dividere un problema in sottoproblemi più

Dettagli

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

! Dividere il problema in diverse parti. ! Risolvere ogni parte ricorsivamente. ! Combinare le soluzioni dei sottoproblemi in soluzioni globali. Divide-and-Conquer Chapter 5 Divide and Conquer Divide-and-conquer.! Dividere il problema in diverse parti.! Risolvere ogni parte ricorsivamente.! Combinare le soluzioni dei sottoproblemi in soluzioni

Dettagli

Corso di Architettura degli Elaboratori

Corso di Architettura degli Elaboratori Corso di Architettura degli Elaboratori Codifica dell'informazione: Numeri Binari (lucidi originali della Prof.ssa Zacchi e del Prof. Balossino, rivisti dal Prof. Baldoni) 1 Codifica dell'informazione?

Dettagli

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

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)}) Sol Esercizio 1 Es. Notazione asintotica: 1. Si dimostri che f(n)+g(n) = Θ(max{f(n),g(n)}) sotto l ip. f(n),g(n) >0, a partire da un certo n 0. poiché f(n) max{f(n),g(n)}, e g(n) max{f(n),g(n)}, sommando

Dettagli

Programmazione dinamica

Programmazione dinamica Programmazione dinamica Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Programmazione

Dettagli

Esercizi su alberi binari

Esercizi su alberi binari Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica

Dettagli

Esempio : i numeri di Fibonacci

Esempio : i numeri di Fibonacci Esempio : i numeri di Fibonacci La successione di Fibonacci F 1, F 2,... F n,... è definita come: F 1 =1 F 2 =1 F n =F n 1 F n 2,n 2 Leonardo Fibonacci (Pisa, 1170 Pisa, 1250) http://it.wikipedia.org/wiki/leonardo_fibonacci

Dettagli

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

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi Lezione 4 Problemi trattabili e soluzioni sempre più efficienti Gianluca Rossi Trattabile o intrattabile? Consideriamo ora il problema, ben noto a tutti gli studenti a partire dalla scuola media, di calcolare

Dettagli

Esercizi per il corso di Algoritmi e Strutture Dati

Esercizi per il corso di Algoritmi e Strutture Dati 1 Esercizi per il corso di Algoritmi e Strutture Dati Esercizi sulla Tecnica Divide et Impera N.B. Tutti gli algoritmi vanno scritti in pseudocodice (non in Java, né in C++, etc. ). Di tutti gli algoritmi

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Rappresentazione dell Informazione Barbara Masucci Cosa studiamo oggi Ø Un moderno elaboratore è un sistema elettronico digitale programmabile Ø Il suo comportamento è flessibile

Dettagli

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

Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n Elementi di Algebra e di Matematica Discreta Numeri interi, divisibilità, numerazione in base n Cristina Turrini UNIMI - 2016/2017 Cristina Turrini (UNIMI - 2016/2017) Elementi di Algebra e di Matematica

Dettagli

11. Misure con segno.

11. Misure con segno. 11. Misure con segno. 11.1. Misure con segno. Sia Ω un insieme non vuoto e sia A una σ-algebra in Ω. Definizione 11.1.1. (Misura con segno). Si chiama misura con segno su A ogni funzione ϕ : A R verificante

Dettagli

Esercizi sulla complessità di frammenti di pseudo-codice

Esercizi sulla complessità di frammenti di pseudo-codice Esercizi sulla complessità di frammenti di pseudo-codice Esercizio 1 Si determini la complessità temporale del seguente frammento di pseudo-codice in funzione di n. Il ciclo contiene solo istruzioni elementari;

Dettagli

una possibile funzione unidirezionale

una possibile funzione unidirezionale una possibile funzione unidirezionale moltiplicare due interi a n bit è facile (in O(n 2 ) con l algoritmo usuale) trovare un primo a n bit, e verificare che è primo, è facile (vedremo poi) fattorizzare

Dettagli

Programmazione dinamica

Programmazione dinamica Programmazione dinamica Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 29/21 I. Castelli Programmazione dinamica, A.A. 29/21 1/35

Dettagli

04 - Numeri Complessi

04 - Numeri Complessi Università degli Studi di Palermo Scuola Politecnica Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 04 - Numeri Complessi Anno Accademico 2015/2016 M. Tumminello,

Dettagli

UNIVERSITA DEGLI STUDI DI PERUGIA

UNIVERSITA DEGLI STUDI DI PERUGIA UNIVERSITA DEGLI STUDI DI PERUGIA REGISTRO DELLE LEZIONI E DELLE ALTRE ATTIVITÀ DIDATTICHE Anno accademico 2006-2007 Dott./Prof. Pinotti Maria Cristina Settore scientifico-disciplinare INF01 Facoltà Scienze

Dettagli

Equazioni di primo grado

Equazioni di primo grado Equazioni di primo grado 15 15.1 Identità ed equazioni Analizziamo le seguenti proposizioni: a ) cinque è uguale alla differenza tra sette e due ; b ) la somma di quattro e due è uguale a otto ; c ) il

Dettagli

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

A.A CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5. A.A. 2015-2016. CORSO DI ALGEBRA 1. PROFF. P. PIAZZA, E. SPINELLI. SOLUZIONE ESERCIZI FOGLIO 5. Esercizio 5.1. Determinare le ultime tre cifre di n = 13 1625. (Suggerimento. Sfruttare il Teorema di Eulero-Fermat)

Dettagli

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla

Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla Camil Demetrescu Irene Finocchi Giuseppe F. Italiano Algoritmi e Strutture Dati 2/ed Quiz a risposta multipla Indice 1 Un introduzione informale agli algoritmi 1 2 Modelli di calcolo e metodologie di

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Introduzione al corso di Algoritmi e Strutture Dati Luigi Pontieri Il nome del corso: Algoritmi e Strutture Dati Algoritmo: metodo per la risoluzione di problemi di elaborazione di informazioni, espresso

Dettagli

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

Esercizi di Analisi Numerica. Errori, Cambi di base, Numeri macchina, Aritmetica finita Esercizi di Analisi Numerica Errori, Cambi di base, Numeri macchina, Aritmetica finita ERRORI - es. 1 Calcolare il numero di decimali esatti e di cifre significative nei seguenti numeri scritti in base

Dettagli

Principio di induzione: esempi ed esercizi

Principio di induzione: esempi ed esercizi Principio di induzione: esempi ed esercizi Principio di induzione: Se una proprietà P n dipendente da una variabile intera n vale per n e se, per ogni n N vale P n P n + allora P vale su tutto N Variante

Dettagli

Ordinamenti per confronto: albero di decisione

Ordinamenti per confronto: albero di decisione Ordinamenti per confronto: albero di decisione Albero di decisione = rappresentazione grafica di tutte le possibili sequenze di confronti eseguite da un algoritmo assegnato di ordinamento per confronto

Dettagli

1 Il polinomio minimo.

1 Il polinomio minimo. Abstract Il polinomio minimo, così come il polinomio caratterisico, è un importante invariante per le matrici quadrate. La forma canonica di Jordan è un approssimazione della diagonalizzazione, e viene

Dettagli

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

Università degli Studi di Roma Tor Vergata. Principio di induzione matematica Università degli Studi di Roma Tor Vergata. Principio di induzione matematica Il Principio di induzione matematica è una tecnica di dimostrazione che permette la dimostrazione simultanea di infinite affermazioni.

Dettagli

4.1 Modelli di calcolo analisi asintotica e ricorrenze

4.1 Modelli di calcolo analisi asintotica e ricorrenze 4 Esercizi Prima Parte 4.1 Modelli di calcolo analisi asintotica e ricorrenze Esercizio 4 1 Rispondere alle seguenti domande: 1. Come misuriamo l efficienza di un algoritmo?. Quali sono gli algoritmi più

Dettagli

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

LEZIONE 3. a + b + 2c + e = 1 b + d + g = 0 3b + f + 3g = 2. a b c d e f g LEZIONE 3 3.. Matrici fortemente ridotte per righe. Nella precedente lezione abbiamo introdotto la nozione di soluzione di un sistema di equazioni lineari. In questa lezione ci poniamo il problema di descrivere

Dettagli

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

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort Due algoritmi di ordinamento basati sulla tecnica Divide et Impera: Mergesort e Quicksort (13 ottobre 2009, 2 novembre 2010) Ordinamento INPUT: un insieme di n oggetti a 1, a 2,, a n presi da un dominio

Dettagli

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

L algoritmo AKS. L algoritmo AKS. Seminario per il corso di Elementi di Algebra Computazionale. Oscar Papini. 22 luglio 2013 L algoritmo AKS Seminario per il corso di Elementi di Algebra Computazionale Oscar Papini 22 luglio 2013 Test di primalità Come facciamo a sapere se un numero n è primo? Definizione (Test di primalità)

Dettagli

Proprietà delle notazioni asintotiche

Proprietà delle notazioni asintotiche Proprietà delle notazioni asintotiche Punto della situazione Cos è un algoritmo Tempo di esecuzione T(n) Analisi di algoritmi: analisi asintotica di T(n) Notazioni asintotiche Argomento di oggi Proprietà

Dettagli

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

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15 ANNO ACCADEMICO 2014/15 1 a prova in itinere 13 gennaio 2015 ESERCIZIO 1 Si risolva l equazione di ricorrenza al variare del parametro reale a>1. T (n) = 27 n a T + n 2 log n a ESERCIZIO 2 Si ordinino

Dettagli

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

z =[a 4 a 3 a 2 a 1 a 0 ] 10 Esercizio 1. Sia z =[a 4 a 3 a 2 a 1 a 0 ] 10 un numero intero (la notazione significa che le cifre con cui rappresento z in base 10 sono a 4,..., a 0 {0, 1,..., 9}, ecioè z = a 4 10 4 + a 3 10 3 + a 2

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta

Dettagli

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

Tutti i numeri qui considerati sono interi. Se si tratta in particolare di numeri Naturali (quindi non negativi) verrà specificato. LICEO B. RUSSELL A.S. 2010/2011 DALLA TEORIA DEI NUMERI ALLE CONGRUENZE Tutti i numeri qui considerati sono interi. Se si tratta in particolare di numeri Naturali (quindi non negativi) verrà specificato.

Dettagli

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

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill) Grafi: visite Una breve presentazione Visite di grafi Scopo e tipi di visita Una visita (o attraversamento) di un grafo G permette di esaminare i nodi e gli archi di G in modo sistematico Problema di base

Dettagli

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

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio Algoritmi Greedy Tecniche Algoritmiche: tecnica greedy (o golosa) Idea: per trovare una soluzione globalmente ottima, scegli ripetutamente soluzioni ottime localmente Un esempio Input: lista di interi

Dettagli

Un esempio di calcolo di complessità: insertion sort

Un esempio di calcolo di complessità: insertion sort Un esempio di calcolo di complessità: insertion sort Vediamo su un esempio come si può calcolare la complessità di un algoritmo... L esempio è un metodo semplice per ordinare arrays: insertion sort, o

Dettagli

8. Completamento di uno spazio di misura.

8. Completamento di uno spazio di misura. 8. Completamento di uno spazio di misura. 8.1. Spazi di misura. Spazi di misura completi. Definizione 8.1.1. (Spazio misurabile). Si chiama spazio misurabile ogni coppia ordinata (Ω, A), dove Ω è un insieme

Dettagli