Sommario della lezione:

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Sommario della lezione:"

Transcript

1 Sommario della lezione: Metodologie per il progetto di algoritmi: La Tecnica Divide et Impera Esempi di applicazione a: Ricerca del massimo e minimo di una sequenza di numeri Calcolo di potenze di numeri Moltiplicazione di interi Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 1/25

2 Paradigma generale di algoritmi basati su D&I Algoritmo D&I(x) if x é sufficientemente piccola o semplice then return adhoc(x) (% ovvero risolvi x direttamente) else decomponi x in l istanze piú piccole x 1,x 2,...,x l for i = 1 to l do y i D&I(x i ) (% ovvero risolvi ricorsivamente ciascuna x i ) componi le sottosoluzioni y i alle istanze x i per ottenere una soluzione globale y alla istanza completa x Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 2/25

3 Primo esempio: Ricerca binaria Problema: Dato un array ordinato A[1...n], ed un elemento x in A, trovare l indice i per cui A[i] = x SEARCH(A,x,l,r) %(trova x in A[l...r]) if l = r then return(l) else m = (l + r)/2 if x A[m] % istanza piccola then return(search(a, x, l, m)) % inizio fase decomposizione else return(search(a,x,m + 1,r)) % inizio conquer Posto T(n) il numero di confronti nel caso peggiore effettuati da SEARCH(A,x, 1,n) abbiamo che T(n) = 0 se n = 1 e T(n) = T(n/2) + 1 altrimenti, T(n) = Θ(log n) Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 3/25

4 Secondo esempio: MERGESORT Problema: Dato un array A[1...n], ordinare i suoi elementi. Adottando la tecnica Divide et Impera procederemo nel modo seguente: MERGESORT(A) 1. Se n = 1, restituisci A. 2. Altrimenti, dividi A in due metá uguali X e Y. 3. Ordina X e Y, chiamando ricorsivamente MERGESORT(X) e MERGESORT(Y ) 4. Combina i due array ottenuti al passo 3. in un unico array ordinato e restituiscilo Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 4/25

5 Esempio di esecuzione di MergeSort Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 5/25

6 Analisi di MERGE SORT MERGESORT(A[1...n]) if n = 1 then return A else A 1 MERGESORT(A[1... n/2 ]) A 2 MERGESORT(A[ n/ n]) return MERGE(A 1,A 2 ) Analisi: T(1) = Θ(1) T(n) = 2 T(n/2)+Θ(n) da cui T(n) = Θ(n log n) Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 6/25

