1 Informazioni generali r Stefano Leonardi m Tel.: 06 49918341 m URL: / r Ricevimento:

Slides:



Advertisements
Presentazioni simili
Strutture dati per insiemi disgiunti
Advertisements

Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 2 Copyright © The McGraw.
Algoritmi e Strutture Dati
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.
Cammini minimi con sorgente singola
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti lineari.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
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 ottimi.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 1 Unintroduzione informale agli algoritmi Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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.
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 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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.
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
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Algoritmo di Ford-Fulkerson
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 4 Ordinamento: Heapsort 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.
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
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 9 Il problema della gestione di insiemi disgiunti (Union-find) 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
Università degli studi di LAquila Anno Accademico 2007/2008 Corso Integrato di Algoritmi e Strutture Dati con Laboratorio Modulo da 6 CFU di Algoritmi.
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.
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
1 2. Analisi degli Algoritmi. 2 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo:
Seminario su clustering dei dati – Parte II
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.
Strutture di controllo in C -- Flow Chart --
Elementi di Informatica di base
CODIFICA Da flow-chart a C++.
23 aprile 2002 Algoritmi e strutture dati1 Informazioni generali Fabrizio d'Amore o Tel.: o o URL:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 K 4 è planare? Sì!
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.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Algoritmi e Strutture Dati Introduzione agli algoritmi
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 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:
Transcript della presentazione:

1 Informazioni generali r Stefano Leonardi m Tel.: m URL: / r Ricevimento: Venerdì, ore 14-16, Dip. Informatica e Sistemistica, via Salaria 113 II piano, Roma r Testo adottato: m R. Sedgewick, Algoritmi in Java, Addison Wesley r Testi consigliati: m C. Demetrescu, I. Finocchi, G. Italiano. Algoritmi e Strutture Dati in Java. Mc Graw Hill, m Cormen, Leiserson, Rivest, Stein. Introduzione agli algoritmi. Ed. Jackson libri r Altro materiale: m trasparenze del corso m Libreria di Algoritmi e Strutture Dati in Java m documentazione su Java disponibile in rete

2 Challenge Algoritmica r hallenge.htm hallenge.htm r I primi 3 classicati ricevono un bonus di 2 punti per lesame.

3 Algoritmi e Strutture Dati I. Progetto ed Analisi di Algoritmi

4 Obiettivi r Applicazioni della progettazione di algoritmi e strutture dati r Come si misura lefficienza delle strutture dati e degli algoritmi r Come scegliere gli algoritmi e le strutture dati adatti a risolvere in modo efficiente un problema r Implementazione di algoritmi e strutture dati in Java

5 Argomenti del corso r Introduzione: efficienza e sua misura. r Riepilogo sulle principali strutture dati di base: liste, code, pile, alberi r Code di priorità r Dizionari (Alberi bilanciati, Tabelle Hash, etc..) r Aspetti avanzati degli algoritmi di ordinamento r Grafi o Rappresentazione e algoritmi di visita o Applicazioni della DFS o Algoritmo di Dijkstra per il calcolo del percorso minimo o Minimo albero ricoprente

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

7 Nel mondo reale r Gli algoritmi sono al cuore di innumerevoli applicazioni informatiche r Esempi m Routing nternet m DBMS m Analisi e classificazione di documenti/Motori di ricerca m Ottimizzazione di progetti m Etc. Etc. Etc.

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

9 Esempio: Accesso a basi di dati Obiettivo: rispondere rapidamente. Interrogazione Data base... Interrogazione

10 Qualità di algoritmi e strutture dati r Efficienza m Tempo di esecuzione m Spazio (quantità di memoria) I due aspetti sono interdipendenti

11 Tempo di esecuzione r In generale aumenta con la dimensione dellInput r Per lo stesso valore di n può variare con il particolare input considerato (es. Vettore da ordinare) r Dipende dalla piattaforma Hw/Sw In generale: può essere poco rappresentativo

12 Come misurare lefficienza? r Perché B gira più velocemente ? r Possiamo affermare che B sia migliore di A? Programma AProblemaProgramma B 10 ms 1 ms Dati

13 Misura dellefficienza - obiettivi r Indipendenza dallimplementazione r Generale (valida per ogni input, di qualsiasi dimensione) r Misura indipendente dalla piattaforma Hw/Sw

