Complessità computazionale concreta

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Complessità computazionale concreta"

Transcript

1 Complessità computazionale concreta Che cos è la teoria della complessità? La teoria della complessità è un tentativo di dare una risposta matematica a domande come: Cosa vuol dire che un algoritmo è più eiciente di un altro? In che senso un problema di calcolo è più diicile di un altro? Che cosa rende una unzione calcolabile praticamente trattabile? Esistono soluzioni ottimali per problemi di calcolo eettivamente risolvibili? Quali problemi si possono risolvere meglio parallelizzando? ecc. Problemi e istanze In generale un problema di calcolo è una unzione Π : Input Π Output Π ; un istanza del problema Π è un particolare x Input Π. Es. Input Π = N, Π(x) = la scomposizione in primi di x Se Π è a volori 0,1 allora si parla di problema di decisione. Es. REACHABILITY Dato un grao inito orientato G = (V,E) e due vertici u, v V, decidere se esiste un cammino in G da u a v. E un problema di decisione un istanza del quale è una tripla G, u, v.

2 Algoritmi Un algoritmo è metodo dettagliato che consente di risolvere un problema di calcolo, ossia di calcolare i valori della unzione Π. Es. Input (G =(V,E), u, v) // alg. per REACHABILITY S := {u}; M := {u}; while S do x := un elemento di S; S := S\{x}; oreach y V i (x,y) E then M := M {y}; S := S {y} i v M Output 1 else Output 0 Complessità dinamica Si misura la quantità di risorsa richiesta da ciascuna esecuzione di un algoritmo. E dunque una unzione degli ingressi: A : Input N Es. Space A (x) = quantità di memoria usata da A in x Time A (x) = numero delle operazioni elementari eseguite da A in x E talvolta espressa in termini di una dimensione: : Input N Es. n = log 2 (n+1) = lunghezza della rappresentazione binaria di n ( 0) g A Input N N Complessità nel caso peggiore: g A (n) = max{ A (x) : x = n} (che esiste se n -1 è inito oppure se A è limitata su n -1, per ogni n). Conronto tra algoritmi T B (n) = 2 n T A (n) = 100 n L algoritmo A è migliore dell algoritmo B per n > 50; Rimpiazzare B con A è meglio che raddoppiare la velocità del computer: TB (100) = 2 T (100) A TB (1000) = 20 T (1000) A

3 Conronto asintotico tra unzioni g x. (x) g(x) dove x. P(x) z x z. P(x). g g z g x. (x) g(x) dove x. P(x) z x z. P(x). Oss. x. P(x) x. P(x) x. P(x) x. P(x) La relazione è un preordine La relazione g è soltanto un preordine (rilessiva e transitiva). Inatti: g non è tricotomica, essendovi unzioni inconrontabili: (x) = 1 se x pari 0 se x dispari g(x) = 0 se x pari 1 se x dispari g non è un ordine parziale, non essendo antisimmetrica: In generale z 0. g g z x z. (x) = g(x) O-grande De. Se (x) e g(x) sono unzioni su N, allora (n) = O(g(n)) sse c R + \{0} n 0 N n n 0. (n) c g(n). c g(n) (n) n 0 A rigore O(g(n)) è un insieme di unzioni, onde si dovrebbe scrivere (n) O(g(n)).

4 Le costanti non contano Per ogni, g, e per ogni costante c > 0: (n) = O(c g(n)) (n) = O(g(n)). ) a ortiori, visto che c > 0. ) esistono d > 0 e n 0 tali che (n) d g(n), per ogni n n 0 posto = d/c (esiste perché c 0), abbiamo > 0 e (n) d g(n) = c g(n) per ogni n n 0. Eliminazione dei termini d ordine ineriore Se p(x) è un polinomio di grado a coe. in R + e x positiva allora p(x) = O(x ) i i i p ( x) = ai x ax = a x a( + 1) x i= 0 i= 0 i= 0 dove a =max{a i : 0 i }. Se q(x) è un polinomio di grado h <, allora p(x) O(q(x)): p.a. se p(x) = O(q(x)) = O(x h h ), allora a q.o. x p( x) cx h h ma a x cx x c a x h / c / a = d perché a > 0, da cui una contradd. quando x > d. Gli ordini di grandezza Ordini O(1) O(log 2 n) O(n) O(n log n) O(n 2 ) O(n 3 ) O(n p ) p > 0 O(2 n ) Funzioni costanti logaritmiche lineari n log n quadratiche cubiche polinomiali esponenziali

