1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.

Slides:



Advertisements
Presentazioni simili
Informatica II – Basi di Dati (08/09) – Parte 1
Advertisements

Algoritmi e Strutture Dati
Strutture dati per insiemi disgiunti
Algoritmi e Strutture Dati
Analisi della complessità degli algoritmi
Analisi della complessità degli algoritmi
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Informatica Generale Alessandra Di Pierro
COORDINATE POLARI Sia P ha coordinate cartesiane
Lez. 41 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Programmazione.
Introduzione alle curve ellittiche
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.
Ordini Parziali - Reticoli
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.
R. Soncini Sessa, MODSS, L 24b Analisi a molti obiettivi-esempi Rodolfo Soncini Sessa MODSS Copyright 2004 © Rodolfo Soncini Sessa.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
Process synchronization
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 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 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.
8. Reti di Code Nella maggior parte dei processi produttivi risulta troppo restrittivo considerare una sola risorsa. Esempio: linea tandem arrivi 1 v.
Corso di Informatica (Basi di Dati)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Realizzazione e caratterizzazione di una semplice rete neurale per la separazione di due campioni di eventi Vincenzo Izzo.
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
Modelli simulativi per le Scienze Cognitive Paolo Bouquet (Università di Trento) Marco Casarotti (Università di Padova)
Algoritmi.
Unità Didattica 2 I Linguaggi di Programmazione
Strutture di controllo in C -- Flow Chart --
Lezione 8 Numerosità del campione
Num / 36 Lezione 9 Numerosità del campione.
Notazioni Asintotiche e Ordini di Grandezza delle funzioni
Fondamenti di Informatica Algoritmi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Elementi di Informatica
Elementi di Informatica di base
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
INFORMATICA MATTEO CRISTANI.
Algoritmi e linguaggi di programmazione
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
14 marzo 2002 Avvisi:.
Bando di Residenza Cap Scheda ENTE 3ROL - Richieste On Line.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 13 Marzo 2014.
Complessità degli algoritmi (cenni) CORDA – Informatica A. Ferrari.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Complessità Computazionale
Corsi di Laurea in Biotecnologie
Informatica 3 V anno.
Rudimenti di Complessità Corso di Programmazione II Prof. Dario Catalano.
Transcript della presentazione:

1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010

2 Il problema Un problema computazionale P viene definito dai suoi DATI IN INGRESSO (o INPUT) e dalla sua SOLUZIONE (o OUTPUT) Esempio P: somma di due interi DATI IN INGRESSO: due interi a e b SOLUZIONE: somma s=a+b

3 Il problema Istanza di un problema P realizzazione di particolari dati in ingresso Esempio la coppia (2,3) è unistanza del problema P dellesempio precedente a cui corrisponde la soluzione 5 (2,3) 5

4 Il problema Definiamo: I P linsieme delle istanze del problema P S P linsieme delle soluzioni del problema P

5 Il problema Esempio per P=somma di due interi (2,3) (4,1) (100,50) IPIP SPSP 5 150

6 Il problema Dato un problema P, esiste una relazione r P che lega gli elementi in I P (istanze) agli elementi in S P (soluzioni) r P : I P -> S P e che rappresenta quindi il problema P. Nel caso di P=somma di due interi si ha che r P è la funzione univoca: s=r P (a,b)=a+b

7 Tipi di problemi Decisione S P ={1,0} o S P ={SI, NO} Ad esempio: P: problema del commesso viaggiatore INPUT: N città con le relative distanze e un valore prefissato b OUTPUT: yes (oppure 1) se esiste un percorso che passa una sola volta per tutte le città ed è di lunghezza totale minore di b, no (oppure 0) se un tale percorso non esiste

8 Tipi di problemi Ricerca Ad esempio: P: problema del commesso viaggiatore (nella versione di ricerca) INPUT: N città con le relative distanze e un valore prefissato b OUTPUT: tutti i percorsiche passano una sola volta per tutte le città e che hanno una lunghezza totale minore di b

9 Tipi di problemi Enumerazione Esempio P: problema del commesso viaggiatore (nella versione di enumerazione) INPUT: N città con le relative distanze e un valore prefissato b OUTPUT: il numero dei percorsi che passano una sola volta per tutte le città e che hanno una lunghezza totale minore di b

10 Tipi di problemi Ottimizzazione Esempio P: problema del commesso viaggiatore (nella versione di ottimizzazione) INPUT: N città con le relative distanze OUTPUT: trovare il percorso che passa una sola volta per tutte le città e che ha minima lunghezza totale Questo è un problema di minimo. Da notare che le soluzioni per una data istanza possono essere più di una (esistono cioè più percorsi che hanno una lunghezza totale minima)

