Notazioni Asintotiche e Ordini di Grandezza delle funzioni

Slides:



Advertisements
Presentazioni simili
Equazioni e calcoli chimici
Advertisements

Definitezza Vogliamo poter richiedere la “definitezza” delle funzioni
8) GLI INTERVALLI DI CONFIDENZA
L’ IPERBOLE.
Algoritmi e Strutture Dati
Ricorrenze Il metodo di sostituzione Il metodo iterativo
Il gioco del 15 Il gioco del quindici fu inventato da Sam Loyd piu' di un secolo fa. Lo scopo del gioco e' quello di ordinare le caselle dal numero 1 al.
2. Introduzione alla probabilità
Il linguaggio della Matematica: Insiemi e operazioni
Analisi della complessità degli algoritmi
Analisi della complessità degli algoritmi
INSIEMI INSIEME= gruppo di oggetti di tipo qualsiasi detti elementi dell’insieme. Un insieme è definito quando viene dato un criterio non ambiguo che.
6. Catene di Markov a tempo continuo (CMTC)
Algoritmi e Strutture Dati
Sommatorie Proprietà Serie aritmetica Serie geometrica Serie armonica
Elettrostatica 3 23 maggio 2011
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
Introduzione alle curve ellittiche
Definizione e caratteristiche
(se a = 0 l’equazione bx + c = 0 è di primo grado)
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
6. Catene di Markov a tempo continuo (CMTC)
3. Processi Stocastici Un processo stocastico è una funzione del tempo i cui valori x(t) ad ogni istante di tempo t sono v.a. Notazione: X : insieme di.
Algoritmi e Dimostrazioni Stefano Berardi
Ordini Parziali - Reticoli
Ordini Parziali - Reticoli
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Le Variabili Casuali Corso di Teoria dell’Inferenza Statistica 1
Algoritmo di Ford-Fulkerson
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Processi Aleatori : Introduzione – Parte I
8. Reti di Code Nella maggior parte dei processi produttivi risulta troppo restrittivo considerare una sola risorsa. Esempio: linea tandem arrivi 1 v.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Algoritmi e Strutture Dati (Mod. A)
Economia politica II – Modulo di Macroeconomia
Modelli simulativi per le Scienze Cognitive Paolo Bouquet (Università di Trento) Marco Casarotti (Università di Padova)
Modelli simulativi per le Scienze Cognitive
I numeri by iprof.
I numeri relativi by iprof.
Lezione 8 Numerosità del campione
Num / 36 Lezione 9 Numerosità del campione.
Lezione 4 Probabilità.
Corso di Matematica Discreta cont. 2
COMPLESSITÀ DEGLI ALGORITMI
Le operazioni con i numeri
Elementi di Informatica di base
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Radix-Sort(A,d) // A[i] = cd...c2c1
Commenti all’esempio del treno Nell’esempio del treno si è iniziato dalle attività generiche che tipicamente servono per portare a termine i compiti iniziali.
Stabilità per E.D.O. (I): STABILITÀ LINEARIZZATA
Capitolo 7 Tavole hash Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
TRASFORMATA DI FOURIER
L’EQUILIBRIO ECONOMICO GENERALE
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Il problema della ricerca Algoritmi e Strutture Dati.
Corso di Studi in Informatica Applicata – Università di Catania, Campus di Comiso Dr. Simone Faro – – Diapositiva
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Analisi asintotica e Metodi di analisi Algoritmi e Strutture Dati.
Complessità Computazionale
Informatica 3 V anno.
Transcript della presentazione:

Notazioni Asintotiche e Ordini di Grandezza delle funzioni

Notazioni asintotiche Nello studio della complessità di un algoritmo si verifica il comportamento dell’algoritmo, in termini di tempo di calcolo, senza far riferimento ad una prefissata dimensione n dei dati di ingresso. Visto che l’incidenza sul tempo di calcolo cresce al crescere di n, l’analisi che si conduce è un analisi al limite. Le notazioni che si introducono sono pertanto dette notazioni asintotiche, in quanto devono caratterizzare il comportamento di un dato algoritmo a partire da un valore di n sufficientemente grande. Non è corretto valutare il comportamento asintotico solo nel caso migliore (o in quello peggiore), ma è necessario verificare l’andamento dell’algoritmo in tutti i casi possibili. E’ corretta affermazione: l’algoritmo A ha un comportamento asintotico, nel caso migliore, di tipo T, anche se tale comportamento è diverso nel caso medio ed in quello peggiore.

Tre notazioni: motivazioni e definizioni In informatica, sono tre le notazioni comunemente adottate: O, ,  le prime due, forniscono un limite “lasco”, rispettivamente per i limiti superiore ed inferiore mentre la terza fornisce un limite “stretto”. In alcuni contesti è difficile trovare un limite stretto per l’andamento delle funzioni, per cui ci si accontenta di un limite meno preciso.

Tre notazioni: motivazioni e definizioni Tali notazioni furono introdotte in un classico articolo di Knuth del ‘76 in molti testi viene riportata una sola di queste notazioni, che in genere è la O. Tale scelta è dettata da ragioni di semplicità sia per non introdurre troppe notazioni (cosa che potrebbe confondere le idee al lettore) sia perché in genere ciò che serve è una limitazione superiore del tempo impiegato da un dato algoritmo dimostrare che un algoritmo appartiene alla classe O è, come detto, più semplice che dimostrare l’appartenenza alla classe 

