- Large-Scale Graph Algorithms
- Summary
Course Syllabus
Obiettivi
Al termine dell’insegnamento, gli studenti avranno conoscenze nel campo della teoria dei grafi ed in particolare su algoritmi efficienti per alcuni problemi fondamentali. Inoltre avranno conoscenze relative a complessità computazionale e alle tecniche algoritmiche associate, e competenze relative all’implementazione di algoritmi efficienti, anche euristici, su grafi di grandi dimensioni.
Conoscenza e comprensione
Questo insegnamento permetterà di comprendere come rappresentare grafi, anche di grandi dimensioni. Inoltre gli studenti acquisiranno conoscenza dei principali algoritmi su grafi, incluse alcune tecniche euristiche necessarie per trattare grafi di grandi dimensioni.
Capacità di applicare conoscenza e comprensione
Alla fine dell'insegnamento gli studenti saranno in grado di analizzare un problema concreto, modellarlo come problema computazionale su grafi, selezionare la tecnica algoritmica più adatta per la soluzione del problema.
Contenuti sintetici
Introduzione alla teoria dei grafi. Problemi computazionali su grafi. Complessità computazionale. Tecniche di disegno di euristiche per grafi di grandi dimensioni.
Programma esteso
- Grafi: definizioni fondamentali. Rappresentazioni di grafi: liste di adiacenza, matrice di adiacenza. Strutture dati efficienti e succinte per le rappresentazioni.
Problemi su grafi
- Calcolo delle componenti connesse, biconnesse, triconnesse
- Matching
- Copertura minima, cricca massima, insieme indipendente massimo
- Cammino di Eulero, cammino Hamiltoniano e TSP
- Colorazione di grafi
- Isomorfismo di grafi
- Compressione di grafi
Tecniche euristiche e complessità computazionale
- Complessità parametrica. Algoritmi per la copertura di grafi
- Risolutori SAT
- Algoritmo di Kernighan-Lin
- Simulated Annealing
- Complessità di approssimazione.
- Particle Swarm Optimization
- Algoritmi Streaming
- Complessità Fine-grained
- Ant Colony
Prerequisiti
Teoria della computazione
Modalità didattica
Lezioni frontali
Materiale didattico
Il testo utilizzato è Graph Algorithms, una collezione curata di articoli di Wikipedia.
I docenti non distribuiranno il materiale utilizzato in classe. Gli studenti sono incoraggiati a seguire le lezioni e prendere appunti.
Periodo di erogazione dell'insegnamento
Primo semestre
Modalità di verifica del profitto e valutazione
L'esame consiste in una prova orale con domande aperte su tutti gli argomenti trattati nel corso.
La prova verrà valutata principalmente in base alla correttezza e alla completezza delle risposte fornite. Criteri secondari di valutazione saranno la capacità di contestualizzare le risposte rispetto agli altri argomenti trattati nell'insegnamento e all'utilizzo corretto dei formalismi.
Non sono previste prove in itinere.
Orario di ricevimento
Su appuntamento con i docenti
- https://www.unimib.it/gianluca-della-vedova
- claudio.zandron@unimib.it
Aims
The course will present some efficient algorithms concerning fundamental problems in graph theory.
Moreover, we will discuss some computational complexity aspects and the related algorithm design techniques, as well as techniques for implementing efficient (and heuristic) algorithms on large -scale graphs.
Knowledge and understanding
Student will learn how to represent standard graphs and large-dimension graphs, and they will learn some fundamental graph algorithms and heuristics techniques to tackle computational problems on small and large graphs.
Applying knowledge and understanding
At the end of the course, students will be able to model a real-world problem in terms of a graph problem, and to design specific algorithms to efficiently solve the problem.
Contents
Graph theory fundamentals. Computational problems on graphs. Computational complexity. Heuristic approaches on large-scale graphs.
Detailed program
- Graph: basic notions. Representation of graphs: adjacency lists, adjacency matrices. Efficient and succint data structures for graph representation.
Graph problems
- Connected components, bi- and tri- connected components
- Graph matching
- Minimal cover, maximum clique, maximum independent set
- Eulerian path, Hamiltonian path, and Travelling Salesman Problem (TSP)
- Graphg coloring
- Graph isomorphism
- Graph compression
Heuristic techniques and computational complexity
- Parametric complexity. Graph cover algorithms
- SAT solvers
- Kernighan-Lin algorithm
- Simulated Annealing
- Approximation complexity
- Particle Swarm Optimization
- Streaming Algorithms
- Fine-grained complexity
- Ant Colony
Prerequisites
Theory of computation
Teaching form
Lectures
Textbook and teaching resource
The text we will be using is Graph Algorithms, a collection of readings compiled from Wikipedia.
Lecture materials will not be distributed to the class; instead, you are encouraged to attend the lecture yourself and take your own notes.
Semester
First semester
Assessment method
The exam consists of an oral exam, with open-ended questions over all topics of the course.
The main criteria to evaluate the exam are correctness and completeness of the answers. Secondary criteria are the correct use of formal aspects and the ability to discuss how the answer is related to different course topics.
Office hours
Office hourse are online.
You can book a meeting at:
- https://www.unimib.it/gianluca-della-vedova
- claudio.zandron@unimib.it
Key information
Staff
-
Gianluca Della Vedova
-
Claudio Zandron