11 Lalgoritmo Cosè un algoritmo? In Informatica è un metodo di calcolo per risolvere un problema computazionale e può essere implementato, cioè può essere tradotto in programma attraverso un linguaggio di programmazione Un algoritmo esiste indipendentemente dalla macchina che lo esegue!

12 Lalgoritmo Cosè un algoritmo? E una procedura, costituita da una sequenza finita di operazioni elementari, che trasforma un set di dati iniziali (INPUT) in un set di dati finali (OUTPUT)

13 Lalgoritmo Esempio di problema da risolvere tramite un algoritmo P: somma di 5 numeri interi DATI IN INGRESSO: un set B={b 1, b 2, b 3, b 4, b 5 } di 5 interi SOLUZIONE: somma s=b 1 +b 2 +b 3 +b 4 +b 5

14 Lalgoritmo Esempio Algoritmo somma_5_interi: somma_5_interi B={b 1, b 2, b 3, b 4, b 5 } s

15 Lalgoritmo Un algoritmo in genere viene scritto in pseudocodice, cioè in un linguaggio, simile ad un linguaggio di programmazione (codice), che però non è direttamente compilabile o interpretabile su un calcolatore. Spesso il linguaggio di pseudocodice imita il linguaggio Pascal e viene perciò chiamato Pascal-like

16 Lalgoritmo Lalgoritmo precedente può essere riscritto in pseudocodice nel seguente modo (Pascal-like): Procedura Somma_interi(b1, b2, b3, b4, b5) begin s:=0 s:=s+b 1 s:=s+b 2 s:=s+b 3 s:=s+b 4 s:=s+b 5 end

17 Lalgoritmo Un algoritmo è composto da un certo numero di istruzioni e viene eseguito in un certo numero di passi in dipendenza del particolare input Istruzione descrizione di unoperazione elementare (ad esempio lalgoritmo precedente è composto da 6 istruzioni di assegnamento) Passo esecuzione di una certa istruzione

18 Lalgoritmo Esempio Procedura Raddoppia_Pari(a) Begin 1:b=a SE a è pari{ 2:b=a*2 } end La procedura è composta da 2 istruzioni e compie 2 passi se a in input è pari, mentre ne compie uno solo se a in input è dispari

19 Lalgoritmo Un algoritmo deve: essere composto da un numero finito di istruzioni e terminare in un numero finito di passi, ovvero deve essere finito essere realizzabile gestire tutte le situazioni che si possono verificare durante la sua esecuzione, ovvero deve essere completo

20 Lalgoritmo Un algoritmo deve: essere riproducibile, ovvero gli stessi dati in input devono dare in esecuzioni successive gli stessi dati in output essere corretto essere efficiente Vedere il seguito…

21 Correttezza di un algoritmo Dato un algoritmo A, si definisca: I A insieme degli input di A O A insieme degli output di A

22 Correttezza di un algoritmo Dato un algoritmo A, esiste una relazione r A che lega gli elementi in I A (input) agli elementi in O A (output) r A : I A -> O A e che rappresenta quindi lalgoritmo A. Nel caso di A=somma di 5 interi si ha che r A è la funzione univoca: p=r A (b 1,b 2,b 3,b 4,b 5 )=b 1 +b 2 +b 3 +b 4 +b 5

23 Correttezza di un algoritmo Un algoritmo A rappresentato da una relazione r A : I A ->O A si definisce corretto per un problema P, rappresentato da una relazione r P : I P ->S P, se e solo se r A coincide con r P. Cioè se ad ogni input i in I A corrisponde un output o che è anche la soluzione di P per lingresso fornito da i. Attenzione al coincide che non è in senso stretto! Per i problemi di ottimizzazione ad esempio basta che lalgoritmo trovi anche solo una delle possibili soluzioni ottime (di minimo o di massimo)

24 Efficienza di un algoritmo Lefficienza di un algoritmo è misurata in termini del tempo di computazione e dello spazio di memoria che userebbe se venisse implementato ed eseguito su di una macchina di riferimento ipotetica. Un algoritmo è tanto più efficiente quanto meno tempo e spazio spreca. La misura di efficienza (in tempo e spazio) viene in genere espressa in funzione della dimensione n dellinput