Tre notazioni: motivazioni e definizioni Spesso, volendo trovare un limite stretto, è necessario ricorrere a funzioni più complesse di quelle che si potrebbero adottare se ci si limitasse a considerare un limite lasco. Più in generale, se si vuole caratterizzare un algoritmo con un limite stretto può essere necessario dover considerare separatamente il caso migliore e quello peggiore se ci limita a cercare un limite superiore basta trovarlo per il solo caso peggiore ed evidentemente tale limite sarà valido per l’algoritmo stesso quest’ultima considerazione può essere un’ulteriore giustifica all’adozione in alcuni testi di una sola notazione, la O.

Ordine O La notazione asintotica O non fornisce un limite “stretto”. Supponiamo infatti di avere una funzione f(n)  O(n2). Ciò implica che la f(n), da un certo punto in poi, è maggiorata da n2: se ciò è vero, anche n3 maggiorerà la f(n), e quindi f(n) appartiene anche a O(n3). In generale quando si introduce la notazione O si cerca comunque di individuare un limite superiore il più possibile stretto. Si noti inoltre che il comportamento per tutti gli n < n0 non è assolutamente tenuto in conto, per cui potranno esserci dei valori di n < n0 tali che f(n) > g(n).

Implicazioni Uso improprio Date due funzioni f(n) e g(n), Dalle definizioni suvviste discende il seguente teorema: Date due funzioni f(n) e g(n), f(n)  (g(n)) se e solo se f(n)  O(g(n)) e f(n)  (g(n)). Uso improprio E’ prassi comune ammettere usi del tipo f(n) = O(n2). Inoltre in alcuni casi è molto utile dal punto di vista notazionale, anche se formalmente scorretto, poter sommare due notazioni asintotiche, cioè ammettere espressioni del tipo T(n) =  (n2)+ (n). Quest’ultima espressione deve evidentemente intendersi come: T(n) è uguale alla somma di una qualunque funzione che appartiene all’insieme (n2) più una qualunque funzione che appartiene all’insieme (n).

Complessità del Bubblesort Il BubbleSort nel caso migliore ha una complessità lineare. Ma non Basta per affermare che l’algoritmo BubbleSort appartenga a (n) oppure a O(n). Il BubbleSort nel caso peggiore ha una complessità (n2) . Ma non è corretto affermare che il BubbleSort appartiene a (n2) solo perché nel caso peggiore la complessità è quadratica. Viceversa è corretto affermare che, nel caso migliore, la complessità del BubbleSort è (n), che nel caso medio e nel caso peggiore la complessità è (n2) e, più in generale che il BubbleSort è O(n2) ovvero è (n).

Le costanti moltiplicative e termini nascosti Nelle notazioni asintotiche vengono trascurati i termini di ordine inferiore e le costanti moltiplicative. Nel caso in cui è necessario confrontare algoritmi aventi tempi di esecuzione T(n) il cui andamento al limite è uguale (es. sono entrambe O(n2)), non è più possibile trascurare tali termini. In tal caso per stabilire quale algoritmo è più conveniente usare bisogna necessariamente tener conto, in primo luogo delle costanti moltiplicative, e poi dei termini di ordine inferiore.

QuickSort vs. MergeSort MergeSort: algoritmo che appartiene a (nlogn) QuickSort : algoritmo O(n2), la cui complessità nel caso migliore e nel caso medio è però (nlogn). Contrariamente a quanto si potrebbe pensare, l’algoritmo di ordinamento più comunemente usato, e che si trova normalmente implementato nelle librerie, è il QuickSort. Perché? QuickSort svolge l’ordinamento sul posto, e che quindi ha minore complessità spaziale del MergeSort, La probabilità che per il QuickSort si verifichi il caso pessimo è abbastanza remota Le costanti moltiplicative nel caso del QuickSort sono minori rispetto a quelle del MergeSort.

Le costanti moltiplicative e termini nascosti Un altro caso in cui non è corretto trascurare i termini “nascosti” dalla notazione asintotica è il caso in cui siamo interessati a confrontare il comportamento di due algoritmi per un prefissato n. In tal caso è possibile, ad esempio, che un algoritmo A1 di complessità (n3) si comporti meglio di un algoritmo A2 (n2); supponiamo di aver fissato n = 50 l’algoritmo A1 abbia un tempo T(n) dato da n3/10 l’algoritmo A2 abbia T(n) uguale a 10n2 + 2n + 10. In tal caso per A1 avremo T(50) = 12500 mentre per A2 avremo T(50) = 25110.

Confronto tra funzioni : transitività

Confronto tra funzioni : riflessività

Confronto tra funzioni : simmetria Confronto tra funzioni : simmetria transposta

Noatzioni asintotiche vs. numeri naturali

Noatzioni asintotiche vs. numeri naturali Proprietà di tricotomia: Per ogni coppia di numeri reali a e b, deve valere esattamente una delle seguenti espressioni: Sebbene qualunque coppia di numeri possa essere confrontata, non tutte le funzioni sono asintoticamente confrontabili. Esempio: