Elementi di complessità

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Algoritmi e Strutture Dati
Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
                      Insertion-Sort
Tempo di computazione (Running Time) di programmi Misure del tempo: Misure del tempo: metodi principali 1.Benchmarking 2.Analisi.
Analisi della complessità degli algoritmi
Analisi della complessità degli algoritmi
Sommatorie Proprietà Serie aritmetica Serie geometrica Serie armonica
Lez. 51 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Complessita'
Alberi binari di ricerca
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
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.
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.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmo di Ford-Fulkerson
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Unintroduzione.
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.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento 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 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati Introduzione. Gli argomenti di oggi Analisi della bontà degli algoritmi Modello Computazionale Tempo di esecuzione degli algoritmi.
Algoritmi e Strutture Dati Valutazione del tempo di esecuzione degli algoritmi.
1 2. Analisi degli Algoritmi. 2 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo:
Analisi asintotica1 Se si considerano tutte le costanti lanalisi può divenire eccessivamente complessa In realtà interessa conoscere come varia il costo.
Introduzione1 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo: procedura suddivisa.
APPUNTI SUL LINGUAGGIO C
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
Tempo di computazione (Running Time) di programmi Misure del tempo: Misure del tempo: metodi principali 1.Benchmarking 2.Analisi Benchmarking: usato per.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Notazioni Asintotiche e Ordini di Grandezza delle funzioni
COMPLESSITÀ DEGLI ALGORITMI
Algoritmi e Strutture Dati 8 crediti Calendario: 1 Ott. – 6 Dic. Aula: LuM250 Orario: Lun, Mar, Mer, Gio Giorni di lezione disponibili 40 ~48.
Elementi di Informatica di base
Ordinamento dell’array
INFORMATICA MATTEO CRISTANI.
Algoritmi e Strutture Dati
Didattica dei Fondamenti dell’Informatica 2 Seconda giornata: progettare un algoritmo corretto, efficiente, e possibilmente ottimo! Guido Proietti
Algoritmi e Strutture Dati
Vedremo in seguito che (n log n) è un limite stretto per il problema dellordinamento. Per ora ci limitiamo a dimostrare che: La complessità nel caso pessimo.
L’infinito Cosa è ?.
La complessità media O(n log n) di Quick-Sort vale soltanto se tutte le permutazioni dell’array in ingresso sono ugualmente probabili. In molte applicazioni.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Analisi di un algoritmo
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 3 Complessità computazionale concreta Corso di Informatica 2 a.a. 2003/04 Lezione 3.
Programmazione Avanzata Java e C 12/01/ Lezione 28: Algoritmi di ordinamento.
Complessità del problema Se non facciamo ipotesi sul tipo degli elementi della sequenza le uniche operazioni permesse sono confronti e assegnazioni. Problema.
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
TECNICA DIVIDE ET IMPERA
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
1 Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione π = tale che a 1 ’  a 2 ’  … …  a n ’ Continuiamo a discutere il problema dell’ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’ordinamento:
Analisi asintotica e Metodi di analisi Algoritmi e Strutture Dati.
Informatica 4 La ricorsione. Definizione di ricorsione Ricorsione è la proprietà di quei programmi che, all’interno delle istruzioni che li compongono,
Complessità Computazionale
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Sesta giornata Risolvere efficientemente un problema in P: Il problema dell’ordinamento: Insertion.
Rudimenti di Complessità Corso di Programmazione II Prof. Dario Catalano.
Transcript della presentazione:

Elementi di complessità Complessità di un algoritmo Esempio: insertion sort Considerazioni Notazione asintotica

Complessità di un algoritmo In genere, la complessità di un algoritmo si valuta a seconda del tempo di esecuzione e dello spazio di memoria occupato durante la sua esecuzione. Tempo di esecuzione: si vuole dare una stima del tempo necessario per eseguire l’algoritmo, dal suo inizio fino al suo temine. Molto spesso si cerca di definire questo a seconda della dimensione dell’input. Spazio di memoria : si vuole dare una stima della memoria necessaria per eseguire l’algoritmo, dal suo inizio fino al suo temine. Informalmente, tutte le variabili utilizzate durante l’algoritmo contribuiscono ad aumentare la quantità di memoria che deve essere allocata.

Esempio di calcolo del tempo di esecuzione Si vuole associare ad ogni istruzione un tempo di esecuzione dato il modello computazionale. Ad ogni ciclo for key INSERTION-SORT(A) for j ← 2 to lenght[A] do key ← A[j] i ← j-1 while (i>0) and (A[i]>key) do A[i+1] ← A[i] i← i-1 A[i+1] ← key 1 2 3 4 3 9 8 7 1 2 3 4 3 9 8 7 1 2 3 4 3 8 9 7 Si vuole che il vettore A[1,…,n] sia ordinato in ordine crescente, ossia A[1]≤ A[2]≤ … ≤ A[n] 1 2 3 4 3 7 8 9

Esempio di calcolo del tempo di esecuzione Analisi: Volte eseguite INSERTION-SORT(A) for j ← 2 to lenght[A] do key ← A[j] i ← j-1 while (i>0) and (A[i]>key) do A[i+1] ← A[i] i← i-1 A[i+1] ← key Costo c1 c2 c3 c4 c5 c6 c7 tj dipende dal numero di volte che il controllo per eseguire ciclo while viene fatto ad ogni ciclo for (j). Si ha 1 ≤ tj ≤ i o anche 1 ≤ tj ≤ j-1.

Esempio di calcolo del tempo di esecuzione Supponiamo che c1=c2=…=c7=c=1. Possiamo calcolare il tempo complessivo dell’algoritmo: Nel caso migliore (BEST CASE) si ha tj=1 per ogni ciclo while. Nel caso peggiore (WORST CASE) si ha tj=j per ogni ciclo while.

Esempio di calcolo del tempo di esecuzione Alcune considerazioni: Il tempo di complessità nel caso peggiore ci dà una garanzia del tempo massimo di esecuzione dell’algoritmo. Spesso succede che il caso medio ha un comportamento simile a quello del caso peggiore. Nel nostro caso si ha infatti: Il calcolo del tempo nel caso medio risulta spesso più complesso del caso peggiore.

Quando un algoritmo ha una buona complessità? Quando il tempo di complessità è polinomiale. Quando il tempo di complessità è limitata da una funzione polinomiale. Ecco una motivazione pratica: n n logn n2 n3 2n 1 ms 1000 dati 140 31 10 9 1 sec 106 62.746 dati 1000 dati 100 19 1 ora 3,6x 109 dati 1,6X 108 dati 60.000 dati 1532 dati Si suppone che in 1 ms si riesca ad eseguire 1000 operazioni (istruzioni).

Notazione asintotica Θ c2 g(n) f(n) f(n) cresce asintoticamente come g(n)! Esempio: c1 g(n) n0

Notazione asintotica О c g(n) f(n) f(n) cresce asintoticamente come non più di g(n)! Esempio: n0

Notazione asintotica Ω f(n) f(n) cresce asintoticamente come almeno quanto g(n)! Esempio: c g(n) n0

Alcune proprietà Proprietà transitiva Proprietà riflessiva Proprietà simmetrica Proprietà antisimmetrica