IN440 - Ottimizzazione Combinatoria

Codice: 20410626

Scheda insegnamento

Anno Accademico di erogazione
2026/2027
Corso di studi
Matematica
Periodo di erogazione
Secondo semestre
CFU
9 CFU
Lingua
Italiano
SSD
MATH-06/A

Scopri il programma didattico

Programma, testi adottati e modalità d’esame sono quelli pubblicati dai docenti per l’anno accademico 2026/2027. L’insegnamento è diviso in canali: ogni canale ha il suo programma.

Docente
Marco Liverani
Curriculum
Teorico
Anno di corso
1
Periodo
Secondo semestre
Ore
72
CUIN
260004510

Programma

Cenni sulla teoria dei grafi: grafo, grafo orientato, albero, albero libero e con radice, connessione, connessione forte, aciclicità; isomorfismi tra grafi, planarità, Teorema di Kuratowski, formula di Eulero; colorazione di grafi, cammini euleriani, circuiti hamiltoniani.
Richiami sulla teoria degli algoritmi e sulla complessità computazionale: classi di complessità, la classe dei problemi NP, NP-completi, NP-hard. Problemi di decisione, di ricerca, di enumerazione e di ottimizzazione; problemi di programmazione non lineare, di programmazione convessa, di programmazione lineare e di programmazione lineare intera; problemi di ottimizzazione combinatoria. Richiami sugli elementi di calcolo combinatorio.
Problemi di ottimizzazione su grafi: visita di grafi, verifica di proprietà fondamentali, connessione, presenza di cicli, componenti fortemente connesse, ordinamento topologico di un grafo. Albero ricoprente di costo minimo (algoritmi di Kruskal e di Prim). Cammini di costo minimo (algoritmi di Dijkstra e di Bellman-Ford, tecnica della programmazione dinamica, algoritmo di Floyd-Warshall, calcolo della chiusura transitiva di un grafo). Reti di flusso e calcolo del massimo flusso su una rete, teorema del flusso massimo e del taglio minimo, algoritmo di Ford-Fulkerson, algoritmo di Edmonds-Karp, algoritmi di preflusso, algoritmi "push-relabel".
Problemi di partizionamento di grafi, alberi e cammini in componenti connesse, funzioni obiettivo e tecniche algoritmiche.
Problema del matrimonio stabile, generalizzazioni e applicazioni del problema, algoritmo di Gale e Shapley.
Codici di Huffman.
Laboratorio di programmazione per l'implementazione degli algoritmi in linguaggio Python e con l'ausilio del software Mathematica.

Prerequisiti

Competenze di teoria degli algoritmi e programmazione di base (IN110 - Algoritmi e strutture dati)

Testi adottati

T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, "Introduzione agli algoritmi", McGraw–Hill (Quarta edizione)

