Progettazione di algoritmi e attributi

Documenti analoghi
Informatica di Base - 6 c.f.u.

Sistemi di Elaborazione delle Informazioni 6 CFU. Algoritmi

Lezioni di Informatica di Base per la Facoltà di Lettere e Filosofia. Algoritmi

Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Algoritmi

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Informatica per la Storia dell Arte. Algoritmi

Informatica di Base - 6 c.f.u.

Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Algoritmi

Università degli Studi di Palermo Dipartimento di Ingegneria Informatica. Informatica ed Elementi di Statistica 3 c.f.u. Anno Accademico 2010/2011

Principali strumenti per lo sviluppo di algoritmi in pascal-like. concetti universali presenti in tutti i linguaggi di programmazione

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Note sull architettura del calcolatore

1.1 Concetti base dell Informatica: Algoritmi

Rappresentazione degli algoritmi

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Corso di Informatica di Base

INFORMATICA. Strutture iterative

Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Presentazione del corso

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

Dispensa di Informatica II.1

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Algoritmi

Dal problema a un programma comprensibile dal calcolatore. Il Progetto degli Algoritmi. Dall analisi del problema all esecuzione

Introduzione alla programmazione

L ELABORATORE ELETTRONICO

Algoritmi e diagrammi di flusso

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Teoria dell Informazione

Architettura dei calcolatori

Tecniche di Ordinamento dei Vettori

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Algoritmi e Linguaggi

A lezione sono stati presentati i seguenti passi per risolvere un problema:

Il linguaggio di programmazione Python

Definizione FONDAMENTI DI INFORMATICA. Esempio di algoritmo: determinare il maggiore di due numeri interi x, y. Proprietà degli algoritmi

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Algoritmi e soluzione di problemi

Dall analisi alla codifica (1)

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

Sistemi di Elaborazione delle Informazioni 6 CFU

Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. I suoni Rappresentazione digitale

Programmazione strutturata

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Algoritmi di ordinamento

L ELABORATORE ELETTRONICO!

Diagrammi di flusso. Un metodo per rappresentare graficamente gli algoritmi. sotto programma. Input/ Output. Start. predicato Elaborazione Stop

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Linguaggi, Traduttori e le Basi della Programmazione

Dall algoritmo al calcolatore: concetti introduttivi. Fondamenti di Programmazione

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Unità di apprendimento 7. Dal problema al programma

CORSO DI ELEMENTI DI INFORMATICA

Linguaggio C Debugging

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

(A) CONOSCENZA TERMINOLOGICA (B) CONOSCENZA E COMPETENZA

Fondamenti di Informatica. Definizione di Algoritmo. Algoritmo Euclideo. Prof.V.L.Plantamura Informatica e Comunicazione Digitale a.a.

Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati

Laboratorio di Informatica

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

Fondamenti di Informatica 1 (I Modulo) Introduzione agli algoritmi. Roberto Basili a.a

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Calcolare x n = x x x (n volte)

Sistemi di Elaborazione delle Informazioni

Come ragiona il computer. Problemi e algoritmi

1 Esercizi in pseudocodice

2. Algoritmi e Programmi

Sistemi di Elaborazione delle Informazioni 6 CFU

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Corso di BASCOM (Capitolo 1 5 ) Corso Teorico/Pratico di programmazione in BASCOM Autore: DAMINO Salvatore. D I S P L A Y L C D (3).

Università degli Studi di Palermo Dipartimento di Ingegneria Informatica

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Dall algoritmo al programma

Informatica di Base - 6 c.f.u.

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Introduzione agli Algoritmi

Algoritmo: procedimento non ambiguo che in un numero finito di passi risolve un problema (o una classe di problemi)

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

Istruzioni iterative (o cicliche)

Cosa è l Informatica?

Analisi e programmazione 1

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

Le strutture di controllo in C++

A proposito di informatica

Elaboratore Elettronico

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Algoritmi e basi del C

I.4 Rappresentazione dell informazione

