Corso Vittorio Emanuele II, 39 - Roma 0669207671

Ingénierie Informatique (Academic Year 2018/2019) - Ingegneria Informatica (ad esaurimento)

Algoritmi e programmazione avanzata



Slides

Leçon n. 1: C avanzato
   Introduzione al corso

   L'ambiente di sviluppo

   I puntatori

   Aritmetica dei puntatori

   Puntatori e vettori

   Puntatori e struct
Vai alla slide della lezione Massimo Poncino
Leçon n. 2: Allocazione dinamica della memoria
   Allocazione dinamica della memoria

   Funzione malloc

   Funzione free

   Funzioni calloc, realloc

   Modello di memoria

   Problemi di uso errato
Vai alla slide della lezione Massimo Poncino
Leçon n. 3: Ricorsione e programmi ricorsivi
   Definizione e motivazioni

   Analisi di funzioni ricorsive

   Ricorsione ed efficienza
Vai alla slide della lezione Massimo Poncino
Leçon n. 4: Programmazione modulare
   Gestione di progetti

   Regole di visibilità

   File di intestazione
Vai alla slide della lezione Massimo Poncino
Leçon n. 5: Liste lineari I
   Proprietà e limitazioni della rappresentazione tramite vettori

   Liste lineari

   Implementazione

   Varianti di liste
Vai alla slide della lezione Massimo Poncino
Leçon n. 6: Liste lineari II
   Primitive di gestione delle liste

   Implementazione in C

   Inizializzazione

   Ricerca

   Visita

   Inserimento

   Cancellazione
Vai alla slide della lezione Massimo Poncino
Leçon n. 7: Tipo di dato astratti I - pile e code
   Tipi di dato astratti

   L'ADT pila (stack)

   L'ADT coda
Vai alla slide della lezione Massimo Poncino
Leçon n. 8: Tipo di dato astratti II - code a priorità e alberi
   L'ADT coda a priorità

   Heap

   L'ADT Albero
Vai alla slide della lezione Massimo Poncino
Leçon n. 9: Algoritmi - introduzione e definizioni
   Concetto di algoritmo

   Aspetti legati agli algoritmi

   Progetto di algoritmi

   Analisi di algoritmi

   Analisi di complessità
Vai alla slide della lezione Massimo Poncino
Leçon n. 10: Analisi di complessità
   Proprietà della notazione asintotica

   Dipendenza dagli input

   Esempio: ordinamento per inserimento

   Esempio: ricerca binaria
Vai alla slide della lezione Massimo Poncino
Leçon n. 11: Analisi di programmi ricorsivi: ricorrenze
   Ricorrenze

   Serie e sommatorie

   Soluzioni di ricorrenze

   Metodo della sostituzione

   Metodo iterativo

   Metodo principale
Vai alla slide della lezione Massimo Poncino
Leçon n. 12: Algoritmi di ordinamento I
   Definizioni e assunzioni

   Classi di algoritmi di ordinamento

   Heapsort

   Heapsort: esempio
Vai alla slide della lezione Massimo Poncino
Leçon n. 13: Algoritmi di ordinamento II
   Quicksort

   Quicksort: esempio

   Analisi del quicksort

   Limiti teorici
Vai alla slide della lezione Massimo Poncino
Leçon n. 14: Algoritmi di ordinamento III
   Algoritmi di ordinamento con complessità lineare

   Counting sort

   Counting sort: esempio

   Stabilità di un algoritmo di ordinamento

   Conclusioni sull'ordinamento
Vai alla slide della lezione Massimo Poncino
Leçon n. 15: Insiemi dinamici e dizionari
   Insiemi dinamici e dizionari

   Implementazione dei dizionari

   Alberi binari di ricerca (BST)

   Visite di un BST

   Ricerca in un BST
Vai alla slide della lezione Massimo Poncino
Leçon n. 16: Alberi binari di ricerca
   Inserimento in un BST

   Cancellazione in un BST

   Caso peggiore in un BST
Vai alla slide della lezione Massimo Poncino
Leçon n. 17: Tabelle Hash
   Tabelle ad accesso diretto

   Tabelle hash

   Funzioni di hash

   Gestione delle collisioni

   Concatenazione

   Indirizziamento aperto
Vai alla slide della lezione Massimo Poncino
Leçon n. 18: Paradigmi algoritmici: Programmazione dinamica
   Progetto di un algoritmo

   Programmazione dinamica

   Un esempio: il cambio di monete
Vai alla slide della lezione Massimo Poncino
Leçon n. 19: Paradigmi algoritmici II: Il paradigma Greedy
   Il paradigma greedy

   Esempi di algoritmi greedy

   Programmazione dinamica e algoritmi greedy
Vai alla slide della lezione Massimo Poncino
Leçon n. 20: Paradigmi algoritmici III: Backtracking
   Paradigmi basati su ricerca

   Spazio delle soluzioni

   Backtracking

   Esempio
Vai alla slide della lezione Massimo Poncino
Leçon n. 21: I Grafi - Prima parte
   I grafi

   Definizioni e proprietà

   Rappresentazioni dei grafi
Vai alla slide della lezione Massimo Poncino
Leçon n. 22: I Grafi - Seconda parte
   L'ADT grafo

   Visite di grafi

   Algoritmo di visita generico
Vai alla slide della lezione Massimo Poncino
Leçon n. 23: Visite di grafi
   Visita in ampiezza

   Visita in profondità

   Etichette temporali

   Applicazioni
Vai alla slide della lezione Massimo Poncino
Leçon n. 24: Alberi di copertura minimi
   Alberi di copertura minimi

   Algoritmo generico

   Definizioni

   Algoritmo di Kruskal
Vai alla slide della lezione Massimo Poncino
Leçon n. 25: Percorsi minimi in un grafo
   Definizioni e proprietà

   Rilassamento

   Algoritmo di Dijkstra

   Algoritmo di Bellman-Ford
Vai alla slide della lezione Massimo Poncino
Leçon n. 26: Teoria della complessità
   Problemi intrattabili

   Problemi di decisione

   Nondeterminismo

   Problemi P e NP
Vai alla slide della lezione Massimo Poncino
Leçon n. 27: NP completezza e algoritmi approssimati
   Riducibilità

   Problemi NP-completi e NP-hard

   Problemi NP-completi classici

   Algoritmi approssimati ed euristiche
Vai alla slide della lezione Massimo Poncino