Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4"

Transcript

1 Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4 Equazioni alle G. Gini 2013

2 divide et impera - ricorsione Esempio: ordinamento di array Dimensione dei sottoinsiemi n/2,n/2 n-1,1 Poco sforzo per dividere molto per ricombinare Merge Sort Insertion Sort Molto sforzo per dividere poco per ricombinare Quick Sort Selection Sort

3 Equazioni alle ricorrenze Ottenere i limiti asintotici Θ e O. Tre tecniche principali di soluzione: 1. metodo di sostituzione: ipotizziamo un limite e lo dimostriamo mediante induzione matematica 2. albero di ricorsione: convertiamo la ricorrenza in un albero i cui nodi rappresentano i costi ai vari livelli e usiamo proprietà delle sommatorie 3. teorema dell'esperto (master theorem e muster theorem)

4 convenzioni In genere n è sempre considerato un intero, infatti la dimensione dell input è in genere un intero Per valori piccoli di n consideriamo il tempo di esecuzione costante; in genere ignoriamo le condizioni al contorno floor e ceiling Spesso dovremo ricorrere a dimostrazioni per induzione

5 Per induzione Caso base: T(c) vale Passo induttivo: T(n-1) -> T(n) Induzione forte: il passo induttivo diventa

6 Esempio di induzione Si dimostri che Caso base: n = 1 Ipotesi induttiva Dunque Per ipotesi induttiva Quindi QDE

7 Metodo di sostituzione ipotizzare la forma della soluzione usare l induzione matematica per trovare le costanti e dimostrare che la soluzione è corretta A volte è difficile formulare una buona ipotesi per la soluzione

8 esempio di sostituzione cerchiamo un limite superiore per T(n) = 2T(n/2 ) + n supponiamo T(n) = O(n lg(n)) dobbiamo mostrare che T(n) cn lg(n) per una opportuna costante c>0 supponiamo che ciò valga per T(n/2), cioèt(n/2) c n/2 lg(n/2) allora, sostituendo in T(n) abbiamo T(n) 2c n/2 lg(n/2) + n cn lg(n/2) + n = cn lg(n) -cn lg(2) + n = cn lg(n) - cn + n cn lg(n) basta che c 1 dobbiamo mostrare che la disuguaglianza vale per n = 1 (condizione al contorno e caso base dell induzione); supponiamo che sia T(1) = 1, allora per n=1, il limite T(n) cn lg(n) diventa T(1) =1 c1 lg(1) = 0? No! È in contrasto con T(1)=1 però T(n) cn lg(n) deve valere da un certo n 0 in poi, che possiamo scegliere arbitrariamente; proviamo con n 0 = 2; se T(1) = 1, allora, dalla ricorrenza abbiamo T(2) = 2T(1) + 2 = 4 e T(3) = 2T(1) + 3 = 5 ci basta determinare una costante c tale che T(2) = 4 c2 log 2 (2) e T(3) = 5 c3 log 2 (3) per cio basta prendere c 2

9 Problemi col metodo di sostituzione Consideriamo il seguente caso: T(n) = T(n/2 )+T(n/2)+1 Proviamo a vedere se T(n) = O(n): T(n) c n/2+c n/2 +1 = cn+1 basta prendere c=1 e siamo a posto? No! perche non abbiamo dimostrato la forma esatta della disuguaglianza dobbiamo derivare che il tutto è cn, ma cn+1 non è cn Potremmo prendere un limite più alto, e dimostrare che T(n) è O(n 2 ) (che è ovviamente vero), ma si può anche dimostrare che T(n) = O(n) usando un'accortezza mostriamo che T(n) cn-b, con b un'opportuna costante se fosse cosi, allora T(n)= O(n) T(n) c n/2 -b+c n/2 -b+1 = cn-2b+1 cn - b basta prendere b 1

10 Sostituzione di variabili A volte una manipolazione algebrica permette di ottenere una ricorrenza già nota Ad esempio T(n) = 2T(n 1/2 ) + lgn Ponendo m= lgn di ottiene T(2 m ) = 2T(2 m/2 ) + m Ponendo S(m) = T(2 m ) La nuova ricorrenza è S(m) = 2S(m/2)+ m che abbiamo visto ha come soluzione S(m) = O(m lgm) ripristinando otteniamo quindi T(n) = T(2m) = S(m) = O(m lgm) = O(lgn lglgn)

