GRAFI
Résumé de section
-
Lezione 26: 27/11/25
- Definizione di grafo; terminologia; esempi applicativi
- Concetti fondamentali: cammino, ciclo, grafo connesso, subgraph, spanning subgraph, albero (rooted, free e loro equivalenza), spanning tree/forest.
- Proprietà dei grafi: Proposizioni 14.8, 14.10, 14.11 ed esercizio C-14.34 del testo.
- Rappresentazione di grafi: strutture di base L_E e L_V; liste di adiacenza; matrice di adiacenza.
Lezione 27: 02/12/25
- Visite (traversal): nozione di visita.
- Algoritmo BFS: pseudocodice; esempio; proprietà; analisi di complessità; estensione della visita a tutto il grafo.
Lezione 28: 03/12/25
- Applicazioni della BFS: connettività, spanning tree, cammini minimi, ciclicità.
- Algoritmo DFS: pseudocodice; esempio; proprietà; analisi di complessità.
Lezione 29: 04/12/25- Algoritmo DFS: proprietà; analisi di complessità.
- Esercizi: algoritmo ReachablePairs (Slide 82 - Parte 1); MaxSeparation (Slide 24 e 90 - Parte 1); IsBipartite (Slide 90, secondo esercizio - Parte 1).
Lezione 30: 09/12/25- Esercizi: algoritmo IsBipartite (Slide 90, secondo esercizio - Parte 1); esercizio dalla Slide 87 - Parte 1.
- Cammini minimi pesati: definizioni di grafo pesato, lunghezza di un cammino, e cammino minimo; proprietà dei cammini minimi;
- Problema dei Single-Source Shortest Paths (SSSP).
- Algoritmo di Dijkstra: strategia ad alto livello e pseudocodice; esempio.
Lezione 31: 10/12/25- Algoritmo di Dijkstra: analisi di correttezza; analisi di complessità implementando Q con Heap, Lista (e con Fibonacci Heap ma senza prova).
- Grafi Diretti: terminologia (grado uscente/entrante, cammino/ciclo diretto, vertici raggiungibili da un vertice v, versione non diretta di un grafo diretto, nozione di grafo fortemente/debolmente connesso); proprietà relative alla somma dei gradi uscenti/entranti; rappresentazione tramite liste di adiacenza.
- BFS e DFS di grafi diretti: esempi
Lezione 32: 11/12/25- BFS e DFS di grafi diretti: complessità e proprietà.
- Esercizio: identificazione dei BACK EDGE nella DFS diretta (Slide 67 - Parte 2).
- Grafi diretti aciclici (DAG=Directed Acyclic Graph): definizione e ordinamento topologico.
- Algoritmo TopologicalSort(G): esempio; analisi di di complessità.
- Esercizio: identificazione di un ciclo in un grafo diretto (Primo esercizio di Slide 75 - Parte 2)
Lezione 33: 16/12/25- Esercizi: modifica di ShortestPaths per grafi non connessi (Slide 42 - Parte 2); trasformazione di un grafo non diretto in un DAG (terzo esercizio Slide 92 - Parte 2); scheduling di task tramite TopologicalSort (Slide 93 - Parte 2).
Materiale:
- Slide sui Grafi - Parte 1 (v. 09/12/25)
- Slide sui Grafi - Parte 2 (v. 16/12/25)
- Slide di Esercizi sui Grafi - Parte 1 (v. 09/12/25)
- Slide di Esercizi sui Grafi - Parte 2 (v. 16/12/25)
- Esercizi svolti sui Grafi (v. 22/12/25)
- Libro di testo [GTG14]: Ch. 14 (Par. 1, 2, 3, 5, 6)
- Esercizi consigliati dal libro di testo: R-14.1; R-14.2; R-14.14; C-14.34; C-14.37; C-14.40; C-14.46; C-14.47; C-14.49; C-14.52; C-14.53; C-14.56; C-14.5