Dispense e altro materiale didattico fornito dal docente e reso disponibile sul sito web del corso (http://www.mat.uniroma3.it/users/liverani/IN440) e sulla piattaforma Microsoft Teams

  • T.H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduzione agli algoritmi, Mc Graw-Hill, 2023, ISBN 978-88-386-5621-7
  • C.H. Papadimitriou, K. Steiglitz, Combinatorial Optimization - Algorithms and Complexity, Dover Publications Inc., 1998, ISBN 0-486-40258-4

Bibliografia di riferimento

C. H. Papadimitriou, K. Steiglitz, "Combinatorial Optimization. Algorithms and Complexity". Dover Publications, (1998).
R. J. Trudeau, "Introduction to Graph Theory". Dover Publications, (1993).
R. Diestel, "Graph Theory". Springer, (2000).

Modalità di erogazione

Il corso si svolge in presenza in modalità tradizionale in aula e nel laboratorio informatico.

Modalità di frequenza

Si suggerisce di frequentare le lezioni in aula (due volte a settimana) e nel laboratorio informatico (una volta a settimana).

Modalità di valutazione

L’esame orale, in cui saranno discussi alcuni degli algoritmi trattati nel corso è preceduto dalla presentazione e dalla discussione di una tesina scritta, su un argomento assegnato dal docente, in cui è richiesto, tra l’altro, di implementare in linguaggio Python gli algoritmi presenti nel materiale fornito dal docente per la preparazione della tesina stessa.

Prove previste

  • Prova orale
  • Valutazione di un progetto

Curriculum
Teorico
Anno di corso
1
Periodo
Secondo semestre
Ore
72
CUIN
260004510

Il docente non ha ancora pubblicato il programma di questo canale.

Docente
Marco Liverani
Curriculum
Crittografia
Anno di corso
1
Periodo
Secondo semestre
Ore
72
CUIN
260013675

Programma

Cenni sulla teoria dei grafi: grafo, grafo orientato, albero, albero libero e con radice, connessione, connessione forte, aciclicità; isomorfismi tra grafi, planarità, Teorema di Kuratowski, formula di Eulero; colorazione di grafi, cammini euleriani, circuiti hamiltoniani.
Richiami sulla teoria degli algoritmi e sulla complessità computazionale: classi di complessità, la classe dei problemi NP, NP-completi, NP-hard. Problemi di decisione, di ricerca, di enumerazione e di ottimizzazione; problemi di programmazione non lineare, di programmazione convessa, di programmazione lineare e di programmazione lineare intera; problemi di ottimizzazione combinatoria. Richiami sugli elementi di calcolo combinatorio.
Problemi di ottimizzazione su grafi: visita di grafi, verifica di proprietà fondamentali, connessione, presenza di cicli, componenti fortemente connesse, ordinamento topologico di un grafo. Albero ricoprente di costo minimo (algoritmi di Kruskal e di Prim). Cammini di costo minimo (algoritmi di Dijkstra e di Bellman-Ford, tecnica della programmazione dinamica, algoritmo di Floyd-Warshall, calcolo della chiusura transitiva di un grafo). Reti di flusso e calcolo del massimo flusso su una rete, teorema del flusso massimo e del taglio minimo, algoritmo di Ford-Fulkerson, algoritmo di Edmonds-Karp, algoritmi di preflusso, algoritmi "push-relabel".
Problemi di partizionamento di grafi, alberi e cammini in componenti connesse, funzioni obiettivo e tecniche algoritmiche.
Problema del matrimonio stabile, generalizzazioni e applicazioni del problema, algoritmo di Gale e Shapley.
Codici di Huffman.
Laboratorio di programmazione per l'implementazione degli algoritmi in linguaggio Python e con l'ausilio del software Mathematica.

Prerequisiti

Competenze di teoria degli algoritmi e programmazione di base (IN110 - Algoritmi e strutture dati)

Testi adottati

T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, "Introduzione agli algoritmi", McGraw–Hill (Quarta edizione)

Dispense e altro materiale didattico fornito dal docente e reso disponibile sul sito web del corso (http://www.mat.uniroma3.it/users/liverani/IN440) e sulla piattaforma Microsoft Teams

  • T.H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduzione agli algoritmi, Mc Graw-Hill, 2023, ISBN 978-88-386-5621-7
  • C.H. Papadimitriou, K. Steiglitz, Combinatorial Optimization - Algorithms and Complexity, Dover Publications Inc., 1998, ISBN 0-486-40258-4

Bibliografia di riferimento

C. H. Papadimitriou, K. Steiglitz, "Combinatorial Optimization. Algorithms and Complexity". Dover Publications, (1998).
R. J. Trudeau, "Introduction to Graph Theory". Dover Publications, (1993).
R. Diestel, "Graph Theory". Springer, (2000).

Modalità di erogazione

Il corso si svolge in presenza in modalità tradizionale in aula e nel laboratorio informatico.

Modalità di frequenza

Si suggerisce di frequentare le lezioni in aula (due volte a settimana) e nel laboratorio informatico (una volta a settimana).

Modalità di valutazione

L’esame orale, in cui saranno discussi alcuni degli algoritmi trattati nel corso è preceduto dalla presentazione e dalla discussione di una tesina scritta, su un argomento assegnato dal docente, in cui è richiesto, tra l’altro, di implementare in linguaggio Python gli algoritmi presenti nel materiale fornito dal docente per la preparazione della tesina stessa.

Prove previste

  • Prova orale
  • Valutazione di un progetto

Curriculum
Crittografia
Anno di corso
1
Periodo
Secondo semestre
Ore
72
CUIN
260013675

Il docente non ha ancora pubblicato il programma di questo canale.

Docente
Marco Liverani
Curriculum
Matematica applicata e computazionale
Anno di corso
1
Periodo
Secondo semestre
Ore
72
CUIN
260004569

Programma

Cenni sulla teoria dei grafi: grafo, grafo orientato, albero, albero libero e con radice, connessione, connessione forte, aciclicità; isomorfismi tra grafi, planarità, Teorema di Kuratowski, formula di Eulero; colorazione di grafi, cammini euleriani, circuiti hamiltoniani.
Richiami sulla teoria degli algoritmi e sulla complessità computazionale: classi di complessità, la classe dei problemi NP, NP-completi, NP-hard. Problemi di decisione, di ricerca, di enumerazione e di ottimizzazione; problemi di programmazione non lineare, di programmazione convessa, di programmazione lineare e di programmazione lineare intera; problemi di ottimizzazione combinatoria. Richiami sugli elementi di calcolo combinatorio.
Problemi di ottimizzazione su grafi: visita di grafi, verifica di proprietà fondamentali, connessione, presenza di cicli, componenti fortemente connesse, ordinamento topologico di un grafo. Albero ricoprente di costo minimo (algoritmi di Kruskal e di Prim). Cammini di costo minimo (algoritmi di Dijkstra e di Bellman-Ford, tecnica della programmazione dinamica, algoritmo di Floyd-Warshall, calcolo della chiusura transitiva di un grafo). Reti di flusso e calcolo del massimo flusso su una rete, teorema del flusso massimo e del taglio minimo, algoritmo di Ford-Fulkerson, algoritmo di Edmonds-Karp, algoritmi di preflusso, algoritmi "push-relabel".
Problemi di partizionamento di grafi, alberi e cammini in componenti connesse, funzioni obiettivo e tecniche algoritmiche.
Problema del matrimonio stabile, generalizzazioni e applicazioni del problema, algoritmo di Gale e Shapley.
Codici di Huffman.
Laboratorio di programmazione per l'implementazione degli algoritmi in linguaggio Python e con l'ausilio del software Mathematica.

Prerequisiti

Competenze di teoria degli algoritmi e programmazione di base (IN110 - Algoritmi e strutture dati)

Testi adottati

T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, "Introduzione agli algoritmi", McGraw–Hill (Quarta edizione)

Dispense e altro materiale didattico fornito dal docente e reso disponibile sul sito web del corso (http://www.mat.uniroma3.it/users/liverani/IN440) e sulla piattaforma Microsoft Teams

  • T.H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduzione agli algoritmi, Mc Graw-Hill, 2023, ISBN 978-88-386-5621-7
  • C.H. Papadimitriou, K. Steiglitz, Combinatorial Optimization - Algorithms and Complexity, Dover Publications Inc., 1998, ISBN 0-486-40258-4

Bibliografia di riferimento

C. H. Papadimitriou, K. Steiglitz, "Combinatorial Optimization. Algorithms and Complexity". Dover Publications, (1998).
R. J. Trudeau, "Introduction to Graph Theory". Dover Publications, (1993).
R. Diestel, "Graph Theory". Springer, (2000).

Modalità di erogazione

Il corso si svolge in presenza in modalità tradizionale in aula e nel laboratorio informatico.

Modalità di frequenza

Si suggerisce di frequentare le lezioni in aula (due volte a settimana) e nel laboratorio informatico (una volta a settimana).

Modalità di valutazione

L’esame orale, in cui saranno discussi alcuni degli algoritmi trattati nel corso è preceduto dalla presentazione e dalla discussione di una tesina scritta, su un argomento assegnato dal docente, in cui è richiesto, tra l’altro, di implementare in linguaggio Python gli algoritmi presenti nel materiale fornito dal docente per la preparazione della tesina stessa.

Prove previste

  • Prova orale
  • Valutazione di un progetto

Curriculum
Matematica applicata e computazionale
Anno di corso
1
Periodo
Secondo semestre
Ore
72
CUIN
260004569

Il docente non ha ancora pubblicato il programma di questo canale.

Esplora gli obiettivi dell’insegnamento

Ambito disciplinare: Formazione matematica modellistico-computazionale avanzata

Acquisire competenze sulle principali tecniche di risoluzione per problemi di ottimizzazione combinatoria; approfondire le competenze sulla teoria dei grafi; acquisire competenze tecniche avanzate per la progettazione, l'analisi e l'implementazione al calcolatore di algoritmi per la risoluzione di problemi di ottimizzazione su grafi, alberi e reti di flusso.

Risultati di apprendimento attesi — Marco Liverani

Acquisire competenze sulle principali tecniche di risoluzione per problemi di ottimizzazione combinatoria; approfondire le competenze sulla teoria dei grafi; acquisire competenze tecniche avanzate per la progettazione, l'analisi e l'implementazione al calcolatore di algoritmi per la risoluzione di problemi di ottimizzazione su grafi, alberi e reti di flusso.

Risultati di apprendimento attesi — Marco Liverani

Acquisire competenze sulle principali tecniche di risoluzione per problemi di ottimizzazione combinatoria; approfondire le competenze sulla teoria dei grafi; acquisire competenze tecniche avanzate per la progettazione, l'analisi e l'implementazione al calcolatore di algoritmi per la risoluzione di problemi di ottimizzazione su grafi, alberi e reti di flusso.

Risultati di apprendimento attesi — Marco Liverani

Acquisire competenze sulle principali tecniche di risoluzione per problemi di ottimizzazione combinatoria; approfondire le competenze sulla teoria dei grafi; acquisire competenze tecniche avanzate per la progettazione, l'analisi e l'implementazione al calcolatore di algoritmi per la risoluzione di problemi di ottimizzazione su grafi, alberi e reti di flusso.

Esempi di domande d’esame

Marco Liverani

Per la prova orale si tratta di rispondere a quesiti di questo genere:
- descrivere la strategia risolutiva del problema del massimo flusso su una rete adottata dall'algoritmo push-relabel, spiegare quali strutture dati vengono adottate, illustrare lo pseudo-codice dell'algoritmo e argomentare la complessità computazionale dell'algoritmo stesso
- presentare in termini generali in cosa consiste un problema di ottimizzazione combinatoria, specificando cosa si intenda per spazio delle soluzioni ammissibili e funzione obiettivo, anche attraverso degli esempi su argomenti presentati nelle lezioni del corso

Marco Liverani

Per la prova orale si tratta di rispondere a quesiti di questo genere:
- descrivere la strategia risolutiva del problema del massimo flusso su una rete adottata dall'algoritmo push-relabel, spiegare quali strutture dati vengono adottate, illustrare lo pseudo-codice dell'algoritmo e argomentare la complessità computazionale dell'algoritmo stesso
- presentare in termini generali in cosa consiste un problema di ottimizzazione combinatoria, specificando cosa si intenda per spazio delle soluzioni ammissibili e funzione obiettivo, anche attraverso degli esempi su argomenti presentati nelle lezioni del corso

Marco Liverani

Per la prova orale si tratta di rispondere a quesiti di questo genere:
- descrivere la strategia risolutiva del problema del massimo flusso su una rete adottata dall'algoritmo push-relabel, spiegare quali strutture dati vengono adottate, illustrare lo pseudo-codice dell'algoritmo e argomentare la complessità computazionale dell'algoritmo stesso
- presentare in termini generali in cosa consiste un problema di ottimizzazione combinatoria, specificando cosa si intenda per spazio delle soluzioni ammissibili e funzione obiettivo, anche attraverso degli esempi su argomenti presentati nelle lezioni del corso

I corsi che comprendono questo insegnamento nell’A.A. 2026/2027

Matematica e Fisica

Matematica

Cod 198373

  • Laurea magistrale
  • 2 anni
  • 120 CFU
  • LM-40 R
API