14 Modello di costo RAM Random Access Machine r Assegnazione r Op. aritmetiche r Test r Lettura/Scrittura A = 10; (costo 1) A = B*C + D – 7; (costo 4) A == B (costo 1) System.out.println(A); (Costo 1) Macchina che esegue le istruzioni in sequenza. Insieme di operazioni primitive a costo unitario:

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

16 Esempio r 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 r 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 AlgorithmarrayMax(A, n) currentMax=A[0]; for (i=0; i<n; i++) if (A[i]>currentMax) currentMax=A[i]; return currentMax; n=3 n=5

17 Perché il modello è accettabile? A=A+B*C; MUL B,C ADD A,B A B C N finito (es. 32 o 64 ) Ogni istruzione corrisponde a una sequenza finita di istruzioni macchina Ogni variabile occupa una quantità finita di memoria e quindi i tempi di accesso a due variabili sono legati da una costante

18 Vantaggi e svantaggi r Vantaggi: prescinde dalla piattaforma Hw/Sw e dal linguaggio di programmazione r Svantaggi: lindicazione che si ottiene è qualitativa

19 Quale input considerare? r La misura deve dipendere dalla dimensione dellinput (n nel nostro esempio) ma non dal particolare input considerato r Possibile alternative: r Analisi del caso peggiore: si considera il costo di esecuzione nel caso peggiore r Analisi del caso medio: si considera il costo medio dellalgoritmo rispetto ad una distribuzione dellinput (richiede la conoscenza della distribuzione) r In ogni caso occorre definire la dimensione dellinput

20 Dimensione dellinput r In generale: No. bit necessari a rappresentare linput r Esempio (calcolo del Max. in un array di n interi) r n interi finiti (< MAXINT) r log(MAXINT) bit per rappresentare ogni valore. r Poiché MAXINT è una costante in pratica, il numero di bit necessari a rappresentare un intero è costante (es. 32) r Quindi: dimensione input è proporzionale a n r A volte le cose possono non essere così ovvie (si pensi al problema di indovinare un numero proposto nellultima slide)

21 AlgorithmarrayMax(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) r Nel caso peggiore lelemento massimo è lultimo r In questa ipotesi listruzione currentMax=A[i]; è eseguita n-1 volte. r Il costo complessivo dellalgoritmo è allora 1(ass)+1(ass for)+2n(test ed increm for)+2(n-1)(test e ass. if)+1(test finale for) +1(resturn)=4n

22 Analisi asintotica r Se si considerano tutte le costanti lanalisi può divenire eccessivamente complessa r Interessa conoscere il costo al variare della dimensione dellinput, a meno di costanti r Motivo: il costo è comunque calcolato a meno di costanti, per le ipotesi fatte circa il modello r Unanalisi di questo tipo è detta asintotica r Lanalisi asintotica è influenzata dalloperazione dominante di un algoritmo

23 Analisi asintotica/2 r f(n), g(n) funzioni dagli interi ai reali r f(n)=O(g(n)) se esiste c>0 reale, e una costante intera tali che, per ogni r se esiste c>0 reale, e una costante intera tali che, per ogni r se f(n)=O(g(n)) e r f(n)=o(g(n)) se, per ogni c>0, esiste n 0 >0 tale che lim f/g 0 per ogni (attenzione alle differenze!!) r se g(n)=o(f(n)) r In base a tali definizioni, lalgoritmo AlgorithmarrayMax ha costo O(n)

24 Istruzione dominante r Un operazione o istruzione si dice dominante se il numero d(n) di volte che essa è eseguita nel caso peggiore di input di dimensione n soddisfa: f(n)<=a d(n) + b, dove f(n) è la complessità dellalgoritmo nel caso peggiore ed a e b sono costanti opportune r Es.: istruzione if (A[i]>currentMax) in AlgorithmarrayMax(A, n)

25 Esempi r In base a tali definizioni, lalgoritmo AlgorithmarrayMax ha costo r f(n)= 3n n = O(n 2) Per c=4 e n 0 >=10, 3n n <= 4 n 2 r Per c 1 = 1/14, c 2 = 1/2, n 0 >=7,