5 Alcune inclusioni importanti O(1) < O(log n): conseguenza del atto che log n è sup. illimitata. (n) = O(1) c n. (n) c Ma, per n 2 c, c log n deinitivamente. O(log n) < O(n): sruttando il atto che n < 2 n per ogni n, log n n n = 2 log n 2 n O(n) < O(n log n): n > 2 log n > 1 n log n > n O(n p ) < O(2 n ) Lemma. Siano, g unzioni a valori interi positivi con g(n) 0 per ogni n. Allora: ( n) lim = 0 ( n) = O( g( n)) g( n) O( ( n)) g( n) n Dall ipotesi segue che per ogni c > 0, 0 (n)/g(n) < c q.o., quindi (n) < c g(n) q.o., ossia (n) = O(g(n)). P.a. g(n) = O( (n)): allora esiste d > 0 t.c. g(n) d (n) q.o. Poiché g ha valori int. positivi non nulli, 1/ d (n)/g(n) q.o., mentre dovrebbe essere, deinitivamente, 0 (n)/g(n) < c per ogni c > 0. Corollario. O(n p ) < O(2 n ): perché lim n n p /2 n = 0. O-grande ed o-piccolo Se (n) = O(g(n)) e g h, allora (n) = O(h(n)): quanto buono è questo conine superiore? De. (n) = o(g(n)) sse c > 0 n. 0 (n) < cg(n). Se (n) = o(g(n)) allora è un ininitesimo di g, quindi g non è un conine superiore stretto di. Osserviamo inatti che, se g è positiva non nulla: ( n) ( n) = o( g( n)) lim = 0 n g( n)

6 Algebra di O-grande (1) Deiniamo: (n) + O(g(n)) = {h : g O(g(n)). n. h(n) (n) + g (n)} (n) O(g(n)) = {h : g O(g(n)). n. h(n) (n) g (n)} Allora ne segue: (n) + O(g(n)) = O( (n) + g(n)) (n) O(g(n)) = O( (n) g(n)). Similmente deiniamo O( (n)) + O(g(n)) = {h : O( (n)) g O(g(n)) n. h(n) (n) + g (n)}, ed O( (n)) O(g(n)) analogamente. Algebra di O-grande (2) Ne deriva: (n) = O( (n)) c O( (n)) = O( (n)) c costante O( (n)) + O(g(n)) = O( (n) + g(n)) O( (n)) + O( (n)) = O( (n)) g O( (n)) + O(g(n)) = O(g(n)) O( (n)) O(g(n)) = O( (n) g(n)) Perciò ad esempio: O(1) + O(1) = O(2) = O(1) ma n O(1) = O(n) (n è una variabile!) Una semplice applicazione IdentityMatrix (Matrix A, int n) // costruisce la matrice identità di ordine n or i := 1 to n do or j := 1 to n do A[i,j] := 0; // T 1 or i := 1 to n do A[i,i] := 1; // T 4 T 2 T 5 T 3 T 1 (n) c 1 = O(1) T 3 (n) = n T 2 (n)= n O(n) = O(n 2 ) T 2 (n) = n T 1 (n)= n O(1) = O(n) T 4 (n) c 2 = O(1) T 5 (n) = n T 4 (n)= n O(1) = O(n) T(n) = T 3 (n) + T 5 (n) = O(n 2 ) + O(n) = O(n 2 + n) = O(n 2 )

