~~NOTOC~~ ====== Algorithmique (AL5) ====== ===== Description ===== De nombreux problèmes pratiques peuvent être modélisés à l'aide de graphes, et leur résolution nécessite des algorithmes de graphes. Ce cours explore les algorithmes pour les problèmes les plus classiques, tels que les parcours de graphes, le plus court chemin, les arbres couvrants de poids minimum, et le flot maximum. ===== Syllabus ===== ==== Sujets centraux ==== - Introduction * Graphes : définitions de base * Représentation matricielle et par listes * Lemme de la poignée de main * Connexité * Arbres * Rappels sur la complexité algorithmique, notation grand O, Ω et Θ - Parcours de graphes * Parcours en largeur (BFS) * Parcours en profondeur (DFS) * Graphes orientés acycliques (DAG) * Tri topologique * Composantes fortement connexes - Plus court chemin * Algorithme de Dijkstra * Algorithme de Bellman--Ford * Algorithme de Floyd--Warshall * Algorithme de Johnson - Arbres couvrants de poids minimum * Algorithme de Kruskal * Implementation de l'algorithme de Kruskal avec la structure de données union-find * Algorithme de Prim * Implementation de l'algorithme de Prim avec les files de priorité - Flot max, coupe min * Algorithme de Ford--Fulkerson * Algorithme de Edmonds--Karp * Couplages dans les graphes bipartis : théorèmes de König et de Hall - Algorithme d'approximation * Algorithme d'approximation pour vertex cover * Graphes eulériens, algorithme de Hierholzer * Problème du voyageur de commerce (TSP) : algorithme de Christofides ==== Sujets potentiellement traités ==== -- Coloration * Algorithme glouton de coloration * Graphes d'intervalles ===== Pré-requis =====