Rappresentazione con i diagrammi di flusso (Flow - chart)

Studio degli algoritmi

Istruzioni condizionali di diramazione in Fortran 90

Algoritmi e basi del C

Transcript:

Università degli Studi di Palermo Dipartimento di Ingegneria Informatica Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Anno Accademico 2008/2009 Docente: ing. Salvatore Sorce Progettazione di algoritmi e attributi

Linguaggio naturale Rappresentazione di un algoritmo Pseudocodice Diagrammi di flusso Linguaggio di programmazione formale

Operazioni sequenziali Operazioni sequenziali Elaborazione, Ingresso, Uscita Operazioni di ingresso Acquisisci il valore per variabile Operazioni di uscita Stampa il valore per variabile, descrizione della variabile Operazioni di Elaborazione Eseguire un calcolo per il valore di variabile

Operazioni condizionali Se condizione è vera/falsa allora Prima serie di istruzioni Altrimenti Seconda serie di istruzioni

Operazioni iterative Ciclo a condizione iniziale: Finchè condizione è vera/falsa ripeti: Istruzione 1 Istruzione 2 Istruzione N Ciclo a condizione finale: Ripeti: Istruzione 1 Istruzione 2 Istruzione N Finchè condizione è vera/falsa

Progettazione di un algoritmo Determinare il maggiore di un elenco di numeri Dato un valore n>1 e un elenco contenente esattamente n valori unici detti A 1, A 2,, A n, trovare e stampare il valore maggiore nell elenco e la posizione nell elenco in cui è stato trovato. Dati: n=5, {19,41,12,63,21} 1 2 3 4 5 19 41 12 63 21

Procedimento manuale 21 63 12 41 19

Procedimento manuale 21 63 12 41 19

Procedimento manuale 21 63 12 41 19

Procedimento manuale 12 21 63

Acquisizione dei dati Acquisisci il valore n (il numero di dati in elenco) Acquisisci i valori per A 1, A 2,, A n, (l elenco in cui cercare) i=1 Ripeti per i<=n Acquisisci A(i) i=i+1 1 2 3 4 5 A 19 41 12 63 21

i=1 Ripeti per i<=n Acquisisci A(i) i = i + 1 Qual è il valore di i alla fine di questa porzione di pseudocodice?

Costruzione dell algoritmo Organizzare i dati in una pila 1 2 3 4 5 19 41 12 63 21

Costruzione dell algoritmo Il primo elemento è il maggiore attuale. Lo salviamo in una posizione a parte A 1 2 3 4 5 19 41 12 63 21 19 Maggiore attuale 1 1. i=1 2. locazione=i 3. Maggiore attuale=a(1) 4. i=i+1 1 2 3 4 5 19 41 12 63 21 locazione 2 i

Costruzione dell algoritmo A 1 2 3 4 5 19 41 12 63 21 Confronta il prossimo elemento con il maggiore attuale Se l elemento considerato è maggiore del maggiore attuale allora esso diventa il nuovo maggiore attuale altrimenti esso viene scartato 1. Se maggiore attuale > A(i) allora 2 altrimenti 1.1 1.1 Maggiore attuale=a(i) 1 2 3 4 5 1.2 Locazione=i 2. i=i+1 19 41 12 63 21 41 Maggiore attuale 2 locazione 3 i

Costruzione dell algoritmo Ripeti finché ci sono dati in elenco Confronta il prossimo elemento con il maggiore attuale Se l elemento considerato è maggiore del maggiore attuale allora esso diventa il nuovo maggiore attuale altrimenti esso viene scartato 1. Ripeti per i<=n Contatore di iterazione i 1.1 Se maggiore attuale > A(i) allora 1.2 altrimenti 1.1.1 1.1.1 Maggiore attuale=a(i) 1 2 3 4 5 1.1.2 Locazione=i 1.2 i=i+1 19 41 12 63 21

