Informatica 3 Informatica 3 LEZIONE 10: Introduzione agli algoritmi e alle strutture dati Modulo 1: Perchè studiare algoritmi e strutture dati Modulo 2: Definizioni di base Lezione 10 - Modulo 1 Perchè studiare algoritmi e strutture dati Politecnico di Milano - Prof. Sara Comai 1 Politecnico di Milano - Prof. Sara Comai 2 Importanza delle strutture dati Organizzazione dei dati Obiettivo: efficienza Calcolatori più potenti applicazioni più complesse maggiori capacità di calcolo e programmi sempre più efficienti occorrono principi che permettono di progettare programmi efficienti Struttura dati = qualsiasi rappresentazione dei dati e le operazioni associate ad essa Esempio: Collezione di dati: array di record Operazioni: cercare, processare in qualsiasi ordine, modificare Scegliere la corretta struttura dati esecuzioni in pochi secondi oppure in molti giorni Politecnico di Milano - Prof. Sara Comai 3 Politecnico di Milano - Prof. Sara Comai 4
Soluzione efficiente 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 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 Politecnico di Milano - Prof. Sara Comai 5 Politecnico di Milano - Prof. Sara Comai 6 Cosa chiedersi 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? strutture dati più o meno complesse Politecnico di Milano - Prof. Sara Comai 7 Costi e benefici Ogni struttura dati ha costi e benefici Raramente una struttura dati è migliore di un altra in tutte le situazioni 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 Politecnico di Milano - Prof. Sara Comai 8
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 giudicare anche nuove strutture dati Lezione 10 - Modulo 2 Definizioni di base Politecnico di Milano - Prof. Sara Comai 9 Politecnico di Milano - Prof. Sara Comai 10 Tipi di dati astratti Forma fisica e logica dei dati Tipi di dati astratti o Abstract Data Type (ADT): definizione di un tipo di dato solamente in termini di insieme di valori e insieme di operazioni sul tipo di dato Ogni operazione di un ADT è definita attraverso i suoi input e output I dettagli di come il tipo di dato è implementato sono nascosti Una struttura dati è l implementazione fisica di un ADT Ogni operazione associata con l ADT viene implementata tramite una o più funzioni I dati hanno una forma logica e una forma fisica Forma logica: definizione di un dato all interno dell ADT Es. Interi (intesi in senso matematico) con operazioni +, - Forma fisica: implementazione del dato all interno di una struttura dati Es. intero a 16/32 bit, overflow Politecnico di Milano - Prof. Sara Comai 11 Politecnico di Milano - Prof. Sara Comai 12
Relazione tra dati, ADT e strutture dati ADT: Tipo Operazioni Tipo di dato Struttura dati: Spazio di memoria Funzioni Dato: forma logica Dato: forma fisica Problema Problema: compito da eseguire 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 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 Politecnico di Milano - Prof. Sara Comai 13 Politecnico di Milano - Prof. Sara Comai 14 Algoritmi e programmi Algoritmo: metodo o processo per risolvere un problema Es. ricetta Un algoritmo riceve l input di un problema (funzione) e lo trasforma in output Un problema può essere risolto attraverso diversi algoritmi Proprietà di un algoritmo Proprietà che deve possedere un algoritmo: 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 Politecnico di Milano - Prof. Sara Comai 15 Politecnico di Milano - Prof. Sara Comai 16
Concetti di matematica Insiemi Relazioni Logaritmi Ricorsione Somme e ricorrenze Dimostrazioni per assurdo e per induzione Stima Politecnico di Milano - Prof. Sara Comai 17