7 Ω e Θ De. Supposto che g sia asintoticamente non negativa: (n) = Ω(g(n)) sse c R + \{0} n 0 N n n 0. c g(n) (n). (n) = Θ(g(n)) sse c 1,c 2 R + \{0} n 0 N n n 0. c 1 g(n) (n) c 2 g(n). Teor. (n) = Θ(g(n)) (n) = O(g(n)) (n) = Ω(g(n)). Notazione asintotica (x) = O(g(x)) c > 0 x. (x) c g(x) (x) = Ω(g(x)) c > 0 x. c g(x) (x) (x) = Θ(g(x)) c 1, c 2 > 0 x. c 1 g(x) (x) c 2 g(x) c g c g c 2 g c 1 g (x) = O(g(x)) (x) = Ω(g(x)) (x) = Θ(g(x)) Relazioni di ricorrenza Sono equazioni, o diseguaglianze, in cui una unzione viene descritta in termini dei suoi valori su argomenti più piccoli: T(n) = Θ(1) se n = 1 2T(n/2) + Θ(n) se n > 1 Sempliicazioni: 1. Le unzioni si assumono deinite su R. 2. Il caso di base si trascura.

8 Il metodo di sostituzione (1) Si indovina la soluzione Si veriica induttivamente che la soluzione sia tale. T(n) = 2T(n/2) + n Soluzione: T(n) c n log n T(n) 2 (c (n/2) log (n/2)) + n ip. ind. = c n log (n/2) + n = c n log n cnlog 2 + n = c n log n cn+ n c n log n (se c 1) Il metodo di sostituzione (2) Quanto vale c? Se T(1) = 1, allora T(1) c 1 log 1 = 0 non può valere! Ma T(2) c 2 log 2, T(3) c 3 log 3, valgono per c 2. Tanto basta: il conine superiore cercato è asintotico. Attenzione: indovinando T(n) = cnsi può dimostrare la tesi T(n) = O(n): T(n) 2(c n/2) + n ip. ind. = c n + n = O(n) Errore!!! Il metodo di iterazione Sviluppare l equazione sino ad ottenere una somma di termini che dipendono da n e dalle condizioni iniziali: T(n) = n + 4T(n/2) = n + 4 (n/2 + 4 T(n/4)) = n + 2n (n/4 + 4 T(n/8) ) = n + 2n + 4n (n/8 + 4 T(n/16) ) = n + 2n lg (n-1) n + 4 lg n T(1) = n ( lg (n-1) ) + n 2 Θ(1) = n (2n 2) + Θ(n 2 ) = 2n 2 2n + Θ(n 2 ) = Θ(n 2 )

9 Il metodo principale Si basa su un teorema: Teor. (versione sempliicata) Siano a 1, b > 1 e c 0 delle costanti. T(n) sia deinita dalla seguente ricorrenza: T(n) = a T(n/b) + Θ(n c ), dove n/b rappresenta n/b oppure n/b. Allora: 1. se c <log b a allora T(n) = Θ(n log b a ), 2. se c =log b a allora T(n) = Θ(n c log n), 3. se c >log b a allora T(n) = Θ(n c ). Esempi Il tempo di calcolo per l algoritmo DI-Min-Max soddisa la ricorrenza: T(n) = 2 T(n/2) + Θ(1) a = b = 2 c = 0 < 1 = log b a Caso 1 del teorema principale: T(n) = Θ(n log 2 2 ) = Θ(n) Il tempo di calcolo per l algoritmo Merge-Sort soddisa la ricorrenza: T(n) = 2 T(n/2) + Θ(n) a = b = 2 c = 1 = log b a Caso 2 del teorema principale: T(n) = Θ(n c log n) = Θ(n log n) Conini ineriori ed ottimalità Un problema di calcolo Π ha conine ineriore alla complessità g se qualunque algoritmo per Π è Ω(g(n)). Se Π ha conine ineriore g ed esiste un algoritmo di complessità O(g(n)), allora tale algoritmo sarà ottimo per Π. Nota. Si ricordi che la complessità è valutata nel caso peggiore, e sempre in rapporto ad una risorsa (spazio, tempo, ecc.)