11 Metodo dell albero di ricorsione Un metodo non molto preciso, ma utile per fare una congettura da verificare poi con il metodo di sostituzione Idea: a partire dalla ricorrenza, sviluppiamo l'albero delle chiamate, indicando per ogni chiamata la sua complessità Alla fine dovremo sommare tutte le complessità dei diversi livelli

12 Alcune proprietà utili delle somme

13

14 Metodo dell albero di ricorsione Idea: a partire dalla ricorrenza, sviluppiamo l'albero delle chiamate, indicando per ogni chiamata la sua complessità Esempio: T(n) = T(n/3) + T(2n/3)+O(n) 1 2

15 Otteniamo un valore cn per ogni livello. Se l albero fosse binario completo potremmo sommare i costi cn dei k livelli, dove altezza= log 3/2 n, ma l albero non è completo

16 Prevediamo che la soluzione della ricorrenza sia al massimo il costo_del _livello * numero_livelli, cioè O(c n log 3/2 n), cioè O(n lgn) Però come considerare il costo delle foglie? Il costo di ogni foglia è una costante, quindi il costo totale delle foglie sarebbe Θ(n log 3/2 2 ), cioè Ω(n lgn). Proviamo a dimostrare che l ipotesi O(n lgn) è corretta. Lo facciamo col metodo di sostituzione. Dimostriamo T(n) <=d n lgn, con d costante>0. Finchè d >= c/(lg3-2/3)

17 Quindi abbiamo infine dimostrato anche T(n) = Θ (n lgn)

18 Master theorem E - una ricetta per risolvere ricorrenze della forma T(n) = at(n/b) + f(n) -il problema di dimensione n è diviso in a sottoproblemi di dimensione n/b, ognuno risolto in tempo T(n/b). Costanti a>= 1, b>1 f(n) funzione asintoticamente positiva, considera il costo per dividere e ricombinare i sottoproblemi. -Esempi: ricerca binaria, mergesort,

19 Il teorema dice che T(n) può essere asintoticamente limitata nei seguenti modi: In pratica confrontiamo f(n) con n log b a. La soluzione della ricorrenza è determinata dalla più grande delle due funzioni.

20

21

22 Applicazione del teorema T(n) = 9 T(n/3) + n a=9, b=3, f(n)= n, quindi n l og b a = n log 3 9 = Θ(n 2 ) f(n) = n = O( n log 3 9-ε ) per ε = 1 Possiamo applicare il caso 1 e concludere che T(n) = Θ(n 2 ) T(n) = T(2n/3) + 1 a=1, b=3/2, f(n)= 1, quindi n l og b a = n log 3/2 1 = n 0 =1 f(n) = Θ(n l og b a ) = 1per ε = Θ(1) Possiamo applicare il caso 2 e concludere che T(n) = Θ(lgn)

23 Master theorem e Muster theorem Master theorem utile per ricorrenze da divide et impera Se si riducono come n/b, se f(n) è O(n d ), il master theorem dice: Se si riducono in altri modi, ad esempio come n-b?