26 Analisi asintotica/3 Limiti dellapproccio: r Le costanti nascoste possono essere molto grandi: un algoritmo con costo n è lineare ma potrebbe essere poco pratico r Comportamento nel caso di istanze piccole (es. 3n contro n 2 ) r Il caso peggiore potrebbe verificarsi raramente

27 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-1] = tmp; } return A; Inserisce lelemento A[i] nella posizione corretta nel vettore ordinato A[0,…,i-1] Ex: i= confronti i= confronto i= confronti i= confronti i= confronti Ex: f(n)= n

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

29 Calcolo delle somme dei prefissi r Dato un vettore di interi X[0....n-1], calcolare le componenti del vettore A[0...n-1] 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; r 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; r O(n)

30 Metodo Divide et Impera r Il problema è risolto ricorsivamente attraverso la sua scomposizione in problemi di taglia inferiore r 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

31 Merge Sort A[0...n] Si suppone n pari per semplicità A[0...n/2-1] A[n/2...n-1] Suddividi A in due sottovettori di dim. n/2 A[0...n/2-1] A[n/2...n-1] MergeSort A[0...n/2-1] MergeSort A[n/2...n-1] Merge A ordinato

32 Merge Sort/2 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); }

33 Merge Sort A[0...n] /3 r 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) r La ricorsione termina quando si hanno solo due elementi da ordinare. Costo:O(1) r Costo dellalgoritmo Merge Sort:

34 Larray [ ] ordinato con mergesort

35 Merge void merge(int[] data, int first, int last) { int mid = (first + last) / 2; int i1 = 0, i2 = first, i3 = mid + 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++]); }

36 Equazioni di ricorrenza r Tempo di esecuzione di algoritmi ricorsivi descritti con equazioni di ricorrenza. Ex: MergeSort: r Semplificazioni: m Argomenti non interi. m Condizioni al contorno: per n piccolo

37 Soluzione di equazioni di ricorrenza r Metodo per sostituzione. Si tenta una soluzione g(n) e si verifica se soddisfa lequazione di ricorsione. r Dimostrazione per induzione. r Base dellinduzione: f(1)g(1) r Ipotesi induttiva: f(n/2) g(n/2) r Passo induttivo: f(n) g(n) r Per Merge Sort:

38 Soluzione equazioni di ricorreza per Merge Sort r Base: r Ipotesi induttiva: r Passo induttivo:

39 Esercizi/1 1. Mostrare che la soluzione di f(n)=f(n/2)+f(n/2)+1 è O(n) 2. Mostrare che la soluzione di f(n)=2f(n/2+10)+n è O(nlog n)

40 f(n)=f(n/2)+f(n/2)+1 r Ipotesi: f(n)<=g(n)=cn f(n/2)+f(n/2)+1<=cn/2 + cn/2 +1 = cn +1 NO! r Ipotesi: f(n)<=g(n)=cn-b f(n/2)+f(n/2)+1<=cn/2-b + cn/2-b +1 = cn -2b+1 b>=1

41 f(n)=2f(n/2+10)+n r Rinominiamo n+20= m. Quindi: f(m)=2f(m/2)+m-20 r Ipotesi: f(m)<=g(m)=cmlogm f(m)<=2c (m/2) (log m-1)+m-20<=cm log m se c>=1 Quindi: f(n)<=g(n)=(n+20)log(n+20)

42 Esercizi/2 r Mostrare che la soluzione di f(n)=f(n/2)+1 è O(log n)

43 Esercizi/3 r Si consideri il problema della ricerca in un vettore di interi: dato il vettore A[1..n] ed un intero k, si vuole stabilire se k sia tra gli elementi di A o meno m Considerato il classico algoritmo basato sulla ricerca binaria, si mostri che esso ha complessità O(log n)

44 Esercizi/4 r Si consideri il problema di indovinare un numero intero nel numero minimo di tentativi: ad ogni tentativo, lalgoritmo propone un valore ad un oracolo, che conosce il numero da indovinare. Loracolo risponde dicendo se il numero proposto sia maggiore, minore o uguale a quello da indovinare (nell ultimo caso il gioco termina). m Si proponga un algoritmo efficiente e se ne esprima la complessità temporale in funzione del generico numero N da indovinare