doc

annuncio pubblicitario
Programma del corso (A. A. 2003/2004)
Testo adottato:
Addison-Wesley
R.
Sedgewick.
Algoritmi
in
Java.
Note
* 5.1 - 5.4 significa dal paragrafo 5.1 al
paragrafo 5.4, estremi inclusi, e non 5.1 e 5.4
* Il testo si intende integrato dal materiale
distribuito dal docente: slide, appunti, esercizi ed
esercitazioni svolti dal docente, disponibili on-line
1. Introduzione. Algoritmi e strutture dati: esempi e
uso. Tipi astratti. Qualità di algoritmi e strutture
dati.
- Capitolo 1 (lettura)
2. Efficienza. Efficienza spaziale e temporale.
Misura dell’efficienza temporale: obiettivi. Modello
di costo RAM. Analisi del caso peggiore e istruzione
dominante. Complessità asintotica. Primi esempi:
calcolo
della
complessità
di
Insertion
Sort.
Equazioni di ricorrenza. Metodo di sostituzione per
la soluzione di equazioni di ricorrenza. Metodo
Divide et Impera. Algoritmo Merge Sort e calcolo
della sua complessità.
- Capitolo 2 fino al par. 2.6 (incluso)
- Par. 6.4
- Capitolo 8 fino al par. 8.3 (incluso)
- Par. 5.2 (fino al problema delle Torri di Hanoi
escluso)
- Materiale distribuito dal docente
- Esercitazione svolta in laboratorio
3. Tipi di dato astratti e strutture dati elementari.
Tipo di dato astratto. Tipi astratti elementari:
liste, pile, code. Implementazione di liste, pile e
code mediante array e strutture collegate. Generalità
sulle classi Java che implementano le liste.
- Capitolo 3 (utile lettura di ripasso)
- Capitolo 4, introduzione, parr. 4.1-4.2, parr. 4.44.5, 4.7
- Documentazione Java sulle classi LinkedList,
ArrayList e Vector
- Materiale distribuito dal docente
4.
Algoritmi
di
ordinamento.
Selection
Sort.
Complessità del Selection Sort. Ordinamento di
oggetti complessi. Quick Sort. Complessità del Quick
Sort nel caso peggiore e nel caso migliore. Alberi di
decisione. Limite inferiore alla complessità degli
algoritmi di ordinamento basati su confronti.
- Capitolo 6, introduzione, parr. 6.1-6.4, 6.6
- Capitolo 7 fino al par. 7.2 (incluso)
- Capitolo 8 fino al par. 8.3 (incluso)
- Materiale distribuito dal docente
5. Alberi. Tipo astratto albero. Rappresentazione di
alberi con strutture collegate. Rappresentazione di
alberi in Java. Algoritmi per la visita di alberi.
Alberi binari. Rappresentazione di alberi binari.
Visita di alberi binari. Rappresentazione di alberi
binari con array e con strutture collegate.
- Capitolo 5, parr. 5.4-5.7
Per
la
rappresentazione
mediante
array:
v.
implementazione degli Heap
- Materiale distribuito dal docente
6. Introduzione ai dizionari. Il tipo astratto
dizionario. Implementazione di dizionari con alberi.
Alberi binari di ricerca. Definizioni e proprietà.
Rappresentazione dei nodi di un albero binario di
ricerca. Operazioni sugli alberi binari di ricerca e
implementazione
di
alberi
binari
di
ricerca.
Algoritmo di ricerca e sua complessità. Inserimento
in un albero binario di ricerca e sua complessità.
Cancellazione da un albero binario di ricerca e sua
complessità.
- Capitolo 12, introduzione e par. 12.1, parr. 12.6,
12.7 (non le dimostrazioni), 12.8, 12.9 (solo
cancellazione)
- Materiale distribuito dal docente
- Esercitazione svolta in laboratorio
7.
Dizionari
e
strutture
dati
bilanciate.
Bilanciamento. Bilanciamento perfetto e bilanciamento
in altezza, fattore di bilanciamento. Cenno agli
alberi Alberi AVL. Calcolo dell'altezza di alberi
bilanciati (binari e k-ari).
- Capitolo 13, introduzione
- Materiale distribuito dal docente
8. Dizionari su memoria secondaria e alberi B.
Dizionari su memoria secondaria. Modello di costo. Btree: definizioni e proprietà. Calcolo dell’altezza
di un B-tree nel caso migliore e peggiore. Ricerca in
un B-tree.
- Capitolo 16, introduzione, par. 16.2, par. 16.3
(solo definizione di albero B, ricerca e proprieta'
16.2)
- Materiale distribuito dal docente
9. Hashing. Definizioni. Tabelle hash. Indirizzamento
diretto. Funzioni hash perfette. Funzioni hash non
perfette e collisioni. Requisiti delle funzioni hash.
Tipi di funzioni hash. Risoluzione delle collisioni.
Concatenazione e indirizzamento aperto.
- Capitolo 14, parr. 14.1, 14.2 (fino alla proprieta'
14.2 esclusa), 14.3 (saltare la proprieta' 14.3),
14.4 fino alla proprieta' 14.4 esclusa, 14.5 fino
alla fine di pagina 644
- Materiale distribuito dal docente
- Esercitazione svolta in laboratorio
10. Heap. Definizioni e proprietà. Heap minimale e
massimale. Operazioni sugli heap. Rappresentazione di
heap. Rappresentazione con array. Algoritmi su heap:
estrazione del massimo, cancellazione del massimo,
inserimento, conversione di una array in un heap.
Heap Sort.
- Capitolo 9, introduzione, 9.1-9.3, 9.4 fino alla
proprieta' 9.6 (esclusa)
- Materiale distribuito dal docente
11. Grafi. Definizioni. Rappresentazione di grafi con
liste di adiacenza, matrici di incidenza, matrici di
adiacenza.
Vantaggi
e
svantaggi
delle
diverse
rappresentazioni. Rappresentazione di grafi in Java.
Visita adi un grafo. Visita in profondità e sua
implementazione.
Visita
in
ampiezza
e
sua
implementazione. Il problema dei cammini minimi.
Proprietà elementari dei cammini minimi. Algoritmo di
Dijkstra e sua complessita'.
- Capitolo 5, parr. 5.4 e 5.8
- Capitolo aggiuntivo in Inglese messo a disposizione
da Pearson's Education
- Materiale distribuito dal docente
Scarica