23 aprile 2002 Algoritmi e strutture dati1 Informazioni generali Fabrizio d'Amore o Tel.: 06 49918333 o o URL:

Slides:



Advertisements
Presentazioni simili
Strutture dati per insiemi disgiunti
Advertisements

Elementi di complessità
Problema dellordinamento Input: Sequenza di n numeri Output: Permutazione π = tale che: a 1 a 2 …… a n Subroutine in molti problemi E possibile effettuare.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Programmazione
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Algoritmi e Strutture Dati
Cammini minimi con una sorgente
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Informatica di base A.A. 2003/2004 Algoritmi e programmi
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.
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.
SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.
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:
1 Informazioni generali r Stefano Leonardi m Tel.: m URL: / r Ricevimento:
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Analisi asintotica1 Se si considerano tutte le costanti lanalisi può divenire eccessivamente complessa In realtà interessa conoscere come varia il costo.
Fondamenti di Informatica
1 Informazioni generali r Luca Becchetti m Tel.: m URL: r Ricevimento: m Latina:
Introduzione1 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo: procedura suddivisa.
Tempo di computazione (Running Time) di programmi Misure del tempo: Misure del tempo: metodi principali 1.Benchmarking 2.Analisi Benchmarking: usato per.
3. Architettura Vengono descritte le principali componenti hardware di un calcolatore.
Strutture di controllo in C -- Flow Chart --
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Elementi di Informatica di base
Algoritmi e Strutture dati Introduzione al corso
INFORMATICA MATTEO CRISTANI.
CODIFICA Da flow-chart a C++.
Radix-Sort(A,d) // A[i] = cd...c2c1
Didattica dei Fondamenti dell’Informatica 2 Seconda giornata: progettare un algoritmo corretto, efficiente, e possibilmente ottimo! Guido Proietti
Algoritmi e Strutture Dati
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
COMUNICAZIONE ONLINE, RETI E VIRTUALITA MATTEO CRISTANI.
Algoritmi e Strutture dati a.a. 2013/2014 Informazioni sul corso
Algoritmi e Strutture dati a.a. 2012/2013 Informazioni sul corso Dr Maria Federico.
Fondamenti di Programmazione
Basi di Dati Esercitazione SQL 17 Novembre Esercitazione Basi di Dati2 Fornitori (CodiceFornitore, Nome, Indirizzo, Città) Prodotti (CodiceProdotto,
Algoritmi e Strutture Dati Luciano Gualà
Algoritmi e Strutture Dati Laurea in Informatica Calendario: 2 Marzo – 12 Giugno Aula: LuM250 Orario: Mer, Gio, Ven Numero crediti = 8 (~ 64.
Algoritmi e Strutture Dati Introduzione agli algoritmi
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri.
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Quarta giornata Risolvere efficientemente un problema in P: la sequenza di Fibonacci Guido.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
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.
Fondamenti di Informatica
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:
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Sesta giornata Risolvere efficientemente un problema in P: Il problema dell’ordinamento: Insertion.
Sistemi e Tecnologie Informatiche Complessità di calcolo.
Informatica 3 V anno.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Transcript della presentazione:

23 aprile 2002 Algoritmi e strutture dati1 Informazioni generali Fabrizio d'Amore o Tel.: o o URL: Ricevimento: o martedì, ore 14-16, Dip. Informatica e Sistemistica, via Salaria 113, II piano, Roma Testo adottato o A. Drozdek. Algoritmi e strutture dati in Java. Apogeo, 2001, Milano Testo consigliato per integrazioni ed approfondimenti o T. Cormen, C. Leiserson, L. Rivest, R. Stein. Introduction to algorithms. 2 a ed. The MIT Press, 2001, Cambridge

Algoritmi e strutture dati2 Informazioni generali/2 Sito web del corso ( in fase di attivazione) Java tutorial ( parte di una più ampia documentazione disponibile al sito che Sun dedica a Java ( API Java ( scaricabile a partire da J. Bishop: Java gently – Corso introduttivo. Addison - Wesley P. Niemeyer e altri. Learning Java. O'REILLY D. Flanagan. Java in a nutshell. O'REILLY

23 aprile 2002 Algoritmi e strutture dati3 Obiettivi A cosa serve la progettazione di algoritmi e strutture dati Come si misura lefficienza delle strutture dati e degli algoritmi Come scegliere gli algoritmi e le strutture dati adatti a risolvere in modo efficiente un problema Implementazione di algoritmi e strutture dati in Java

23 aprile 2002 Algoritmi e strutture dati4 Argomenti del corso Introduzione: efficienza e sua misura Riepilogo sulle principali strutture dati di base: liste, code, pile, alberi Code di priorità Dizionari Aspetti avanzati degli algoritmi di ordinamento Grafi: rappresentazione e algoritmi di visita Algoritmo di Dijkstra per il calcolo del percorso minimo Programmazione dinamica: introduzione ed esempi

23 aprile 2002 Algoritmi e strutture dati5 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo: procedura suddivisa in passi che, eseguiti in sequenza, consentono di eseguire un compito in tempo finito Esempio: Max. di un vettore di n elementi Algorithm arrayMax(A, n) currentMax=A[0]; for (i=0; i<n; i++) // inziare da i = 1? if (A[i]>currentMax) currentMax=A[i]; return currentMax;

23 aprile 2002 Algoritmi e strutture dati6 Nel mondo reale Gli algoritmi intervengono (in modo più o meno nascosto) in molti aspetti Vari esempi o Internet o DBMS o Motori di ricerca….. o Analisi della struttura del Web

23 aprile 2002 Algoritmi e strutture dati7 Esempio: Routing in Internet Astrazione usando grafi: I nodi rappresentano router Gli archi descrivono i link fisici o Costi sugli archi (link) : ritardo, costo in, livello di congestione Obiettivo: determinare buon cammino sorg.-dest Protocollo di Routing A E D CB F Cammino buono: o Di solito significa cammino a costo minimo o Possibili def. alternative

23 aprile 2002 Algoritmi e strutture dati8 Esempio: Accesso a basi di dati Obiettivo: rispondere rapidamente Interrogazione Data base... Interrogazione

23 aprile 2002 Algoritmi e strutture dati9 Qualità di algoritmi e strutture dati Efficienza o Tempo di esecuzione o Spazio (quantità di memoria) I due aspetti sono interdipendenti

23 aprile 2002 Algoritmi e strutture dati10 Tempo di esecuzione In generale aumenta con n (dimensione dell'input) Per lo stesso valore di n può variare con il particolare input considerato (es. Vettore da ordinare)

23 aprile 2002 Algoritmi e strutture dati11 Misura dellefficienza - obiettivi Indipendenza dallimplementazione Generale (valida per ogni input, di qualsiasi dimensione) Misura indipendente dalla piattaforma Hw/Sw Dipende dalla piattaforma Hw/Sw In generale: può essere poco rappresentativo

23 aprile 2002 Algoritmi e strutture dati12 Modello di costo RAM Random Access Machine Macchina che esegue le istruzioni in sequenza. Insieme di operazioni primitive a costo unitario: Assegnazione Operazioni aritmetiche Confronto Lettura/Scrittura

23 aprile 2002 Algoritmi e strutture dati13 Modello di costo/2 Costo di operazioni complesse: Ciclo: somma costo test di fino ciclo e costo corpo del ciclo if…then…else: costo test più costo blocco istruzioni che segue then o else (a seconda del caso) Attivazione di un metodo: somma dei costi di tutte le istruzioni presenti nel metodo Costo: somma di tutti i costi

23 aprile 2002 Algoritmi e strutture dati14 Esempio/1 Nel primo caso (vett. di 3 elementi) si ha costo 1 (ass.)+1 (ass. nel for) + 6 (test e incr. nel for) + 1 (test finale for) + 3 (test if) + 1 (istruz. return) = 13 Nel secondo caso si ha 1 (ass.) + 1 (ass. nel for) + 10 (test e incr. nel for) + 1 (test finale for) + 5 (test if) + 1 (istr. ass. nellif) + 1 (istruz. return) = 20 Algorithm arrayMax(A, n) currentMax=A[0]; for (i=0; i<n; i++) if (A[i]>currentMax) currentMax=A[i]; return currentMax; n=3 n=5

23 aprile 2002 Algoritmi e strutture dati15 Esempio/2 Perché tale modello è accettabile? Il costo di istruzione è sempre valutato a meno di un fattore costante (eventualmente grande) perché o Il numero di operazioni elementari che implementato ogni istruzione è finito o Ogni variabile occupa una quantità finita di memoria e quindi i tempi di accesso a due variabili diverse sono comunque legati da una costante Vantaggi: prescinde dalla piattaforma Hw/Sw e dal linguaggio di programmazione Svantaggi: lindicazione che si ottiene è qualitativa

23 aprile 2002 Algoritmi e strutture dati16 Esempio/3 Problema: i risultati dipendono dal particolare input, anche per lo stesso valore di n Si vuole una misura che dipenda dalla dimensione dellinput (n nel nostro esempio) ma non dal particolare input considerato Possibile alternative: o Analisi del caso peggiore (worst case): si considera il costo di esecuzione nel caso peggiore (l'analisi del caso migliore è in generale poco interessante) o Analisi del caso medio: si considera il costo medio dellalgoritmo rispetto ad una distribuzione dellinput (richiede la conoscenza della distribuzione) In ogni caso occorre definire la dimensione dellinput Nel seguito si considera lanalisi nel caso peggiore

23 aprile 2002 Algoritmi e strutture dati17 Dimensione dellinput Per ogni problema va indicata la dimensione dellinput perché è rispetto ad essa che si calcola il costo degli algoritmi Dipende dallinput, es.: o Nr. componenti per il problema di ordinare un vettore di interi o Nr. di nodi e numero di archi per problemi su grafi La scelta deve essere ragionevole. Nei casi dubbi una misura ragionevole è il numero di bit necessari a rappresentare linput Esempio: se si considera il problema di determinare la scomposizione in fattori primi di un numero intero allora la dimensione dellinput è il numero di bit necessario a rappresentare un intero. D.: numero di bit necessario a rappresentare un intero < N ?

23 aprile 2002 Algoritmi e strutture dati18 Algorithm arrayMax(A, n) currentMax=A[0]; for (i=0; i<n; i++) if (A[i]>currentMax) currentMax=A[i]; return currentMax; Analisi nel caso peggiore (esempio) Nel caso peggiore gli elementi sono ordinati in maniera crescente In questa ipotesi listruzione currentMax=A[i]; è eseguita n-1 volte. Il costo complessivo dellalgoritmo è allora (ragionando come nei casi precedenti) 1+1+2n+1+n+(n- 1)+1=4n

23 aprile 2002 Algoritmi e strutture dati19 Analisi asintotica Se si considerano tutte le costanti lanalisi può divenire eccessivamente complessa In realtà interessa conoscere come varia il costo al variare della dimensione dellinput, a meno di costanti o Motivo: il costo è comunque calcolato a meno di costanti, per le ipotesi fatte circa il modello Unanalisi di questo tipo è detta asintotica Lanalisi asintotica trascura i fattori costanti Lanalisi asintotica è influenzata dalloperazione dominante di un algoritmo

23 aprile 2002 Algoritmi e strutture dati20 Analisi asintotica/2 f(n), g(n) funzioni dagli interi ai reali f(n)=O(g(n)) se esistono c > 0 reale e una costante intera tali che per ogni se esistono c > 0 reale e una costante intera tali che per ogni se f(n)=O(g(n)) e f(n)=o(g(n)) se se g(n)=o(f(n))

Algoritmi e strutture dati21 Esempi In base a tali definizioni, lalgoritmo arrayMax ha costo f(n)= 3n n = O(n 2 ) Per c=4 e n 0 >=10, 3n n <= 4 n 2 Per c 1 = 1/14, c 2 = 1/2, n 0 >=7, D.: Cosa significa O(1)?

23 aprile 2002 Algoritmi e strutture dati22 Analisi asintotica/3 Operazione dominante di un algoritmo: Un operazione di un algoritmo avente costo f(n) si dice dominante se, per ogni n, essa viene eseguita, nel caso peggiore di input di dimensione n, un numero di volte d(n) che soddisfa: f(n) < a d(n) + b, per opportune costanti a e b. Es.: istruzione if (A[i]>currentMax) nellalgoritmo arrayMax(A, n)

23 aprile 2002 Algoritmi e strutture dati23 Analisi asintotica/4 Limiti dellapproccio "analisi asintotica del caso peggiore": Le costanti nascoste possono essere molto grandi: un algoritmo con costo n è lineare ma potrebbe essere poco pratico Comportamento nel caso di istanze piccole (es. 3n contro n 2 ) Il caso peggiore potrebbe verificarsi raramente

Algoritmi e strutture dati24 Analisi di Insertion Sort Algorithm insertionSort(A, n) for (i=0; i<n; i++) { tmp=A[i]; for (j=i; j>0 && tmp<A[j-1]; j--) A[j]=A[j-1]; A[j] = tmp; } return A; Ordina in modo non-decrescente Inserisce lelemento A[i] nella posizione corretta nel vettore ordinato A[0,…,i-1] Operazione dominante: una qualunque fra quelle eseguite nel for più interno D.: se la ricerca della posizione di A[i] in A[0,…,i-1] avvenisse con la ricerca binaria? Ex: i= confronti i= confronto i= confronti i= confronti i= confronti Ex: f(n)= n

Algoritmi e strutture dati25 Esempi class esercizio { public void Ex1(int n) { int a, i; for (i=0; i<n;i++) a=i; } public void Ex2(int n) { int a, i; for (i=0; i<n*n;i++) a=i; } public void Ex3(int n) { int a, i, j; for (i=0; i<n;i++) for (j=0; j<=i;j++) a=i; } Valutare la complessità dei tre metodi Complessità di Ex3: n=O(n 2 )

23 aprile 2002 Algoritmi e strutture dati26 Calcolo delle somme dei prefissi Dato un vettore di interi X[0....n-1], determinare le componenti del vettore A[0...n-1] in modo tale che A[i]=X[0]+....+X[i-1]. Due algoritmi: Algorithm prefix1(X, n) for (i=0; i<n; i++) { A[i]=0; for (j=0; j<=i; j++) A[i]=A[i]+X[j]; } return A; o O(n 2 ) Algorithm prefix2(X, n) A[0]=X[0]; for (i=1; i<n; i++) A[i]=A[i-1]+X[i]; return A; o O(n)

23 aprile 2002 Algoritmi e strutture dati27 Progetto di algoritmi: metodologia "Divide et Impera" Il problema è risolto attraverso la sua scomposizione in problemi di taglia inferiore Divide: Problema suddiviso in un numero di sottoproblemi di taglia inferiore Impera: Sottoproblemi risolti ricorsivamente o direttamente se di dimensione piccola a sufficienza Combina: Le soluzioni dei sottoproblemi sono combinate per ottenere la soluzione al problema originale

23 aprile 2002 Algoritmi e strutture dati28 Merge Sort Divide: divide gli n elementi da ordinare in due sottosequenze da n/2 elementi. Costo: O(n) Impera: ordina ricorsivamente usando il merge sort le due sottosequenze. Costo: 2f(n/2) Combina: fonde le due sottosequenze ordinate. Costo: O(n) La ricorsione termina quando si hanno solo due elementi da ordinare. Costo:O(1)

23 aprile 2002 Algoritmi e strutture dati29 Merge Sort void mergesort(int[] A, int first, int last) { if (first < last) { int mid = (first + last) / 2; mergesort(A, first, mid); mergesort(A, mid+1, last); merge(A, first, last); } void merge(int[] data, int first, int last) { int mid = (first + last) / 2; int i1 = 0, i2 = first, i3 = mid + 1; int[] temp = new int[last – first + 1]; while (i2 <= mid && i3 <= last) if (data[i2] < data[i3]) temp[i1++] = data[i2++]; else temp[i1++] = data[i3++]; while (i2 <= mid) temp[i1++] = data[i2++]; while (i3 <= last) temp[i1++] = data[i3++]; for (i1 = 0, i2 = first; i2 <= last; data[i2++] = temp[i1++]); } r Costo dellalgoritmo Merge Sort:

23 aprile 2002 Algoritmi e strutture dati30 Equazioni di ricorrenza Tempo di esecuzione di algoritmi ricorsivi descritti con equazioni di ricorrenza. Ex: MergeSort: Semplificazioni o Argomenti non interi o Condizioni al contorno: (1) per n piccolo

Algoritmi e strutture dati31 Soluzione di equazioni di ricorrenza Metodo per sostituzione. Si tenta una soluzione e si verifica se soddisfa lequazione di ricorsione. Ex: Merge Sort:

23 aprile 2002 Algoritmi e strutture dati32 Esercizi Mostrare che la soluzione di f(n)=f(n/2)+1 è O(log n) Mostrare che la soluzione di f(n)=2f((n/2)+17)+n è O(n log n)