LEZIONE 10: Introduzione agli algoritmi e alle strutture dati

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