10 Conini banali Dimensione dei dati: quando è necessario esaminare tutti i dati in ingresso, ovvero generare tutti i dati in uscita. Es. La moltiplicazione di due matrici quadrate di ordine n richiede l ispezione di 2n 2 = Ω(n 2 ) entrate. Eventi contabili: quando c è un evento la cui ripetizione un numero contabile di volte sia necessaria alla soluzione del problema. Es. La determinazione del massimo tra n elementi richiede n 1 = Ω(n) conronti, in cui altrettanti elementi non massimi risultino minori. Alberi di decisione Un albero rappresenta un algoritmo: i nodi interni rappresentano decisioni, le oglie rappresentano possibili uscite, i rami rappresentano particolari esecuzioni. L albero di decisione che minimizza l altezza ornisce un conine ineriore al numero di decisioni necessarie nel caso peggiore. Alberi quasi perettamente bilanciati De. Un albero binario è completo se ha 2 vertici per ogni livello non vuoto. Un albero binario è quasi perettamente bilanciato (qpb) se, avendo altezza h, è completo sino al livello h 1. Le oglie di un albero quasi perettamente bilanciato di altezza h sono: 2 h 1 s 2 h, ovvero h log 2 s Quindi un problema la cui soluzione può rappresentarsi con un albero qpb con s(n) possibili soluzioni è Ω(log 2 s(n)).

11 Il problema dell ordinamento Nel caso dell ordinamento: s(n) = n! (un ordinamento è una permutazione) i nodi interni rappresentano conronti Nel caso dell ordinamento (sorting) il numero dei conronti deve essere dunque maggiore di (usando la ormula di Stirling): n ( 2πn ( n / e) ) = log 2πn + nlog ( n / ) log n! log e Ossia il problema è Ω(n log n). Algoritmi O(n log n), come il Merge-Sort e lo Heap-Sort, sono allora ottimi. L albero per l ordinamento di 3 el. a < b a:b b < a b < c b:c c < b b < c b:c c < b a, b, c a < c a:c c < a a < c a:c c < a b, c, a a, c, b c, a, b b, a, c b, c, a h = log 2 3! = 3 Quando serve l albero delle decisioni? Se s(n) = Ω((n) g(n) ) allora l albero delle decisioni ornisce il conine ineriore Ω(g(n) log 2 (n)) utile se (n) è O(1). Non è interessante nel caso del problema Min-Max, per cui s(n) = n(n 1), ma log 2 s(n) = log 2 n + log 2 (n 1) peggiore del conine banale Ω(n).

12 L oracolo Oracolo: avversario immaginario che divina la situazione più savorevole in cui possa operare un algoritmo che risolva il problema per cui si cerca un conine ineriore. Il torneo Per stabilire il massimo tra n elementi si organizza un torneo: un albero qb di altezza = log 2 n. o o a m o a d h j m o r a b c d e g h i l m n o p q r Il torneo di consolazione Per stabilire il secondo tra n elementi si organizza un torneo di consolazione tra tutti gli el. risultati perdenti in scontri diretti col vincitore: m =. r r p r m Numero degli incontri (conronti) = numero dei nodi interni dei due alberi: C(n) = n + log 2 n 2.