25 Efficienza di un algoritmo Esempio di tempo T di computazione funzione della dimensione n dellinput Procedura Somma_interi(b1, b2, b3, b4, b5) begin p:=0 p:=p+b 1 p:=p+b 2 p:=p+b 3 p:=p+b 4 p:=p+b 5 stampa p end n=5 costante sullintero insieme I A La dimensione n dellinput è il numero di interi b 1, b 2, b 3, b 4, b 5 (n=5) che è costante per ogni input possibile. Immaginando di implementare ed eseguire la procedura su una macchina di riferimento (modello) che esegue ogni istruzione in un tempo unitario, si ha che il tempo di computazione T per ogni input è: T=n+2 le n=5 istruzioni di assegnamento p:=p+b i, listruzione p:=0 e listruzione stampo p. Di conseguenza si ha che T è costante per ogni input.

26 Efficienza di un algoritmo Procedura Stampa(a) begin Per a volte stampa ciao e vai a capo end n=a non costante sullinsieme I A La dimensione n dellinput è lintero a (n=a) che non è costante per ogni input. Immaginando di implementare ed eseguire la procedura su una macchina di riferimento (modello) che esegue ogni istruzione in un tempo unitario, si ha che il tempo di computazione T per un input a è: T=n=a viene eseguita a volte listruzione di stampa. Di conseguenza si ha che T è funzione lineare di a. E evidente che non ci sono due input che hanno la stessa dimensione Esempio di tempo T di computazione funzione della dimensione n dellinput

27 Efficienza di un algoritmo Esempio di dimensione n dellinput Procedura Commesso_viaggiatore(insieme_di_città) begin … end n=N non costante sullinsieme I A La dimensione n dellinput è il numero N delle città n=N. Il tempo di computazione dellalgoritmo sarà funzione di N. In questo caso due input diversi possono anche avere la stessa dimensione. Ad esempio i 1 ={Roma, Napoli Pisa} e i 2 ={Milano, Genova, Venezia} che hanno n=N=3

28 Efficienza di un algoritmo Indicando con T A (x) il tempo che lalgoritmo A impiega a processare linput x appartenente a I A, si definisce complessità in tempo nel caso peggiore la grandezza: T A P (n)=max{T A (x) tale che |x|=n} cioè per ogni valore di n, T A P (n) è il massimo tra i tempi di computazione degli input x che hanno dimensione n |x|=n

29 Efficienza di un algoritmo Indicando con T A (x) il tempo che lalgoritmo A impiega a processare linput x appartenente a I A, si definisce complessità in tempo nel caso medio la grandezza: cioè per ogni valore di n, T A M (n) è la media dei tempi di computazione degli input x che hanno dimensione n |x|=n e |I n | numero degli input di dimensione n

30 Efficienza di un algoritmo In genere, dato un algoritmo A si vuole vedere cosa succede alle sue funzioni T A P (n) e a T A M (n) al tendere di n allinfinito. Si vuole cioè indagare il comportamento asintotico di A. Analogo discorso può essere fatto per misurare lo spazio di memoria che lalgoritmo usa su unipotetica macchina modello.

31 Efficienza di un algoritmo Gli algoritmi efficienti sono quelli per cui la funzione T A (n) (T A P o T A M ) è un polinomio di grado k>=0: T A (n)=a 0 +a 1 n 1 +a 2 n 2 +…+a k n k Per k=0 tempo costante Per k=1 tempo lineare Allaumentare di k lalgoritmo A diventa sempre più oneroso dal punto di vista computazionale

32 Efficienza di un algoritmo Tempi di calcolo su input di varie dimensioni (prima riga) per sei algoritmi che hanno una complessità pari a n (lineare), nlog 2 n (logaritmica), n 2 (polinomiale), n 3 (polinomiale), 2 n (esponenziale), 3 n (esponenziale) Si supponga che la macchina di riferimento esegua unoperazione elementare (istruzione) in 1 microsecondo (10 -6 secondi). Notazioni: ms (microsecondi), ms (millisecondi), s (secondi), mn (minuti), h (ore), g (giorni), a (anni), c (secoli) Da: A. Bertoni e M. Goldwurm, Progetto e Analisi di Algoritmi, Rapporto Interno n , Dipartimento di Scienze dellInformazione, Università degli Studi di Milano

33 Problematiche degli algoritmi SINTESI dato un problema P, progettare (disegnare) un algoritmo A che risolva P ANALISI dato un algoritmo A per un problema P, dimostrare che A risolve P (è corretto) e valutare le risorse (tempo e spazio) utilizzate da A