24 Muster theorem Un teorema simile per altri casi di ricorrenze che si riducono come n-b Siano T(n) una funzione su n positivi, c, a >0, b >0, d 0 costanti, f(n) una funzione O(n d ) T(n) allora c se n 1 a(t(n-b) + f(n) se n >1

25 Note sul muster theorem Il primo caso non si applica mai, in quanto a<1 significa no ricorsioni. Il secondo caso è piuttosto frequente e si applica ad esempio a insertion-sort Il terzo caso si applica a molti algoritmi esponenziali, ad esempio alla torre di Hanoi

26 Torre di Hanoi HanoiPuzzle (n) if n = 0, return HanoiPuzzle(n 1) //[Move n-1 disks to another peg] Move one disk //[Move the largest disk to the open peg] HanoiPuzzle(n 1) //[Move n-1 disks] se T(n) è il numero di mosse per risolvere HanoiPuzzle(n), la ricorrenza è T(n) = 2T(n 1) + 1. Il muster theorem: a = 2, b = 1, d = 0, ed il teorema ci dice no(n d a n/b ) = O(2 n ) cioè abbiamo 2 n mosse di dischi per risolvere il puzzle

27 Un esempio completo: progettare un algoritmo di complessità ottima Dato un array A di n interi scrivere una funzione che, usando il paradigma del divide et impera restituisce il massimo ed il minimo di A in tempo O(n). Verificare tale complessità tramite l impostazione e la risoluzione di un equazione di ricorrenza. SOLUZIONE. il metodo del divide et impera si basa sull idea di ridurre il problema dato, di dimensione n, a due o più problemi di dimensione inferiore. Le uniche possibilità sensate sono le seguenti: calcolare ricorsivamente il massimo ed il minimo nei due sottovettori destro e sinistro di dimensione n/2, confrontare poi i due massimi ed i due minimi dando in output il massimo e minimo globali; calcolare ricorsivamente il massimo ed il minimo del sottovettore di dimensione n-1 ottenuto eliminando il primo (o l ultimo) elemento, confrontare poi il massimo ed il minimo ottenuti con l elemento eliminato dando in output il massimo e minimo globali. Per comprendere quale dei due approcci sia migliore, proviamo a calcolarne la complessità.

28 primo metodo, - il tempo di esecuzione su un input di n elementi T(n) è pari al tempo di esecuzione dello stesso algoritmo su ciascuno dei due sottovettori di n/2 elementi, più il tempo necessario per confrontare i due massimi ed i due minimi; il caso base si ha quando i sottovettori sono di dimensione 1, per cui il massimo ed il minimo coincidono, e l unica operazione da fare è quella di confrontare tra loro massimi e minimi per dare in output i valori globali. L equazione di ricorrenza è dunque: T(n)=2T(n/2)+Θ(1) T(1)=Θ(1) Risolvendo questa equazione con il metodo iterativo (ma si può fare anche con il metodo dell albero), si ottiene T(n)=22T(n/22)+Θ(1)+Θ(1)=23T(n/23)+Θ(1)+Θ(1)+Θ(1)= =2k+T(n/2k )+kθ(1). Procediamo fino a quando n/2k non sia uguale ad 1 e cioè fino a quando k=log n. In tal caso, sostituendo nell espressione di T(n) e sfruttando il caso base si ha: T(n)=n+Θ(1)+log n Θ(1)=Θ(n)

29 secondo approccio: il tempo di esecuzione dell algoritmo su un input di n elementi, T(n) è pari al tempo di esecuzione dello stesso algoritmo su n-1 elementi più il tempo per confrontare l elemento eliminato con il massimo ed il minimo trovati; anche qui il passo base si ha per n=1 e cioè quando massimo e minimo coincidono. L equazione di ricorrenza è: T(n)=T(n-1)+Θ(1) T(1)=Θ(1) Anche questa equazione si può risolvere con il metodo iterativo ottenendo T(n)=T(n-1)+Θ(1)=T(n-2)+Θ(1)+Θ(1)= T(n-k)+kΘ(1). Procediamo fino a quando n-k=1 cioè fino a quando k=n-1 e sostituiamo nell equazione: T(n)=T(1)+(n-1)Θ(1)=Θ(n) se si tiene conto del caso base. Deduciamo dai precedenti ragionamenti che entrambi i metodi sono ugualmente corretti ed efficienti

30 Esercizio 1 Espansione di ricorrenze Si trovi la soluzione di: T(n) = 2 T(n=2)+5 n2 T(1) = 7 L'espansione dell albero risulta la seguente: T(n) = 2 T(n/2)+5 n 2 = 2(2T(n/4)+5(n/2) 2 )+5 n 2 = 2(2(2 T(n/8)+5 (n/4) 2 )+5(n/2) 2 )+5 n 2 Per semplicità, supponiamo che n sia una potenza di 2 e scriviamo n come 2 k.

31 Soluzione 1

32 Conosciamo la sommatoria e quindi Eseguendo i calcoli e semplificando Che è la soluzione esatta per n=2 k

33 Esercizio 2 Sia dato un albero binario completo con n nodi, radicato al nodo puntato dal puntatore r. Calcolare la complessità computazionale della seguente funzione, in funzione di n: link Funzione(link r) int fogliasx,fogliadx; link r1; { 1. if (!r->fsin) && (!r->fdes) 2. return r 3. else { 4. r1=r; 5. while (r1->fsin) do 6. r1=r1->fsin; 7. fogliasx=r1->dato; 8. r1=r; 9. while (r1->fdes) do 10. r1=r1->fdes; 11. fogliadx=r1->dato; 12. if (fogliasx<fogliadx) return Funzione(r->fsin) 13. else return Funzione(r->fdes); 14.} }

34 Soluzione 2 La funzione è ricorsiva e pertanto dobbiamo trovare un equazione di ricorrenza in funzione di n; la complessità si ottiene sommando i contributi delle varie istruzioni: le linee 1. e 2. rappresentano il caso base, che costa Θ(1); le linee 4., 7., 8. e 11. costano anch esse Θ(1); i cicli while delle linee 5. e 9. vengono ripetuti un certo numero di volte indefinto tra 1 e l altezza dell albero, infatti il primo ciclo si interrompe quando il nodo non ha figlio sinistro ed il secondo ciclo quando il nodo non ha figlio destro; le linee 12. e 13. sono chiamate ricorsive e quindi la loro complessità si dovrà scrivere come T() con un opportuno valore tra le parentesi, ma quale? Quanti nodi hanno i sottoalberi radicati ai figli sinistro e destro della radice? Possiamo dire che hanno k ed n-1-k nodi rispettivamente. In totale otteniamo: T(n)= Θ(1)+v1Θ(1)+v2Θ(1)+max(T(k), T(n-k)) dove v1 e v2 sono il numero di volte in cui vengono ripetuti i cicli delle linee 5. e 9., cioè l altezza degli alberi. Ma quanto vale l altezza? si osservi che l albero in input è binario e COMPLETO. Quindi tutti i nodi privi di figlio sinistro (ed anche di figlio destro) sono ad altezza log n, pertanto i due cicli alle linee 5. e 9. vengono ripetuti esattamente log n volte ciascuno; diventa facile calcolare max(t(k), T(n-k)): tanto il sottoalbero sinistro che quello destro contengono esattamente (n-1)/2 nodi ciascuno.

35 L equazione di ricorrenza diventa : T(n)= Θ(1)+Θ(log n)+ T(n/2)= Θ(log n)+ T(n/2 T(1)= Θ(1) Risolvendo per iterazione si ha: T(n)= Θ(log n)+θ(log n/2)+ T(n/22)= = = Σ i=0..k-1 Θ (log n/2 i )+ T(n/2 k )= = (si procede fino a quando n/2 k =1 e cioè k=log n) = Σ i=0..log n-1 Θ (log n/2 i )+ T(n/2 log n )= = Σ i=0..log n-1 Θ (log n)- Σ i=0..log n-1 Θ (log 2 i )+T(1)= = Θ (log 2 n)- Σ i=0..log n-1 iθ (log 2)+ Θ(1)= = Θ (log 2 n)- Θ (log 2 ) Σ i=0..log n-1 i= = Θ (log 2 n)- Θ (log 2 n) =Θ (log 2 n)

36 Esercizio 3 L algoritmo merge-sort non ordina gli elementi sul posto ma usa una memoria aggiuntiva di dimensione non costante per fare il merge dei due sottoarray di supporto. 1. Scrivere merge-sort-in-place e dire se cambia la complessità temporale rispetto a merge-sort. 2. Estendere merge-sort-in-place a liste doppiamente concatenate e indicarne la complessità temporale

37 Soluzione 3 1. Per ordinare sul posto occorre evitare di usare gli array di servizio. Ciò si ottiene shiftando la parte del sottoarray di sinistra ancora da sistemare quando viene preso un elemento da destra

38 La complessità di merge-in-place costa Θ(n 2 ) nel caso pessimo in quanto ad ogni ripetizione del ciclo 3-12 può richiedere di spostare j-k+1 celle, che è un numero Θ(n) Quindi la ricorrenza di merge-sort-in-place nel caso pessimo diventa T(n) = 2T(n/2) + n 2 Usando il teorema dell esperto la soluzione è Θ(n 2 ) con un peggioramento rispetto a merge-sort

39 Usando una lista a doppio puntatore è possibile fare il merge senza ricorrere ad array ausiliari: occorre solo modificare un numero costante di puntatori per ottenere l effetto di posizionare i nodi nel punto giusto durante il merge

40 In questo caso c è un solo ciclo 3-17 che viene ripetuto al più n volte. Quindi la complessità di sublist-merge-in-place èq(n) La ricorrenza di list-merge-sort-in-place è la stessa T(n) = 2 T(n/ 2 ) + n la complessità è ancora Θ(n log(n))

41 Esercizio 4

42

43

44 Soluzione 4

45 Esercizio 5

46

47 Soluzione 5 Provare il muster theorem?

48 Note per le dimostrazioni

49 Equazioni alle ricorrenze Tipicamente vengono da metodi divide et impera il problema di dimensione n è stato diviso in a sottoproblemi di dimensione n/b; cn k è il lavoro per ricombinare le soluzioni parziali. Vediamo come si ragiona per il teorema dell esperto Assumiamo n = b m

50 Con La C c sommatoria dipende da b k /a, quindi esaminiamo i 3 casi o n

51 b k /a < 1 b k /a = 1 a=b k quindi b k /a > 1 dato che Quindi essendo Si ottiene

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Si imposti la relazione di ricorrenza che ne descrive la complessità e la si risolva utilizzando il metodo della sostituzione.

Si imposti la relazione di ricorrenza che ne descrive la complessità e la si risolva utilizzando il metodo della sostituzione. parte II - A 2 Si consideri la seguente funzione: analizzami(int n) c = 1 k = n*n while k > 1 do k = k/2 for i = 0 to 3 do if n >1 then analizzami(n/4) Si imposti la relazione di ricorrenza che ne descrive

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

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

Crescita funzioni. 20 novembre Come possiamo confrontare le funzioni di costo che abbiamo ottenuto finora?

Crescita funzioni. 20 novembre Come possiamo confrontare le funzioni di costo che abbiamo ottenuto finora? Crescita funzioni 20 novembre 2006 1 Funzioni di costo Definizione 1 (Funzione di costo). Utilizziamo il termine funzione di costo per indicare una funzione f : N R dall insieme dei numeri naturali ai

Dettagli

Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima

Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi. Parte prima Introduzione agli algoritmi Prova di esame del 19/9/2016 Prof.sse E. Fachini - R. Petreschi Parte prima 1) Si dimostri il teorema sulla limitazione inferiore per il tempo asintotico di esecuzione nel caso

Dettagli

Algoritmi e Strutture Dati. Capitolo 1 Un introduzione informale agli algoritmi

Algoritmi e Strutture Dati. Capitolo 1 Un introduzione informale agli algoritmi Algoritmi e Strutture Dati Capitolo Un introduzione informale agli algoritmi Ancora un esempio di problema e soluzioni algoritmiche: i numeri di Fibonacci verso un modello di calcolo più simile a un computer

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

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

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

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 di Ordinamento

Algoritmi di Ordinamento Algoritmi di Ordinamento 1 Algoritmi di ordinamento Selection Sort Quick Sort Lower bound alla complessità degli algoritmi di ordinamento Statistiche di ordine 2 Selection Sort SelectionSort(dati[]) {

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

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

Esercizi svolti relativi all insegnamento di. Informatica generale

Esercizi svolti relativi all insegnamento di. Informatica generale Corso di laurea in Matematica Esercizi svolti relativi all insegnamento di Informatica generale Canale 1: Prof. Tiziana Calamoneri Canale 2: Prof. Giancarlo Bongiovanni Questi esercizi svolti si riferiscono

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

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

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

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

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 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 2018/12/27 This work is licensed under a Creative Commons Attribution-ShareAlike

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

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

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

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

Definizioni di base. Algoritmo: procedura computazionale ben definita che prende valori in input e produce valori in output.

Definizioni di base. Algoritmo: procedura computazionale ben definita che prende valori in input e produce valori in output. ANALISI DELLA COMPLESSITÀ DEGLI ALGORITMI Definizioni di base Algoritmo: procedura computazionale ben definita che prende valori in input e produce valori in output. Un algoritmo è uno strumento per risolvere

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

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

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

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

In questa lezione. Alberi binari: [CLRS09] cap. 12 per la visita inorder. visite e esercizi su alberi binari. Prof. E. Fachini - Intr. Alg.

In questa lezione. Alberi binari: [CLRS09] cap. 12 per la visita inorder. visite e esercizi su alberi binari. Prof. E. Fachini - Intr. Alg. In questa lezione Alberi binari: visite e esercizi su alberi binari [CLRS09] cap. 12 per la visita inorder!1 Visita inordine di un albero binario visita inordine(x) se l albero x non è nullo allora visita

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

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

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 13 novembre 2008 Il problema dell ordinamento Il problema dell ordinamento

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

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

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

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

Appunti lezione Capitolo 2 Analisi delle funzioni di costo

Appunti lezione Capitolo 2 Analisi delle funzioni di costo Appunti lezione Capitolo Analisi delle funzioni di costo Alberto Montresor 0 Settembre, 016 1 Funzioni di costo Definizione 1 (Funzione di costo). Utilizziamo il termine funzione di costo per indicare

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: savo@dis.uniroma1.it Web: http://www.dis.uniroma1.it/~savo

Dettagli

Corso di Matematica I - Anno

Corso di Matematica I - Anno Soluzioni Corso di Matematica I - Anno 00-03 1. Si dimostra facilmente l identità (X Y ) Z = (X Z) (Y Z). Quindi si ottiene: A (B C) = A [(B C) (B B c )] = A [B (C (B B c ))] = A [B (C B c )] = (A B) (A

Dettagli

Algoritmi e Strutture Dati 1

Algoritmi e Strutture Dati 1 Esonero del 31/03/2009 Compito n 1 Dimostrare che non tutte le funzioni f: ℵ 0,1 sono calcolabili. Dire se, giustificando la risposta applicando la definizione delle notazioni asintotiche, a) n log n =

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 6 novembre 2008 Heap binari: definizione Un heap binario è una albero binario quasi completo

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

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.200.2005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Ω (grande omega) Diciamo che T(n) = Ω (f(n)), - leggiamo T(n) ha complessità

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

Problem Set 2 docente: Luciano Gualà

Problem Set 2 docente: Luciano Gualà Problem Set 2 docente: Luciano Gualà Esercizio 1 (equazioni di ricorrenza) Si risolvano le seguenti equazioni di ricorrenza. Si assuma sempre T (costante) = O(1). (a) T (n) = T (n 10) + 10. (b) T (n) =

Dettagli

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Code di priorità (Heap e heap_sort) m.patrignani Nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi,

Dettagli

INTRODUZIONE AGLI ALGORITMI 25 Giugno 2018 Prof.ssa Fachini/Prof.ssa Petreschi I PARTE

INTRODUZIONE AGLI ALGORITMI 25 Giugno 2018 Prof.ssa Fachini/Prof.ssa Petreschi I PARTE INTRODUZIONE AGLI ALGORITMI 25 Giugno 2018 Prof.ssa Fachini/Prof.ssa Petreschi I PARTE 1. Definire il concetto di stabilità di un algoritmo di ordinamento e dire se, e sotto quali ipotesi, i seguenti algoritmi

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

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

Esercizi su ABR. Prof. E. Fachini - Intr. Alg.!1

Esercizi su ABR. Prof. E. Fachini - Intr. Alg.!1 Esercizi su ABR Confronto proprietà ABR e Max-Heap. Proprietà del cammino radice-foglia individuato da una ricerca. Fusione di due ABR. Il successivo calcolato dalla radice Costruzione di un ABR bilanciato

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

Algoritmi e Strutture Dati. Divide-et-impera

Algoritmi e Strutture Dati. Divide-et-impera Algoritmi e Strutture Dati Divide-et-impera Alberto Montresor Università di Trento 2018/12/05 This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Sommario 1

Dettagli

Tecniche di analisi degli algoritmi

Tecniche di analisi degli algoritmi Tecniche di analisi degli algoritmi Moreno Marzolla, Lorenzo Donatiello Dipartimento di Infromatica, Università di Bologna 11 novembre 2014 Copyright c 2009, 2010 Moreno Marzolla, Università di Bologna

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

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ Heap e Heapsort Algoritmi di ordinamento Insertion Sort Quicksort Heapsort Insertion Sort L

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

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

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

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

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet Algoritmi e Strutture di Dati I 1 Algoritmi e Strutture di Dati I Massimo Franceschet Algoritmi e Strutture di Dati I 2 Problemi Un problema specifica in termini generali una relazione che intercorrere

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

Pensiero Algoritmico. Lezione 3 23 Novembre Ripasso. Anatomia di un programma. Anatomia di un programma. Ozalp Babaoglu Università di Bologna

Pensiero Algoritmico. Lezione 3 23 Novembre Ripasso. Anatomia di un programma. Anatomia di un programma. Ozalp Babaoglu Università di Bologna Pensiero Algoritmico Lezione 3 23 Novembre 2016 Ozalp Babaoglu Università di Bologna Ripasso Definizione del problema Astrarre i dettagli, costruire un modello Costruire l algoritmo che risolve il problema

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

Appunti Senza Pretese di Programmazione II: Costruzione di un Albero Bilanciato

Appunti Senza Pretese di Programmazione II: Costruzione di un Albero Bilanciato Appunti Senza Pretese di Programmazione II: Costruzione di un Albero Bilanciato Alessandro Panconesi DSI, La Sapienza via Salaria 113, 00198, Roma Consideriamo un problema che ci consentirá di vedere un

Dettagli

Algoritmi e Strutture Dati Esercizi Svolti. Giuseppe Persiano Dipartimento di Informatica ed Appl. Renato M. Capocelli Università di Salerno

Algoritmi e Strutture Dati Esercizi Svolti. Giuseppe Persiano Dipartimento di Informatica ed Appl. Renato M. Capocelli Università di Salerno Algoritmi e Strutture Dati Esercizi Svolti Giuseppe Persiano Dipartimento di Informatica ed Appl Renato M Capocelli Università di Salerno Indice Esercizio 12-3 5 Esercizio 23-4 6 Esercizio 63-3 7 Esercizio

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

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

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

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

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

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi

Dettagli

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione Appello del 24 Gennaio 2007 Esercizio 1 (ASD) 1. Sia T (n) = T (n/6) + T (n/3) + Θ(n). Considerare ciascuna delle seguenti affermazioni

Dettagli

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

Algoritmi di ordinamento

Algoritmi di ordinamento Algoritmi di ordinamento! Selection Sort! Quick Sort! Lower bound alla complessità degli algoritmi di ordinamento Ordinamento 1 Selection Sort SelectionSort(dati[]) { for (i=0; idati.length-1; i++) { min

Dettagli

Schema generale di un algoritmo divide-et-impera. Algoritmi e Laboratorio a.a Lezioni. Esempio: mergesort su array. Esempio: quicksort

Schema generale di un algoritmo divide-et-impera. Algoritmi e Laboratorio a.a Lezioni. Esempio: mergesort su array. Esempio: quicksort Schema generale di un algoritmo divide-et-impera Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 2006-07 Lezioni prof.

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

Algoritmi e Strutture di Dati

Algoritmi e Strutture di Dati Algoritmi e Strutture di Dati Complessità dei problemi m.patrignani Nota di copyright queste slides so protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma n limitatamente,

Dettagli

Lezione 4 Ugo Vaccaro

Lezione 4 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 2017 2018 Lezione 4 Ugo Vaccaro Introduciamo ora la notazione Ω, che ci sarà utile quando vorremo valutare limitazioni inferiori al tempo di esecuzione di algoritmi

Dettagli

Alberi binari: definizione e alcune proprietà

Alberi binari: definizione e alcune proprietà Alberi binari: definizione e alcune proprietà Alberi binari Un albero binario è un albero con radice in cui ogni nodo ha al più due figli. In maniera più formale: Definizione. (Alberi binari) Un albero

Dettagli

Divide et impera su alberi

Divide et impera su alberi Divide et impera su alberi Caso base: peru = null o una foglia Decomposizione: riformula il problema per i sottoalberi radicati nei figli di u. Ricombinazione: ottieniilrisultatoconricombina 1 Decomponibile(u):

Dettagli