13 Il doppio torneo è ottimo (1) A = insieme degli incontri per stabilire il massimo tra n el. B = insieme degli incontri in cui ciascun el., salvo il campione, è sconitto: B = n 1. Se a:b A, con a, b diversi dal campione, allora a:b B. Se y = numero el. perdenti col campione in B, allora sono necessari y 1 incontri per stabilire il secondo: A n + y 2. Oracolo: nell incontro a:b risulta a < b sse il numero degli el. trovati peggiori di b di quelli peggiori di a: si minimizzano le inormazioni ricavabili per transitività. M(j) = numero max el. Peggiori del campione dopo j incontri: Il doppio torneo è ottimo (2) M(j) = numero max el. peggiori del campione dopo j incontri: M(0) = 0 M(j) = 2 M(j 1) + 1 se j > 0 Quindi M(j) = 2 j 1: perché risulti M(y) = 2 y 1 n 1 occorre che y log 2 n: sostituendo in A n + y 2 si trova n + log 2 n 2.

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

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

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

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Analisi di Algoritmi Modelli di calcolo e analisi di algoritmi Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Analisi di Algoritmi Analisi

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e notazione asintotica Modello di calcolo Per valutare la complessità temporale dei vari algoritmi Fibonacci, abbiamo pedissequamente contato le

Dettagli

Tempo e spazio di calcolo

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

Dettagli

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

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

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 Dati

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

Dettagli

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

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Marco Tarini e-mail: marco.tarini@uninsubria.it Argomenti del corso Calcolo del tempo di computazione di un algoritmo: Esercizi di analisi formale: sommatorie,

Dettagli

Proprietà delle notazioni asintotiche

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

Dettagli

Algoritmi 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

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

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

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

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

Dettagli

Notazioni asintotiche. Martedì 30 settembre 2014

Notazioni asintotiche. Martedì 30 settembre 2014 Notazioni asintotiche Martedì 30 settembre 2014 Punto della situazione Cos è un algoritmo Tempo di esecuzione T(n) Analisi di algoritmi: analisi asintotica di T(n) Argomento di oggi: Notazioni asintotiche:

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

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

Algoritmi e Strutture Dati

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

Dettagli

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

Teoria della Complessità Computazionale

Teoria della Complessità Computazionale Teoria della Complessità Computazionale Daniele Vigo D.E.I.S. - Università di Bologna dvigo@deis.unibo.it Rev. 1.3, 11/00 rev. 1.3 - Novembre 2000 Teoria della Complessità Studia la difficoltà dei problemi

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

Laboratorio Algoritmi 2016

Laboratorio Algoritmi 2016 Laboratorio Algoritmi 2016 Lunedì 10:30 13:30 Aula 2 in via Saldini. Ricevimento: inviare e-mail a frasca@di.unimi.it. 44 ore (9 CFU) Linguaggio di programmazione: C Esame : progetto Sito del corso http://frasca.di.unimi.it/algm16/algm.html

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

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

Appendice B. Algoritmi e Complessità

Appendice B. Algoritmi e Complessità Appendice B Algoritmi e Complessità 1. Introduzione Un algoritmo A è una procedura passo-passo per risolvere un problema P. Un problema P è caratterizzato dall insieme I delle sue istanze. L algoritmo

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

2.1 Computational Tractability. Chapter 2. Basics of Algorithm Analysis. Efficienza degli algoritmi. Efficienza degli algoritmi

2.1 Computational Tractability. Chapter 2. Basics of Algorithm Analysis. Efficienza degli algoritmi. Efficienza degli algoritmi Chapter 2 2.1 Computational Tractability Basics of Algorithm Analysis 1 Efficienza degli algoritmi Efficienza degli algoritmi Siamo interessati soprattutto running time ma anche spazio, ovvero memoria

Dettagli

COMPLESSITA COMPUTAZIONALE. Esercitazioni Tutor: Francesca Piersigilli

COMPLESSITA COMPUTAZIONALE. Esercitazioni Tutor: Francesca Piersigilli COMPLESSITA COMPUTAZIONALE Esercitazioni Tutor: Francesca Piersigilli La complessità computazionale si occupa della valutazione del costo degli algoritmi in termini di risorse di calcolo: tempo di elaborazione;

Dettagli

Notazione asinto+ca II parte. IASD a.a A. De Bonis

Notazione asinto+ca II parte. IASD a.a A. De Bonis Notazione asinto+ca II parte Notazione asinto+ca limite inferiore e superiore Date f : n N f(n) R +, g : n N g(n) R +, f(n) = Ο(g(n)) g(n)=ω(f(n)) InfaH, applicando la definizione di Ο f(n) = Ο(g(n)) c