7 Ricerca di Massimo e Minimo di un Array Problema. Trova l elemento di valore massimo e quello di valore minimo in un array S[1...n]. Quanti confronti tra elementi di S occorrono? Algoritmo semplice. max = S[1] for i = 2 to n do if S[i] > max then max = S[i] min = S[1] for i = 2 to n do if S[i] < min then min = S[i] (# di confronti tra elementi di S) = 2(n 1) (si puó migliorare a 2n 3) Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 7/25

8 Uso di Divide et Impera nel calcolo del max e min 1. Se l array ha 2 elementi, risolvi il problema direttamente, altrimenti dividi l array in metá 2. Trova il massimo ed il minimo in ciascuna metá ricorsivamente 3. Ritorna il massimo dei due massimi ed il minimo dei due minimi trovati al passo 2. MAXMIN(x,y) % ritorna il max e min in S[x... y] if y x 1 then return(max(s[x], S[y]), min(s[x], S[y])) else (max 1, min 1)=(MAXMIN(x, (x + y)/2 ) (max 2, min 2)=(MAXMIN((x + y)/2 + 1,y) return(max(max 1, max 2), min(min 1, min 2)) Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 8/25

9 Analisi di MaxMin Assumiamo che n sia potenza di 2 e sia T(n) il numero di confronti effuato da MaxMin MaxMin chiama se stessa 2 volte su array di taglia n/2, eseguendo quindi 2T(n/2) confronti MaxMin effettua un altro confronto per calcolare il max a partire da (max 1, max 2) ed un altro per calcolare il min a partire da (min 1, min 2). In totale T(n) = 1 se n = 2 2T(n/2) + 2 altrimenti Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 9/25

10 T(n) =? (ricordando che n = 2 i ) T(n) = 2T(n/2) + 2 = 2(2T(n/4) + 2) + 2 = 4T(n/4) = 8T(n/8) = 2 i 1 T(n/2 i 1 ) + = 2 log n 1 T(2) + = n/2 + (2 log n 2) i 1 j=1 log n 1 j=1 2 j 2 j = n/2 + n 2 = 1.5n 2 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 10/25

11 Nota Sia nel caso del MERGESORT che dell algoritmo MAXMIN abbiamo diviso il problema originale in due sottoproblemi di taglia uguale. É stato un caso? NO. In generale, la tecnica Divide et Impera produce algoritmi efficienti quando riusciamo a dividere il problema originale in sottoproblemi di taglia piú o meno simile, bilanciando quindi il lavoro da fare tra le varie chiamate ricorsive dell algoritmo sui rispettivi sottoproblemi. Inoltre, in generale, nella tecnica D&I si ricorre su sottoproblemi di taglia sempre minore, fin quando essi non abbiano una taglia talmente piccola da essere risolti direttamente, ovvero attraverso una qualche semplice procedura non ricorsiva. Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 11/25

12 Ricordiamo il paradigma generale di algoritmi basati su D&I AlgoritmoD&I(x) if x é sufficientemente piccolo o semplice then return adhoc(x) else decomponi x in istanze piú piccole x 1,x 2,...,x l for i = 1 to l do y i D&I(x i ) componi le y i per ottenere una soluzione y ad x return y Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 12/25

13 Applicazione di D&I al Calcolo di Potenze Problema: Dato un numero a ed un intero positivo n, calcolare a n usando il minor numero di moltiplicazioni. Algoritmo semplice SLOWPOWER(a, n) x a for i = 2 to n do x x a return x (# di moltiplicazioni effettuate da SLOWPOWER(a, n))=n 1 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 13/25

14 Applicazione di D&I al Calcolo di Potenze Per applicare D&I osserviamo che a n = a n/2 a n/2 Inoltre, a n/2 = a n/2 se n é pari, e a n/2 = a a n/2 se n é dispari. Algoritmo veloce FASTPOWER(a, n) if n = 1 return a else x FASTPOWER(a, n/2 ) if n é pari return x x if n é dispari return x x a Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 14/25

15 Complessitá di FASTPOWER(a, n) FASTPOWER(a, n) if n = 1 return a else x FASTPOWER(a, n/2 ) if n é pari return x x if n é dispari return x x a T(1) = 0. In generale T(n) T(n/2) +2. Assumendo n = 2 k, abbiamo T(n) T(n/2) + 2 T(n/4) = T(n/4) T(n/2 k ) + 2k = 2 log n Quindi con D&I possiamo calcolare a n usando O(log n) moltiplicazioni, contro le n 1 dell algoritmo semplice. Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 15/25

16 Applicazione di D&I alla Moltiplicazione di Interi Come si moltiplicano due numeri? abbiamo appreso che si fà così: In seconda elementare = Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 16/25

17 e vale anche per numeri in binario! = Qual è la complessità dell algoritmo che moltiplica, nel modo elementare, due numeri di n bits ciascuno? Vi sono n moltiplicazioni parziali, in ciascuna delle quali si moltiplicano n bits, in totale O(n 2 ) moltiplicazioni di bit Contando anche le addizioni, altre O(n 2 ), otteniamo che l algoritmo elementare effettua O(n 2 ) operazioni per moltiplicare due numeri di n bit Possiamo fare meglio? Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 17/25

18 Applicazione di D&I alla Moltiplicazione di Numeri Ricordiamo il paradigma centrale della tecnica D&I: dividi il problema in sottoproblemi, risolvi i sottoproblemi, e combina le relative soluzioni in una soluzione per il problema globale. In ossequio a tale paradigma, dato un numero di n bit x iniziamo a dividerlo in bit di ordine alto e bit di ordine basso, ovvero. Esempio: x = x 1 2 n/2 + x 0 x = } {{} }{{} = } {{} + } {{} x 1 x 0 x x 0 Facciamo lo stesso con l altro numero y da moltiplicare, scrivendo y = y 1 2 n/2 + y 0 Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 18/25

19 avendo scritto x = x 1 2 n/2 + x 0 e y = y 1 2 n/2 + y 0 otteniamo x y = (x 1 2 n/2 + x 0 ) (y 1 2 n/2 + y 0 ) = x 1 y 1 2 n +(x 1 y 0 + x 0 y 1 ) 2 n/2 +x 0 y 0 (1) L uguaglianza (1) riduce il problema di calcolare un singolo prodotto x y di due numeri di n bit ciascuno, nel problema di calcolare quattro prodotti (x 1 y 1, x 1 y 0, x 0 y 1, x 0 y 0 ) di numeri di n/2 bit ciascuno. Abbiamo quindi un abbozzo di algoritmo D&I: calcola ricorsivamente ciascuno dei 4 sottoproblemi, di dimensione n/2 ciascuno, e combina i risultati ottenuti usando l equazione (1). Domanda: usando la tecnica D&I, di quanto abbiamo stracciato l agoritmo appreso in seconda elementare? Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 19/25

20 Vediamo, Dobbiamo calcolare... x y = x 1 y 1 2 n +(x 1 y 0 + x 0 y 1 ) 2 n/2 +x 0 y 0 Detto T(n) il numero di operazioni che il nostro algoritmo impiega per calcolare il prodotto di due numeri di n bit, avremo che T(n) = 4T(n/2) + dn (ricordiamo: abbiamo 4 sottoproblemi di taglia n/2 ciascuno) Questa è una equazione del tipo T(n) = at(n/c) + dn, con a = 4 > 2 = c, che risolta con i metodi visti nella lezione scorsa dà... T(n) = O(n log c a ) = O(n 2 )!!! cioè la stessa complessità dell algoritmo elementare. Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 20/25

21 Dove abbiamo fallito? Abbiamo tentato di risolvere un problema di taglia n mediante 4 chiamate ricorsive a risoluzioni di problemi di taglia n/2 Possiamo diminuire il numero di chiamate ricorsive per calcolare x y = x 1 y 1 2 n +(x 1 y 0 + x 0 y 1 ) 2 n/2 +x 0 y 0? Vediamo... Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 21/25

22 Occorre calcolare x y = x 1 y 1 2 n +(x 1 y 0 + x 0 y 1 ) 2 n/2 +x 0 y 0 Partiamo da x 1 y 1 + x 1 y 0 + x 0 y 1 + x 0 y 0 = (x 1 + x 0 ) (y 1 + y 0 ) che ci possiamo calcolare con una singola chiamata ricorsiva al prodotto del numero (x 1 + x 0 ) per (y 1 + y 0 ). Se ora ci calcoliamo x 1 y 1 (con una chiamata ricorsiva) e x 0 y 0 (con un altra chiamata ricorsiva), ci possiamo calcolare x 1 y 0 + x 0 y 1 = (x 1 + x 0 ) (y 1 + y 0 ) x 1 y 1 x 0 y 0 semplicemente sottraendo x 1 y 1 e x 0 y 0 da (x 1 + x 0 ) (y 1 + y 0 ). Quindi, con solo 3 chiamate ricorsive ci siamo calcolati tutti i termini che compaiono nel prodotto x y = x 1 y 1 2 n +(x 1 y 0 + x 0 y 1 ) 2 n/2 +x 0 y 0 e possiamo calcolarci tranquillamente x y Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 22/25

23 Algoritmo D&I per il calcolo di prodotti: Recursive-Multiply(x, y) Scrivi x = x 1 2 n/2 + x 0 y = y 1 2 n/2 + y 0 Calcola x 1 + x 0 e y 1 + y 0 p Recursive-Multiply(x 1 + x 0,y 1 + y 0 ) x 1 y 1 Recursive-Multiply(x 1,y 1 ) x 0 y 0 Recursive-Multiply(x 0,y 0 ) return x 1 y 1 2 n + (p x 1 y 1 x 0 y 0 ) 2 n/2 + x 0 y 0 Detta T(n) la complessità di Recursive-Multiply(x, y) per numeri x e y n bits, avremo T(n) = 3T(n/2) + dn Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 23/25

24 Risolviamo T(n) = 3T(n/2) + dn Ricordiamo che equazioni del tipo T(n) = at(n/c) + dn, con a > c hanno come soluzione T(n) = O(n log c a ), il che, nel nostro caso ci dice T(n) = O(n log c a ) = O(n log 2 3 ) = O(n 1.59 ) migliorando, finalmente, un algoritmo da seconda elementare... Per avere una idea del miglioramento, osserviamo che n 2 17 n log 2 3 per n = 1000, n n log 2 3 per n = , e n n log 2 3 per n = Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 24/25

25 più seriamente... Idee simili possono essere usate per ottenere algoritmi efficienti per calcolare (rapidamente) la convoluzione di due vettori. Tale operazione é cruciale in molti campi dell Analisi dei Segnali ed ha applicazioni pratiche importantissime (TAC, riconoscimento vocale, compressione di immagini JPEG, riconoscimento automatico di immagini, trattamento di segnali musicali, astronomia,...) Un algoritmo per il calcolo della convoluzione di vettori basato sulle idee che abbiamo presentato ha rivoluzionato il campo dell Analisi dei Segnali. Tale algoritmo, chiamato Fast Fourier Transform (FFT), fu scoperto da Cooley e Tukey nel 1965 (sebbene Gauss nel 1805 ne avesse pensato uno simile). L algoritmo FFT é entrato nella lista Top Ten Algorithms of the Century, compilata dalla rivista Computing in Science and Engineering nel Gennaio Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2009/10 p. 25/25

Ricerca di Massimo e Minimo di un Array

Ricerca di Massimo e Minimo di un Array Universitá degli Studi di Salerno Corso di Introduzione agli Algoritmi e Strutture Dati Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/18 Ricerca di Massimo e Minimo di un Array Problema. Trova l elemento di

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

Introduzione al Corso di Algoritmi

Introduzione al Corso di Algoritmi Introduzione al Corso di Algoritmi Di cosa parliamo oggi: Una discussione generale su cosa studieremo, perchè lo studeriemo, come lo studieremo,... Un esempio illustrativo di cosa studeriemo Informazione

Dettagli

Sommario della Lezione

Sommario della Lezione Sommario della Lezione Analisi di Algoritmi Ricorsivi: Come esprimere la complessitá di algoritmi ricorsivi mediante relazioni di ricorrenza Come derivare le relazioni di ricorrenza Come risolvere le relazioni

Dettagli

Tecniche Algoritmiche: divide et impera

Tecniche Algoritmiche: divide et impera 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

Dettagli

Esercizi per il corso di Algoritmi, anno accademico 2011/12

Esercizi per il corso di Algoritmi, anno accademico 2011/12 Esercizi per il corso di Algoritmi, anno accademico 2011/12 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

Dettagli

CAPITOLO 2. Divide et Impera

CAPITOLO 2. Divide et Impera CAPITOLO 2 Divide et Impera In questo capitolo discuteremo alcuni algoritmi progettati mediante la tecnica di progettazione del Divide et Impera. Algoritmi progettati usando questa tecnica consistono di

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

In questa lezione. Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort

In questa lezione. Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort In questa lezione Il Mergesort: primo esempio di applicazione della tecnica divide et impera analisi tempo di esecuzione del Mergesort [CLRS] par. 2.3. Prof. E. Fachini - Intr. Alg.!1 Progettazione di

Dettagli

In questa lezione: correttezza del mergesort Analisi del mergesort: relazioni di ricorrenza e alberi della ricorsione

In questa lezione: correttezza del mergesort Analisi del mergesort: relazioni di ricorrenza e alberi della ricorsione In questa lezione: correttezza del mergesort Analisi del mergesort: relazioni di ricorrenza e alberi della ricorsione Prof E Fachini - Intr Alg 1 MergeSort: correttezza MergeSort (A,p,r) if p < r then

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Modelli di calcolo e metodologie di analisi Domenico Fabio Savo 1 Notazione asintotica f(n) = tempo di esecuzione / occupazione di memoria di un algoritmo su input di dimensione

Dettagli

Di cosa parliamo oggi?

Di cosa parliamo oggi? Di cosa parliamo oggi? Oggi parliamo di Analisi di Algoritmi Analisi di Algoritmi = valutazione delle risorse usate da algoritmi per risolvere un dato problema Risorse = Tempo impiegato dall algoritmo

Dettagli

Algoritmi e Strutture Dati. Luciano Gualà

Algoritmi e Strutture Dati. Luciano Gualà Algoritmi e Strutture Dati Luciano Gualà guala@mat.uniroma2.it www.mat.uniroma2.it/~guala Esercizio Analizzare la complessità nel caso medio del primo algoritmo di pesatura (Alg1) presentato nella prima

Dettagli

Gli algoritmi ricorsivi di ordinamento. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino

Gli algoritmi ricorsivi di ordinamento. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino ordinamento Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Merge Sort Ricorsivo, divide et impera Stabile Divisione: due sottovettori SX e DX rispetto al centro del vettore. p r A.A.

Dettagli

Note per la Lezione 2 Ugo Vaccaro

Note per la Lezione 2 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2018 2019 Note per la Lezione 2 Ugo Vaccaro Dati un intero n 1 ed una generica sequenza a = a[0]a[1] a[n 1] di numeri (che possono essere sia positivi o negativi),

Dettagli

Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente

Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente Divide et impera (Divide and Conquer) Dividi il problema in sottoproblemi piu` semplici e risolvili ricorsivamente Divide et impera - Schema generale Divide-et-impera (P, n) if n k then risolvi direttamente

Dettagli

Ricerca. Per ricerca si intende il procedimento di localizzazione di una particolare informazione in un elenco di dati.

Ricerca. Per ricerca si intende il procedimento di localizzazione di una particolare informazione in un elenco di dati. Ricerca Per ricerca si intende il procedimento di localizzazione di una particolare informazione in un elenco di dati. Il problema della ricerca in termini generali : dato un insieme D = {a 1,a 2,...,a

Dettagli

Valutazione di progressioni geometriche

Valutazione di progressioni geometriche Universitá degli Studi di Salerno Corso di Introduzione agli Algoritmi e Strutture Dati Prof. Ugo Vaccaro Anno Acc. 2015/16 p. 1/22 Valutazione di progressioni geometriche Somme finite: Sia S n = n i=0

Dettagli

Si può fare di meglio?

Si può fare di meglio? Si può fare di meglio? Gli algoritmi visti fino ad ora hanno costo O(n 2 ) È possibile fare di meglio? Quanto meglio? Algoritmi e Strutture Dati 1 Algoritmi divide et impera Idea generale Divide: Scomporre

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

Per regnare occorre tenere divisi i nemici e trarne vantaggio. fai ad ogni passo la scelta più conveniente

Per regnare occorre tenere divisi i nemici e trarne vantaggio. fai ad ogni passo la scelta più conveniente Progetto di algoritmi sequenziali (un solo esecutore ) Divide et Impera Per regnare occorre tenere divisi i nemici e trarne vantaggio Greedy fai ad ogni passo la scelta più conveniente Buoni risultati

Dettagli

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano. Usa la tecnica del divide et impera:

Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano. Usa la tecnica del divide et impera: MergeSort Usa la tecnica del divide et impera: 1 Divide: dividi l array a metà 2 Risolvi i due sottoproblemi ricorsivamente 3 Impera: fondi le due sottosequenze ordinate 1 Esempio di esecuzione 7 2 4 5

Dettagli

Moltiplicazione veloce di interi

Moltiplicazione veloce di interi Moltiplicazione veloce di interi Ogni numero intero w di n cifre può essere scritto come 10 n/2 w s + w d w s indica il numero formato dalle n/2 cifre più significative di w w d denota il numero formato

Dettagli

ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09)

ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09) ESERCITAZIONI DI INTRODUZIONE AGLI ALGORITMI (A.A. 08/09) DISPENSA N. 4 1. Ricerca Binaria Ricorsiva L algoritmo Ricerca Binaria risolve il problema della ricerca di una chiave in un vettore. È un esempio

Dettagli

Algoritmi e strutture di dati 2

Algoritmi e strutture di dati 2 Algoritmi e strutture di dati 2 Paola Vocca Lezione 1: Divide et Impera 1 Paradigma del divide et impera Strutturato in tre fasi. Sia Π() istanza di dimensione di un problema computazionale Π (dove è immediato

Dettagli

Quicksort Moltiplicazione di interi Master Theorem Valutazione del tempo di esecuzione di algoritmi iterativi e ricorsivi

Quicksort Moltiplicazione di interi Master Theorem Valutazione del tempo di esecuzione di algoritmi iterativi e ricorsivi Quicksort Moltiplicazione di interi Master Theorem Valutazione del tempo di esecuzione di algoritmi iterativi e ricorsivi Algoritmi basati sulla tecnica Divide et Impera In questo corso: Ricerca binaria

Dettagli

Algoritmi e Strutture Dati. Luciano Gualà

Algoritmi e Strutture Dati. Luciano Gualà Algoritmi e Strutture Dati Luciano Gualà guala@mat.uniroma2.it www.mat.uniroma2.it/~guala Esercizio Analizzare la complessità nel caso medio del primo algoritmo di pesatura (Alg1) presentato nella prima

Dettagli

Morale della lezione scorsa

Morale della lezione scorsa Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/38 Morale della lezione scorsa Abbiamo introdotto un algoritmo (Quicksort) che ha tempo di esecuzione Θ(n 2

Dettagli

Algoritmo di ordinamento sul posto che ha tempo di esecuzione :

Algoritmo di ordinamento sul posto che ha tempo di esecuzione : QuickSort Algoritmo di ordinamento sul posto che ha tempo di esecuzione : - O(n 2 ) nel caso peggiore - O(n log n) nel caso medio Nonostante le cattive prestazioni nel caso peggiore, rimane il miglior

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

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 4 Ordinamento Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Esempi: ordinare una lista di nomi alfabeticamente, o un

Dettagli

Di cosa parliamo oggi?

Di cosa parliamo oggi? Universitá degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro Anno Acc. 2014/15 p. 1/41 Di cosa parliamo oggi? Oggi parliamo di Analisi di Algoritmi Analisi di Algoritmi = valutazione delle risorse

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it 12 ottobre 2010 1 Vero o falso? Per ciascuna delle seguenti affermazioni, dire se è vera o falsa, fornendo una dimostrazione:

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

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

Mergesort (cont.) 2018/ Lezione 16. Venerdì, 16 Novembre 2018

Mergesort (cont.) 2018/ Lezione 16. Venerdì, 16 Novembre 2018 Mergesort (cont.) Informatica@SEFA 08/09 - Lezione 6 Massimo Lauria Venerdì, 6 Novembre 08 Mergesort La comprensione della struttura dati pila ci permette di capire più agevolmente

Dettagli

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 I conigli di Fibonacci Ricerca Binaria L isola dei conigli Leonardo da

Dettagli

Il paradigma divide et impera. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino

Il paradigma divide et impera. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Il paradigma divide et impera Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Paradigmi per il Problem Solving: Divide et Impera Divide da problema di dimensione n in a problemi indipendenti

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Ricorsivi e Ricorrenze 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

Dettagli

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Ricerca binaria Assunzione:

Dettagli

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: Pag 24 3) Il problema della ricerca Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi: si incontrano in una grande varietà di situazioni reali; appaiono come sottoproblemi

Dettagli

QUICKSORT. Basato sul paradigma divide-et-impera (come MERGE-SORT)

QUICKSORT. Basato sul paradigma divide-et-impera (come MERGE-SORT) QUICKSORT Basato sul paradigma divide-et-impera (come MERGE-SORT) Divide: stabilisce un valore di q tale da dividere l array A[p.. r] in due sottoarray non vuoti A[p.. q] e A[q+1.. r], dove ogni elemento

Dettagli

LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica. Algoritmi ricorsivi

LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica. Algoritmi ricorsivi LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna Partiamo da un

Dettagli

ALGORITMI Docente: Prof. Domenico Cantone

ALGORITMI Docente: Prof. Domenico Cantone CORSO SPECILE DI DURT NNULE PER IL CONSEGUIMENTO DELL BILITZIONE LL INSEGNMENTO NELL SCUOL SECONDRI DI I e II GRDO Indirizzo Fisico - Informatico - Matematico a.a. 00/07 - Classe - Informatica LGORITMI

Dettagli

La ricorsione. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

La ricorsione. Sommario. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino La ricorsione Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino Sommario! Definizione di ricorsione e strategie divide et impera! Semplici algoritmi ricorsivi! Merge

Dettagli

Problemi di ricerca in insiemi ordinati

Problemi di ricerca in insiemi ordinati Problemi di ricerca in insiemi ordinati Abbiamo visto che, per trovare un elemento in un insieme ordinato, con l algoritmo della ricerca binaria restringiamo l intervallo della ricerca alla metà in ogni

Dettagli

Tecniche Algoritmiche/1 Divide et Impera

Tecniche Algoritmiche/1 Divide et Impera Tecniche Algoritmiche/1 Divide et Impera Ivan Lanese Dipartimento di Informatica Scienza e Ingegneria Università di Bologna Ivan.lanese@gmail.com http://www.cs.unibo.it/~lanese/ Divide-et-impera 2 Tecniche

Dettagli

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi Informatica Generale Andrea Corradini 13 - Gli algoritmi e la risoluzione di problemi Sommario Passi per la risoluzione di problemi Problemi di ricerca e ordinamento Algoritmi iterativi: la ricerca lineare

Dettagli

Programmazione dinamica Primi esempi

Programmazione dinamica Primi esempi Programmazione dinamica Primi esempi (20 ottobre 2009 e 9 novembre 2010) Programmazione dinamica e Divide et Impera Entrambe le tecniche dividono il problema in sottoproblemi: dalle soluzioni dei sottoproblemi

Dettagli

Selezione per distribuzione

Selezione per distribuzione Selezione per distribuzione Problema: selezione dell elemento con rango r in un array a di n elementi distinti. Si vuole evitare di ordinare a NB: Il problema diventa quello di trovare il minimo quando

Dettagli

Note per la Lezione 14 Ugo Vaccaro

Note per la Lezione 14 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2018 2019 Note per la Lezione 14 Ugo Vaccaro Applichiamo la tecnica di Programmazione Dinamica al seguente problema. Input del problema: Supponiamo di avere un

Dettagli

Esercizi per il corso di Algoritmi

Esercizi per il corso di Algoritmi 1 Esercizi per il corso di Algoritmi Esercizi sulle Notazioni Asintotiche 1. Esercizio: In ciascuno dei seguenti casi, indicare se f(n) = O(g(n)), o se f(n) = Ω(g(n)), oppure entrambi (nel cui caso occorre

Dettagli

Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati

Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati Università degli Studi di Camerino Laurea in Informatica Prima Prova Parziale del corso di Algoritmi e Strutture Dati Docente: Maria Rita Di Berardini 19 dicembre 2007 Nome: Cognome: N.Matricola: Note:

Dettagli

Programmazione Dinamica (PD)

Programmazione Dinamica (PD) Programmazione Dinamica (PD) Altra tecnica per risolvere problemi di ottimizzazione, piu generale degli algoritmi greedy La programmazione dinamica risolve un problema di ottimizzazione componendo le soluzioni

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Quicksort (*) e metodi di ordinamento lineari Punto della situazione Problema dell ordinamento: Lower bound (n log n) Upper bound O(n log n) Algoritmi

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

Ordinamento per inserzione e per fusione

Ordinamento per inserzione e per fusione Ordinamento per inserzione e per fusione Alessio Orlandi 15 marzo 2010 Fusione: problema Problema Siano A e B due array di n A e n B interi rispettivamente. Si supponga che A e B siano ordinati in modo

Dettagli

1 Introduzione. 2 Merge Sort

1 Introduzione. 2 Merge Sort Corso: Gestione ed elaborazione grandi moli di dati Lezione del: 8 maggio 2006 Argomento: Algoritmi di ordinamento nel Disk odel: ergesort e ulti-way ergesort con analisi della complessitá di I/O e work.

Dettagli

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Ricerca binaria Assunzione:

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 4 Ordinamento Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Esempi: ordinare alfabeticamente lista di nomi, o insieme

Dettagli

COGNOME E NOME (IN STAMPATELLO) MATRICOLA

COGNOME E NOME (IN STAMPATELLO) MATRICOLA Politecnico di Milano Facoltà di Ingegneria dell Informazione Informatica 3 Proff. Campi, Ghezzi, Matera e Morzenti Appello del 14 Settembre 2006 Recupero II Parte COGNOME E NOME (IN STAMPATELLO) MATRICOLA

Dettagli

Algoritmi di ordinamento

Algoritmi di ordinamento Algoritmi e Strutture Dati Ordinamento Dato un insieme S di n oggetti presi da un dominio totalmente ordinato, ordinare S Algoritmi di ordinamento Esempi: ordinare una lista di nomi alfabeticamente, o

Dettagli

Nozioni di base (II Parte)

Nozioni di base (II Parte) Nozioni di base (II Parte) 1 Ricorsione [GTG14, Par. 5.1-5.4 and 13.1] Algoritmo Ricorsivo: algoritmo che invoca se stesso (su istanze sempre più piccole) sfruttando la nozione di induzione. La soluzione

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 e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Quicksort (*) e metodi di ordinamento lineari Punto della situazione Problema dell ordinamento: Lower bound (n log n) Upper bound O(n log n) Algoritmi

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

Ordinamenti ricorsivi

Ordinamenti ricorsivi Ordinamenti ricorsivi Selection Sort ricorsivo Algoritmi di ordinamento I Il metodo del selection sort può essere facilmente realizzato in modo ricorsivo I si definisce una procedura che ordina (ricorsivamente)

Dettagli

In questa lezione Alberi binari di ricerca

In questa lezione Alberi binari di ricerca In questa lezione Alberi binari di ricerca!1 Dizionari Un dizionario è una struttura dati costituita da un insieme con le operazioni di inserimento, cancellazione e verifica di appartenenza di un elemento.

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Elementi di Programmazione Dinamica Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Tecniche di Programmazione Tecniche di progettazione e

Dettagli

Informatica Generale Andrea Corradini Algoritmi: ordinamento per inserimento e ricorsione

Informatica Generale Andrea Corradini Algoritmi: ordinamento per inserimento e ricorsione Informatica Generale Andrea Corradini 14 - Algoritmi: ordinamento per inserimento e ricorsione Sommario Un algoritmo iterativo: l'ordinamento per inserimento (insertion sort) La ricorsione: i numeri triangolari

Dettagli

INFORMATICA GENERALE

INFORMATICA GENERALE CAROSELLI STEFANO INFORMATICA GENERALE TESINA «LA TECNICA DEL DIVIDE-ET-IMPERA E DUE SUE IMPORTANTI APPLICAZIONI: IL QUICK SORT E IL MERGE SORT» La tecnica del DIVIDE-ET-IMPERA è un metodo di risoluzione

Dettagli

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort

Algoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Selection e Insertion Sort Ordinamento Dato un insieme S di n elementi presi da un dominio totalmente ordinato, ordinare S in ordine non crescente o non

Dettagli

Notazione asintotica. notazione Ω. notazione O. notazione o notazione ω. Marina Zanella Algoritmi e strutture dati Richiami matematici 1

Notazione asintotica. notazione Ω. notazione O. notazione o notazione ω. Marina Zanella Algoritmi e strutture dati Richiami matematici 1 Notazione asintotica Sebbene si possa talvolta determinare il tempo esatto di esecuzione di un algoritmo, l estrema precisione non giustifica lo sforzo del calcolo; infatti, per input sufficientemente

Dettagli

Algoritmi di ordinamento

Algoritmi di ordinamento Algoritmi di ordinamento Il problema Vogliamo ordinare un array monodimensionale in modo crescente per il caso decrescente valgono le stesse considerazioni Vari algoritmi possibili Diverse caratteristiche

Dettagli

Parte III: Algoritmo di Branch-and-Bound

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

Dettagli

Analisi asintotica. Astrazione: come il tempo di esecuzione cresce in funzione della taglia dell input asintoticamente.

Analisi asintotica. Astrazione: come il tempo di esecuzione cresce in funzione della taglia dell input asintoticamente. Analisi asintotica Vittorio Maniezzo University of Bologna Analisi asintotica Obiettivo: semplificare l analisi del consumo di risorse di un algoritmo prescindendo dai dettagli implementativi o di altro

Dettagli

In questa lezione. Heap binario heapsort. [CLRS10] cap. 6, par Prof. E. Fachini - Intr. Alg.

In questa lezione. Heap binario heapsort. [CLRS10] cap. 6, par Prof. E. Fachini - Intr. Alg. In questa lezione Heap binario heapsort [CLRS10] cap. 6, par. 6.1-6.4!1 Heap binari Un heap binario è una struttura dati consistente di un array visto come un albero binario. A= 5 60 65 30 50 18 40 25

Dettagli

Tipici tempi di esecuzione. Martedì 7 ottobre 2014

Tipici tempi di esecuzione. Martedì 7 ottobre 2014 Tipici tempi di esecuzione Martedì 7 ottobre 2014 Punto della situazione Abbiamo definito il tempo di esecuzione di un algoritmo Scelto l analisi asintotica Abbiamo definito le notazioni asintotiche che

Dettagli

Algoritmi di ordinamento

Algoritmi di ordinamento Algoritmi di ordinamento Il problema Vogliamo ordinare un array monodimensionale in modo crescente per il caso decrescente valgono le stesse considerazioni Vari algoritmi possibili Diverse caratteristiche

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

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

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

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi di Ordinamento Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Il problema dell ordinamento Il problema dell ordinamento di un insieme

Dettagli

Un vettore è una struttura dati che permette di memorizzare sequenze di dati omogeneii (sequenze di interi, di valori booleani,...

Un vettore è una struttura dati che permette di memorizzare sequenze di dati omogeneii (sequenze di interi, di valori booleani,... Vettori (array) Un vettore è una struttura dati che permette di memorizzare sequenze di dati omogeneii (sequenze di interi, di valori booleani,...) I vettori sono caratterizzati da dimensione tipo Es.

Dettagli

esegui Ricerca_binaria (metà sinistra di A, v) esegui Ricerca_binaria (metà destra di A, v)

esegui Ricerca_binaria (metà sinistra di A, v) esegui Ricerca_binaria (metà destra di A, v) 4) La ricorsione Pag 36 Pag 36 Consideriamo una nuova formulazione dell algoritmo di ricerca binaria (nella quale sono volutamente tralasciati i dettagli per catturarne l essenza): Ricerca_binaria (A,

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

Algoritmi di ordinamento

Algoritmi di ordinamento Capitolo 7 Algoritmi di ordinamento 7.1 Selection sort L algoritmo di ordinamento per selezione opera nel modo seguente: supponiamo che i primi k elementi siano ordinati; l algoritmo sceglie il minimo

Dettagli

Mergesort. Mergesort. Mergesort. Mergesort. L idea è la seguente: (par. 13.4) dividere l insieme in due parti uguali di n/2 componenti

Mergesort. Mergesort. Mergesort. Mergesort. L idea è la seguente: (par. 13.4) dividere l insieme in due parti uguali di n/2 componenti L idea è la seguente: (par. 13.4) dividere l insieme in due parti uguali di n/2 componenti n/2 n/2 se fossero già ordinate le potremmo riunire con un algoritmo di fusione (merge) Esempio. Consideriamo

Dettagli

Informatica II. Capitolo 2 Analisi di algoritmi. Valutare la complessità in tempo. Complessità in tempo: cosa serve?

Informatica II. Capitolo 2 Analisi di algoritmi. Valutare la complessità in tempo. Complessità in tempo: cosa serve? Valutare la complessità in tempo Complessità in tempo: cosa serve? Informatica II Capitolo 2 Analisi di algoritmi Per stimare il tempo impiegato da un programma Per stimare il più grande input gestibile

Dettagli

come segue: data una collezione C di elementi e una un elemento che verifica la proprietà P

come segue: data una collezione C di elementi e una un elemento che verifica la proprietà P Problemi di Ricerca Carla Binucci e Walter Didimo Il problema della Ricerca In generale, il Problema della Ricerca è definito come segue: data una collezione C di elementi e una proprietà P, determinare

Dettagli

Problemi di ordinamento

Problemi di ordinamento Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata

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

ALGORITMI DI ORDINAMENTO E RICERCA BINARIA. Docente: Giorgio Giacinto AA 2008/2009. problema dell ordinamento in modi diversi

ALGORITMI DI ORDINAMENTO E RICERCA BINARIA. Docente: Giorgio Giacinto AA 2008/2009. problema dell ordinamento in modi diversi Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Note per la Lezione 7 Ugo Vaccaro

Note per la Lezione 7 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2016 2017 Note per la Lezione 7 Ugo Vaccaro Sempre sulla tecnica Programmazione Dinamica Ricordiamo che lo sviluppo di algoritmi basati sulla Programmazione Dinamica

Dettagli

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 9 Agosto, 204 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

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

QuickSort (1962, The Computer Journal)

QuickSort (1962, The Computer Journal) QuickSort (1962, The Computer Journal) Charles Antony Richard Hoare (1934 -) Attualmente senior researcher al Microsoft Research Center di Cambridge Hoare ha vinto nel 1980 il Turing Award, il premio più

Dettagli

Quick Sort. PARTITION(A,p,r) risistema il sottoarray A[p...r] e riporta l indice q:

Quick Sort. PARTITION(A,p,r) risistema il sottoarray A[p...r] e riporta l indice q: Quick Sort - Ordinamento in loco - Tempo di esecuzione nel caso peggiore: Θ(n 2 ) - Tempo di esecuzione nel caso medio: Θ(n lg n) - I fattori costanti nascosti nella notazione Θ sono abbastanza piccoli

Dettagli

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet   francesc Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet http://www.sci.unich.it/ francesc m.franceschet@unich.it Algoritmi e Strutture di Dati I 2 Problema dell ordinamento

Dettagli