Algoritmo Trova il maggiore 1. Acquisisci un valore per n, il numero di dati in elenco 2. i = 1 3. Ripeti i passi 4 e 5 mentre i<=n 4. Acquisisci A(i) 5. i=i+1 6. i=1 7. Poni il valore di maggiore attuale = A(i) 8. Poni il valore di locazione = i 9. Ripeti i passi 10 e 11 fino mentre i<=n 10. Se A(i) > maggiore attuale allora: Poni il valore di maggiore attuale = A(i) Poni il valore di locazione = i 11. Aggiungi 1 al valore di i 12. Stampa i valori di maggiore attuale e locazione 13. Stop

Prosegui e moltiplica Moltiplicazione di due interi mediante la somma prodotto = A x B = A + A + A + + A (B volte)

Prosegui e moltiplica Moltiplicazione di due interi mediante la somma prodotto = A x B = A + A + A + + A (B volte) 1. Ottieni il valore di A 2. Ottieni il valore di B 3. Poni i = 1 4. Poni prodotto = 0 5. Se A = 0 allora vai al passo 7 6. Mentre i <= B ripeti: 1. prodotto = prodotto + A 2. i = i + 1 7. Stampa il valore di prodotto 8. Fine

Correttezza Attributi Un algoritmo non deve soltanto produrre un risultato, ma deve produrre un risultato corretto Un algoritmo deve produrre un risultato utile Facilità di comprensione Necessità di adattare un algoritmo per una varietà di scenari possibili. Importante per garantire la manutenibilità dei programmi Eleganza Spesso in antitesi con facilità di comprensione Es.: Somma dei primi 100 numeri

Efficienza Attributi Tempo di calcolo e spazio in memoria sono quantità limitate L efficienza di una algoritmo misura la sua capacità di utilizzare bene le risorse del calcolatore sui cui gira, in termini di tempo di calcolo e memoria utilizzata Efficienza nell uso dello spazio Quantità di informazioni da memorizzare per svolgere il compito in aggiunta ai dati di ingresso Tanto più inefficiente quanto più memoria aggiuntiva è richiesta Efficienza nell uso del tempo di calcolo Benchmarking: fissare i parametri della misura, ovvero l insieme dei dati di ingresso, la macchina specifica, il particolare profilo di uso dell algoritmo

Attributi Efficienza nell uso del tempo di calcolo Indicazione della quantità di lavoro richiesta dalla natura dell algoritmo Tale quantità di lavoro dipende dal numero di passi richiesti per eseguire il compito Il confronto tra due algoritmi va operato sulla base del numero di passi e non del tempo di esecuzione su una particolare macchina.

Misura dell efficienza di un algoritmo Ricerca Sequenziale 1. Acquisisci i valori di NOME, N 1,, N n, T 1,, T n 2. Poni il valore di i a 1 ed il valore di Trovato a NO 3. Ripeti fino a che (Trovato = SI) ovvero (i > n) 4. Se NOME = N i Stampa il numero di telefono T i Poni il valore di Trovato a SI 5. Altrimenti aggiungi 1 al valore di i 6. Se Trovato = NO allora stampa il messaggio Mi dispiace: numero non in elenco 7. Fermati

Misura dell efficienza di un algoritmo Ricerca Sequenziale 1. Acquisisci i valori di NOME, N 1,, N n, T 1,, T n 2. Poni il valore di i a 1 ed il valore di Trovato a NO 3. Ripeti fino a che Trovato = SI ovvero i > n 4. Se NOME = N i Stampa il numero di telefono T i Poni il valore di Trovato a SI 5. Altrimenti aggiungi 1 al valore di i 6. Se Trovato = NO allora stampa il messaggio Mi dispiace: numero non in elenco 7. Fermati OPERAZIONI MARGINALI Hanno un peso costante c, che non varia col numero di unità di lavoro n