Dettagli

Problemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)

Problemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04) Problemi e algoritmi Il che cosa e il come Il che cosa ed il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come

Dettagli

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 3 CENNI DI TEORIA DELLA COMPLESSITA COMPUTAZIONALE E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Scopo: Stimare l onere computazionale per risolvere problemi di ottimizzazione e di altra natura

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

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come Problemi e algoritmi Il che cosa e il come Problema: descrive che cosa si deve calcolare Specifica (di un algoritmo): descrive che cosa calcola un algoritmo Algoritmo: descrive come effettuare un calcolo

Dettagli

Gli algoritmi e la loro complessità

Gli algoritmi e la loro complessità Gli algoritmi e la loro complessità Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Algoritmo Un algoritmo è una procedura di calcolo (eventualmente composta da un certo numero di passi)

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

Teoria della Complessità Computazionale Parte I: Introduzione

Teoria della Complessità Computazionale Parte I: Introduzione Teoria della Complessità Computazionale Parte I: Introduzione Daniele Vigo D.E.I.S. - Università di Bologna dvigo@deis.unibo.it rev. 3.0 - ottobre 2003 Teoria della Complessità Studia la difficoltà dei

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

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

Complessità computazionale

Complessità computazionale Complessità computazionale Alberto Policriti Dpt. of Mathematics and Informatics, University of Udine. Applied Genomics Institute December 16, 2009 Il problema computazionale Un problema specifica una

Dettagli

Elementi di Complessità Computazionale

Elementi di Complessità Computazionale Elementi di Complessità Computazionale Ultima modifica 23.06.2004 Il problema Esiste una misura oggettiva per valutare l'efficienza di un algoritmo? In che relazione sono gli input di un algoritmo con

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

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

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

Capitolo 8: Teoria della complessitá

Capitolo 8: Teoria della complessitá Capitolo 8: Teoria della complessitá 1 La Teoria della calcolabilitá considera aspetti qualitativi della soluzione di problemi. Distingue il calcolabile dal non calcolabile. La Teoria della complessitá

Dettagli

Proprietà delle notazioni asintotiche. Mercoledì 1 ottobre 2014

Proprietà delle notazioni asintotiche. Mercoledì 1 ottobre 2014 Proprietà delle notazioni asintotiche Mercoledì 1 ottobre 2014 Punto della situazione Cos è un algoritmo Tempo di esecuzione T(n) Analisi di algoritmi: analisi asintotica di T(n) Notazioni asintotiche

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

Fondamenti di Informatica II 9. Complessità computazionale

Fondamenti di Informatica II 9. Complessità computazionale Scelta di un algoritmo Fondamenti di Informatica II 9. Complessità computazionale Dato un problema, esistono diversi algoritmi che permettono di risolverlo. I fattori che possono influenzare la scelta

Dettagli

complessità degli algoritmi

complessità degli algoritmi complessità degli algoritmi progetto CORDA informatica algoritmo matematico persiano Muhammad al-khwarizmi (IX secolo) un algoritmo è una sequenza finita di passi interpretabili da un esecutore l esecuzione

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Scelta di un algoritmo Fondamenti di Informatica 19. Complessità computazionale Dato un problema, esistono diversi algoritmi che permettono di risolverlo. I fattori che possono influenzare la scelta dell

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

2.1 Notazione O (limite asintotico superiore)

2.1 Notazione O (limite asintotico superiore) Pag 13 2) Complessità asintotica Per poter valutare l efficienza di un algoritmo, così da poterlo confrontare con algoritmi diversi che risolvono lo stesso problema, bisogna essere in grado di valutare

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

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

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

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

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 29 ottobre 2017 Copyright c 2009, 2010 Moreno Marzolla, Università di Bologna

Dettagli

Teoria della Complessità Concetti fondamentali

