Complessità computazionale concreta
|
|
- Armando Franceschini
- 5 anni fa
- Visualizzazioni
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
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
DettagliNotazione 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
DettagliLezione 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliTempo 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
DettagliAlgoritmi 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
DettagliTecniche 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliDefinizioni 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
DettagliLaboratorio 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,
DettagliProprietà 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à
DettagliAlgoritmi 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
DettagliTecniche 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
DettagliCrescita 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
DettagliAlgoritmi 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
DettagliNotazioni 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:
DettagliPer 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
DettagliInformatica 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliTeoria 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
DettagliIn 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
DettagliLaboratorio 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
DettagliUniversità 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:
DettagliCOMPLESSITÀ 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à
DettagliAppendice 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
DettagliIntroduzione 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
Dettagli2.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
DettagliCOMPLESSITA 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;
DettagliNotazione 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
DettagliProblemi 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
Dettagli3 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
DettagliESERCITAZIONI 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
DettagliProblemi 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
DettagliGli 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)
DettagliAppunti 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
DettagliTeoria 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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[]) {
DettagliComplessità 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
DettagliElementi 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliSi 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
DettagliCapitolo 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á
DettagliProprietà 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
DettagliAlgoritmi 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
DettagliFondamenti 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
Dettaglicomplessità 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
DettagliFondamenti 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
DettagliAlgoritmi 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
Dettagli2.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
DettagliNozioni 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
DettagliProblemi 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
DettagliIn 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
DettagliEsercizi 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
DettagliTecniche 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
DettagliTeoria 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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
DettagliAlgoritmi 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,
DettagliL Ω 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
DettagliTesto 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
DettagliComplessità 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
Dettagli3.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)) =
DettagliAlgoritmi 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
DettagliMacchina 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
DettagliAPPUNTI 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
DettagliCamil 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
DettagliLA 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
DettagliEsercizi 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
DettagliQuick 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
DettagliLA 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
DettagliCapitolo 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
DettagliProf. 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
DettagliEfficienza: 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
DettagliAlgoritmi 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
DettagliAlgoritmi (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
DettagliAlgoritmi 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
DettagliUNIVERSITA 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
DettagliApprossimazione 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
DettagliCOMPLESSITÀ 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
Dettagli2 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
DettagliOrdinamenti 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
DettagliAlgoritmi 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
DettagliTeoria 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
DettagliAlgoritmi 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
Dettagli5. 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
DettagliEsercizi 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
DettagliAnalisi 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
DettagliDispense 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
DettagliComplessità 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
DettagliProblemi 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
DettagliAlgoritmi 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
DettagliDi 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
DettagliAlgoritmi 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
DettagliLEZIONE 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