Misura dell efficienza di un algoritmo Ricerca Sequenziale 1. Acquisisci i valori di NOME, N 1,, N n, T 1,, T n 2. Poni il valore di i a 1 ed il valore di Trovato a NO 3. Ripeti fino a che Trovato = SI ovvero i > n 4. Se NOME = N i Stampa il numero di telefono T i Poni il valore di Trovato a SI 5. Altrimenti aggiungi 1 al valore di i 6. Se Trovato = NO allora stampa il messaggio Mi dispiace: numero non in elenco 7. Fermati CASO MIGLIORE 1 CASO PEGGIORE n CASO MEDIO n/2

Misura dell efficienza di un algoritmo Ordine di grandezza L algoritmo di ricerca sequenziale ha un ordine di grandezza Θ(n) La notazione indica che il lavoro svolto, varia con lo stesso andamento di n

Misura dell efficienza di un algoritmo Ordine di grandezza Θ(n 2 ) Si vuole stampare il contenuto di una tabella di registrazioni Per ogni riga da 1 a 4 ripeti per ogni colonna da 1 a 4 ripeti Stampa il valore in tabella L operazione stampa sarà ripetuta per ogni colonna in ogni riga 4 x 4 = 16 = 4 2 Con n righe e colonne, il lavoro svolto è proporzionale ad n 2

Misura dell efficienza di un algoritmo Confronto tra ordini di grandezza Θ(n) e Θ(n 2 ) Θ(n 2 ) è sempre più lento di Θ(n) nel medio-lungo termine Esempio: Il lavoro marginale per l algoritmo B è 1 milione di volte più pesante dell algoritmo A 100/0.00001 = 10 6

Misura dell efficienza di un algoritmo Ricerca Binaria (su elenco ordinato) 1. Acquisisci i valori di NOME, N 1,, N n, T 1,, T n 2. Poni il valore di inizio a 1 ed il valore di Trovato a NO 3. Poni il valore di fine ad n 4. Ripeti fino a che Trovato = SI ovvero fine < inizio 5. Poni il valore di m alla metà tra inizio e fine 6. Se NOME = N m Stampa il numero di telefono T i Poni il valore di Trovato a SI 7. Altrimenti se NOME < N m poni fine = m 1 Altrimenti poni inizio = m + 1 8. Se Trovato = NO allora stampa il messaggio Mi dispiace: numero non in elenco 9. Fermati

Misura dell efficienza di un algoritmo Ricerca Binaria Anna Bobo Cora Dino Gino Nino Susy 1 2 3 4 5 6 7 cerco CORA inizio=1 fine=7 m = 4

Misura dell efficienza di un algoritmo Ricerca Binaria Anna Bobo Cora Dino Gino Nino Susy 1 2 3 4 5 6 7 cerco CORA m = 4 Anna Bobo Cora Dino Cora < Dino 1 2 3 4 fine = 3, m = 2 Anna Bobo Cora Cora > Bobo 1 2 3 fine = 3, inizio = m = 3 Cora Cora = Cora Trovato = SI FINE

Misura dell efficienza di un algoritmo Dino Bobo Nino Anna Cora Gino Susy Θ(log 2 n)

Misura dell efficienza di un algoritmo

La tartaruga e la lepre Confronto tra un Pentium Pro 200 e un Cray T3E-900 Pentium Pro 200 Cray T3E-900 N. proc 1 1320 Velocità 75 MFLOPS 670 GFLOPS Costo 2.000,00 31.000.000,00 Rapporto Prestazioni 1 8933 Rapporto Costo 1 15500 Al P-Pro viene assegnato un algoritmo di classe Θ(n), mentre al Cray un algoritmo di classe Θ(n 2 )

La tartaruga e la lepre Al P-Pro viene assegnato un algoritmo di classe Θ(n), mentre al Cray un algoritmo di classe Θ(n 2 ) n Ppro O(n) sec Cray O(n 2 ) sec 750 0,00001 0,00000084 7.500 0,0001 0,000084 75.000 0,001 0,0084 750.000 0,01 0,84 7.500.000 0,1 84 75.000.000 1 8396 2,3 ore 750.000.000 10 839552 9,7 giorni

Domande?