Teoria della Complessità Concetti fondamentali Teoria della Complessità Concetti fondamentali L oggetto della teoria della complessità è stabilire se un problema sia facile o difficile La difficoltà di un problema è una caratteristica generale e non

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

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

L Ω dell Ordinamento. Alberi N-ari completi. Confine inferriore alla complessità del problema dell ordinamento di sequenze lineari

L Ω dell Ordinamento. Alberi N-ari completi. Confine inferriore alla complessità del problema dell ordinamento di sequenze lineari L Ω ell Orinamento Confine inferriore alla complessità el problema ell orinamento i sequenze lineari Alberi N-ari completi Un albero -ario è se se tutti i i noi interni hanno figli, e tutte le le foglie

Dettagli

Testo di riferimento. Problema delle 12 monete. Algoritmi. Complessità degli algoritmi (cenni) Dispense del Corso di Algoritmi e Strutture Dati

Testo di riferimento. Problema delle 12 monete. Algoritmi. Complessità degli algoritmi (cenni) Dispense del Corso di Algoritmi e Strutture Dati Testo di riferimento Complessità degli algoritmi (cenni) CORDA Informatica A. Ferrari Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo - Edoardo Bontà Università degli Studi di Urbino Carlo

Dettagli

Complessità degli algoritmi (cenni)

Complessità degli algoritmi (cenni) Complessità degli algoritmi (cenni) CORDA Informatica A. Ferrari Testo di riferimento Dispense del Corso di Algoritmi e Strutture Dati Marco Bernardo - Edoardo Bontà Università degli Studi di Urbino Carlo

Dettagli

3.2 Notazioni standard e funzioni comuni

3.2 Notazioni standard e funzioni comuni 3.2 Notazioni standard e funzioni comuni 43 Esercizi 3.1-1 Se f(n) e g(n) sono funzioni asintoticamente non negative, usate la definizione di base della notazione Θ per dimostrare che max(f(n), g(n)) =

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

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 PER IL CORSO DI MATEMATICA APPLICATA. 1. Lezione 1 Richiamo brevemente alcune notazioni della teoria degli insiemi.

APPUNTI PER IL CORSO DI MATEMATICA APPLICATA. 1. Lezione 1 Richiamo brevemente alcune notazioni della teoria degli insiemi. APPUNTI PER IL CORSO DI MATEMATICA APPLICATA ERNESTO DE VITO - UNIVERSITÀ DI GENOVA, ITALY 1. Lezione 1 Richiamo brevemente alcune notazioni della teoria degli insiemi. insieme vuoto N insieme dei numeri

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

LA COMPLESSITA DEGLI ALGORITMI

LA COMPLESSITA DEGLI ALGORITMI LA COMPLESSITA DEGLI ALGORITMI Tra i problemi che ammettono soluzione esistono problemi facili e difficili. Teoria della complessità (anni 70): complessità di un problema; valutazione dell efficienza degli

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

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

LA TEORIA DELLA COMPLESSITÀ COMPUTAZIONALE

LA TEORIA DELLA COMPLESSITÀ COMPUTAZIONALE LA TEORIA DELLA COMPLESSITÀ COMPUTAZIONALE INTRODUZIONE OBIETTIVO: classificare gli algoritmi a seconda delle risorse utilizzate - risorse necessarie (lower bound) - risorse sufficienti (upper bound) Aspetti

Dettagli

Capitolo 9: Trattabilitá e intrattabilitá dei problemi

Capitolo 9: Trattabilitá e intrattabilitá dei problemi Capitolo 9: Trattabilitá e intrattabilitá dei problemi 1 La classe P : é considerata tradizionalmente come una caratterizzazione formale dei problemi trattabili. n = 2 n = 5 n = 10 n = 100 n = 1000 n 2

Dettagli

Prof. Pagani Corrado ALGORITMI E COMPLESSITÀ COMPUTAZIONALE

