Salta ai contenuti. | Salta alla navigazione

Strumenti personali

TEORIA DI ALGORITMI E STRUTTURE DATI

Anno accademico e docente
Non hai trovato la Scheda dell'insegnamento riferita a un anno accademico precedente? Ecco come fare >>
English course description
Anno accademico
2022/2023
Docente
GUIDO SCIAVICCO
Crediti formativi
6
Periodo didattico
Primo Semestre
SSD
INF/01

Obiettivi formativi

Il corso introduce le principali metodologie per la specifica, l'analisi e la realizzazione di algoritmi e strutture dati statiche e dinamiche.

Argomenti trattati (Conoscenze):

- introduzione all'analisi di algoritmi
- notazione O, Theta, Omega, per gli ordini di grandezza delle funzioni di complessitá
- algoritmi ricorsivi, ricorrenze e soluzione di ricorrenze con diversi metodi
- algoritmi di ordinamento (InsertionSort,SelectionSort,Mergesort,Quicksort,HeapSort)
- algoritmi di ordinamento lineare (es.: CountingSort)
- strutture dati elementari come liste e code
- tabelle hash
- alberi binari di ricerca ed operazioni su di essi
- alberi binari bilanciati (Red-Black trees) ed operazioni su di essi
- alberi B ed operazioni su di essi
- grafi orientati, non orientati, pesati e non pesati, visita su grafi in ampiezza e in profonditá, ordinamento topologico, ciclicità, alberi di copertura minimi, percorsi minimi




Al termine del corso lo studente sará capace di (Abilitá):



- Analizzare un algoritmo per la risoluzione di un problema in termini della sua complessitá asintotica, e confrontare due soluzioni diverse

- Riconoscere un problema di ordinamento e scegliere o progettare il miglior algoritmo di ordinamento per risolverlo

- Progettare ed analizzare una struttura dati elementare o non elementare a supporto di un algoritmo, offrendo opportuni metodi di accesso ed analizzandone la complessitá asintotica

- Progettare ed analizzare una struttura dati di tipo albero, offrendo opportuni metodi di accesso ed analizzandone la complessitá asintotica

- Progettare ed analizzare una struttura dati di tipo grafo, offrendo opportuni metodi di accesso ed analizzandone la complessitá asintotica



Prerequisiti

Matematica elementare. Aver superato con successo l'esame di Programmazione.

Contenuti del corso

1.Presentazione, definizioni essenziali, struttura del corso, struttura dell'esame. (1 ora)

2.Ordini di grandezza e soluzione di ricorrenze. (8 ore)

3.Strutture dati elementari: code, pile, code di priorità. (6 ore)

4.Problema dell'ordinamento: algoritmi elementari, algoritmi non elementari, algoritmi per ordinamento linare, limiti dell'ordinamento basato su confronti. (18 ore)

5.Strutture dati non ad albero: liste, tavole hash, strutture per insiemi disgiunti. (8 ore)

6.Strutture dati ad albero: alberi binari di ricerca, alberi binari auto-bilanciati (red black), alberi B (18 ore)

7.Grafi: visite, ordinamento topologico, componenti fortemente connesse, alberi di copertura minimi, percorsi minimi (18 ore)



Metodi didattici

In caso di ritorno alla normalità didattica, le lezioni saranno frontali, con 5 ore settimanali di teoria/esercizi. Nella versione di questo corso per la Laurea in Matematica, non è previsto laboratorio. In caso di ulteroriore proseguimento dell'emergenza sanitaria, il corso sarà costituito dalle lezioni presenti sul canale YouTube con incontri periodici telematici.

Modalità di verifica dell'apprendimento

Esame scritto tipo test. Un esame scritto é composto da 20 domande, ognuna con 4 possibili risposte, di peso uguale e di valore 1.5 trentesimi ciascuna. Ogni 5 errori o domande senza risposta si conta -1.5. Il massimo punteggio raggiungibile é 30/30; ulteriori 2 trentesimi vengono assegnati con lo svolgimento di esercizi a consegna libera. La somma dei due voti é il voto finale a meno di un eventuale orale di integrazione, deciso dal docente, che puó variare il voto finale in minima parte - massimo 3 trentesimi.

Le domande nel test - con una sola risposta esatta di 4 possibili - variano su tutto il programma e puntano a controllare che gli studenti abbiano raggiunto una conoscenza di tipo:

- base, con domande relative alla conoscenza pura
- applicativo, con domande relative all'esecuzione di algoritmi, il loro comportamento, possibili variazioni, ed uso
- di compresione profonda, con domande relative alla soluzione di problemi piú complessi o che richiedono un certo grado di intuizione.

Testi di riferimento

************
*ATTENZIONE*: le dispense saranno pubblicate sulla piattaforma ClassRoom . Obbligatoria l'iscrizione.

CODICE: gmqon6n
************

1)Introduzione agli algoritmi, 3/ed
Autori: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
ISBN: 9788838665158
Data: Giugno 2010
Pagine: 1030


2)The Algorithm Design Manual, 2nd Edition
Steven Skiena
ISBN: 9781848000698
Pub Date: 2012.

Consigliata la versione originale non tradotta.