Informatica 3 Informatica 3 LEZIONE 10: Introduzione agli algoritmi e alle strutture dati Lezione 10 - Modulo 1 • Modulo 1: Perchè studiare algoritmi e strutture dati • Modulo 2: Definizioni di base Politecnico di Milano - Prof. Sara Comai Perchè studiare algoritmi e strutture dati 1 Importanza delle strutture dati 2 Organizzazione dei dati • Struttura dati = qualsiasi rappresentazione dei dati e le operazioni associate ad essa • Obiettivo: efficienza Esempio: – Collezione di dati: array di record – Operazioni: cercare, processare in qualsiasi ordine, modificare • Calcolatori più potenti ⇒ applicazioni più complesse ⇒ maggiori capacità di calcolo e programmi sempre più efficienti ⇒ occorrono principi che permettono di progettare programmi efficienti Politecnico di Milano - Prof. Sara Comai Politecnico di Milano - Prof. Sara Comai ⇒ Scegliere la corretta struttura dati • esecuzioni in pochi secondi oppure in molti giorni 3 Politecnico di Milano - Prof. Sara Comai 4 1 Soluzione efficiente Scegliere una struttura dati Passi da seguire: • Analizzare il problema per determinare i vincoli delle risorse • Determinare le operazioni di base da supportare. Quantificare i vincoli di risorse per ciascuna operazione • Selezionare la struttura dati che meglio soddisfa i requisiti • Una soluzione si dice efficiente se risolve il problema soddisfacendo vincoli di risorse – Spazio (su disco, in memoria centrale) – Tempo • Il costo di una soluzione dipende dalla quantità di risorse che la soluzione consuma – Tempo Politecnico di Milano - Prof. Sara Comai 5 Cosa chiedersi Politecnico di Milano - Prof. Sara Comai 6 Costi e benefici • Ogni struttura dati ha costi e benefici • Raramente una struttura dati è migliore di un’altra in tutte le situazioni • I dati vengono inseriti nella struttura dati tutti all’inizio oppure tra un inserimento e l’altro vengono effettuate altre operazioni? • I dati possono essere cancellati? • I dati devono essere processati secondo un particolare ordine oppure occorre potervi accedere in modo casuale? • Una struttura dati richiede: – spazio per ogni informazione da memorizzare – tempo per eseguire le operazioni di base – sforzo di programmazione • Esempio: banca – Apertura conto: pochi minuti – Transazioni: pochi secondi – Chiusura conto: durante la notte ⇒ strutture dati più o meno complesse Politecnico di Milano - Prof. Sara Comai 7 Politecnico di Milano - Prof. Sara Comai 8 2 Obiettivi del corso Informatica 3 • Studiare le strutture dati più comuni e alcune strutture dati più complesse • Analizzare costi/benefici di queste strutture dati • Comprendere come misurare l’efficienza di un algoritmo o di una struttura dati Lezione 10 - Modulo 2 Definizioni di base – giudicare anche nuove strutture dati Politecnico di Milano - Prof. Sara Comai 9 Tipi di dati astratti Politecnico di Milano - Prof. Sara Comai 10 Forma fisica e logica dei dati • I dati hanno una forma logica e una forma fisica • Tipi di dati astratti o Abstract Data Type (ADT): definizione di un tipo di dato solamente in termini di • Forma logica: definizione di un dato all’interno dell’ADT – insieme di valori e – insieme di operazioni sul tipo di dato – Es. Interi (intesi in senso matematico) con operazioni +, - • Ogni operazione di un ADT è definita attraverso i suoi input e output • I dettagli di come il tipo di dato è implementato sono nascosti • Forma fisica: implementazione del dato all’interno di una struttura dati – Es. intero a 16/32 bit, overflow • Una struttura dati è l’implementazione fisica di un ADT – Ogni operazione associata con l’ADT viene implementata tramite una o più funzioni Politecnico di Milano - Prof. Sara Comai 11 Politecnico di Milano - Prof. Sara Comai 12 3 Relazione tra dati, ADT e strutture dati Problema • Problema: compito da eseguire Tipo di dato ADT: Tipo Operazioni Struttura dati: Spazio di memoria Funzioni – può essere pensato in termini di input ed output – la definizione del problema dovrebbe includere i vincoli sulle risorse che possono essere consumati in una soluzione accettabile Dato: forma logica • I problemi possono essere visti come funzioni matematiche – Una funzione mappa input (dominio) in output (codominio) – Un input può essere un singolo numero oppure una collezione di dati – I valori che costituiscono un input vengono detti parametri della funzione – In corrispondenza di un input la funzione calcola un output Dato: forma fisica Politecnico di Milano - Prof. Sara Comai 13 Politecnico di Milano - Prof. Sara Comai Algoritmi e programmi Proprietà di un algoritmo • Algoritmo: metodo o processo per risolvere un problema • Proprietà che deve possedere un algoritmo: – – – – – – Es. ricetta • Un algoritmo riceve l’input di un problema (funzione) e lo trasforma in output Correttezza Deve essere costituito da una serie di passi concreti Non deve essere ambiguo Deve essere costituito da un insieme finito di passi Deve terminare • Un programma è un’istanza, o rappresentazione concreta, di un algoritmo in un linguaggio di programmazione • Un problema può essere risolto attraverso diversi algoritmi Politecnico di Milano - Prof. Sara Comai 14 15 Politecnico di Milano - Prof. Sara Comai 16 4 Concetti di matematica • • • • • • • Insiemi Relazioni Logaritmi Ricorsione Somme e ricorrenze Dimostrazioni per assurdo e per induzione Stima Politecnico di Milano - Prof. Sara Comai 17 5