Prof. Pagani Corrado ALGORITMI E COMPLESSITÀ COMPUTAZIONALE Prof. Pagani Corrado ALGORITMI E COMPLESSITÀ COMPUTAZIONALE COMPLESSITÀ DEGLI ALGORITMI L oggetto della teoria della complessità è stabilire se un problema sia facile o difficile In base a quali parametri

Dettagli

Efficienza: esempi. Nella lezione precedente. Fondamenti di Informatica. Ferdinando Cicalese. ! Qualche problema computazionale

Efficienza: esempi. Nella lezione precedente. Fondamenti di Informatica. Ferdinando Cicalese. ! Qualche problema computazionale Efficienza: esempi Fondamenti di Informatica Ferdinando Cicalese Nella lezione precedente! Qualche problema computazionale " Trova min " Selection sort! Pseudocodice per descrivere algoritmi " Variabili

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

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

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 È sensato misurare la complessità di un algoritmo contando il numero di linee di codice eseguite? riassunto puntate

Dettagli

UNIVERSITA DEGLI STUDI DI PERUGIA

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

Dettagli

Approssimazione di dati e funzioni

Approssimazione di dati e funzioni Approssimazione di dati e funzioni Richiamiamo i principali metodi di approssimazione polinomiale di un insieme di dati (x i, y i ), i = 0,..., n. Le ordinate y i possono essere i valori assunti nei nodi

Dettagli

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.00.005/06 Prof. V.L. Plantamura Dott.ssa A. Angelini Classificazione degli algoritmi Tassonomia di costo: algoritmo costante: c

Dettagli

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 2 OTTIMIZZAZIONE SU GRAFI E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Molti problemi decisionali possono essere formulati utilizzando il linguaggio della teoria dei grafi. Esempi: - problemi di

Dettagli

Ordinamenti e crescita della complessità

Ordinamenti e crescita della complessità Ordinamenti e crescita della complessità Informatica@SEFA 07/08 - Lezione Massimo Lauria Venerdì, 7 Ottobre 07 Nota bibliografica: Il contenuto di questa e di alcune delle prossime

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

Teoria della complessità

Teoria della complessità Teoria della complessità Materiale consigliato: testo del corso capitolo 34 Introduzione agli algoritmi e strutture dati T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein McGraw Hill, 2005 Denise Salvi

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

5. DIVIDE AND CONQUER I

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

Dettagli

Esercizi Capitolo 2 - Analisi di Algoritmi

Esercizi Capitolo 2 - Analisi di Algoritmi Esercizi Capitolo - Analisi di Algoritmi Alberto Montresor 19 Agosto, 014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare

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

Dispense del corso di Algebra 1. Soluzioni di alcuni esercizi

Dispense del corso di Algebra 1. Soluzioni di alcuni esercizi Dispense del corso di Algebra 1 Soluzioni di alcuni esercizi Esercizio 1.1. 1) Vero; ) Falso; 3) V; 4) F; 5) F; 6) F (infatti: {x x Z,x < 1} {0}); 7) V. Esercizio 1.3. Se A B, allora ogni sottoinsieme

Dettagli

Complessità Computazionale

Complessità Computazionale Complessità Computazionale La teoria della Computabilità cattura la nozione di algoritmo nel senso che per ogni problema sia esso decisionale o di calcolo di funzione stabilisce dei criteri per determinare

Dettagli

Problemi decisionali. Esempi

Problemi decisionali. Esempi Problemi decisionali La teoria della complessità computazionale è definita principalmente in termini di problemi di decisione Essendo la risposta binaria, non ci si deve preoccupare del tempo richiesto

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

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

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

LEZIONE 15. (15.1.2) p(x) = a 0 x n + a 1 x n a n 1 x + a n = a h x n h.

LEZIONE 15. (15.1.2) p(x) = a 0 x n + a 1 x n a n 1 x + a n = a h x n h. LEZIONE 15 15.1. Polinomi a coefficienti complessi e loro e loro radici. In questo paragrafo descriveremo alcune proprietà dei polinomi a coefficienti complessi e delle loro radici. Già nel precedente

Dettagli