Aide-mémoire Graphes
Les définitions, les théorèmes de base et les algorithmes à connaître, avec leurs conditions et leurs pièges.
Les mots
| Terme | Définition |
|---|---|
| Graphe | sommets et arêtes , des paires de sommets. Simple : ni boucle, ni arête multiple. |
| Orienté | Les arêtes ont un sens : ce sont des arcs . |
| Pondéré | Chaque arête porte un poids : distance, coût, durée, capacité. |
| Voisins | Deux sommets reliés par une arête (adjacents). |
| Degré | Nombre d'arêtes qui touchent . En orienté : arcs sortants, entrants. |
| Chemin | Sommets reliés deux à deux par des arêtes (des arcs dans le bon sens, en orienté). Longueur : nombre d'arêtes ; poids : somme de leurs poids. |
| Cycle, circuit | Chemin fermé qui ne repasse par aucune arête ; on dit circuit en orienté. |
| Distance | Longueur, ou poids, d'un plus court chemin de à . |
| Connexe | Un chemin relie toute paire de sommets ; les morceaux sont les composantes connexes. |
| Fortement connexe | En orienté : un chemin de à et de à , pour toute paire. |
| Sous-graphe induit | Des sommets choisis, et toutes les arêtes qui les relient. |
| Clique | Sommets deux à deux voisins ; est la taille de la plus grande. |
Les familles à reconnaître
| Famille | Définition, et ce qu'il faut savoir |
|---|---|
| Complet | Toutes les paires reliées ; . |
| Cycle | sommets en boucle ; biparti si est pair ; sans aucun triangle. |
| Biparti | Deux camps, arêtes entre camps seulement. Biparti aucun cycle de longueur impaire . |
| Arbre | Connexe et sans cycle ; ; un seul chemin entre deux sommets. Forêt : sans cycle. |
| DAG | Orienté sans circuit ; admet un tri topologique, a une source et un puits. |
| Planaire | Se dessine sans croisement. ; et ne le sont pas. |
| Eulérien | Un cycle passe une fois par chaque arête : voir le théorème d'Euler. |
| Hamiltonien | Un cycle passe une fois par chaque sommet : aucun critère simple, problème difficile (NP-complet). |
| D'intervalles | Un sommet par intervalle, une arête s'ils se chevauchent ; le glouton par début croissant est optimal, . |
Les théorèmes de base
| Théorème | Énoncé, et ce qu'il permet |
|---|---|
| Poignées de main | : on en tire , et le nombre de sommets de degré impair est pair. En orienté, . |
| Arbres | Pour sommets, deux propriétés parmi « connexe », « sans cycle » et « » entraînent la troisième. Ajouter une arête à un arbre crée exactement un cycle. |
| Bipartis | Biparti aucun cycle impair : un cycle impair prouve qu'un graphe n'est pas biparti. |
| Euler (tournées) | Arêtes d'un seul tenant : cycle eulérien degrés tous pairs ; chemin eulérien 0 ou 2 degrés impairs. Königsberg : quatre impairs, aucune promenade. |
| Euler (faces) | Planaire connexe : , d'où . |
| Tri topologique | Il existe le graphe n'a pas de circuit. Un circuit est une contradiction dans les contraintes. |
| Encadrement de | , où est le degré maximal. Une coloration à couleurs prouve , jamais . |
| Quatre couleurs | Tout graphe planaire vérifie . |
| Propriété de coupe | L'arête la plus légère qui traverse une coupe appartient à un arbre couvrant minimal ; arbre unique si les poids sont distincts. Elle justifie Kruskal et Prim. |
| Flot max, coupe min | La valeur d'un flot maximal égale la capacité d'une coupe minimale : une coupe de même valeur certifie le flot. |
| Chemin augmentant | Un flot, ou un couplage, est maximum il n'admet aucun chemin augmentant : c'est le critère d'arrêt. |
| Hall | Un biparti a un couplage qui sature pour tout : deux candidats pour un seul poste suffisent à prouver l'impossibilité. |
Représenter en machine
| Représentation | Mémoire, et coût des deux questions « voisins de ? » et « et voisins ? » |
|---|---|
| Matrice d'adjacence | ; voisins en ; test en . À réserver aux petits graphes denses. |
| Liste d'adjacence | ; voisins en ; test en . En Python {u: [voisins]}, pondéré {u: {v: poids}}. |
| Liste d'arêtes | ; tout se fait en . Le format d'entrée de Kruskal. |
| Puissances | Le coefficient compte les chemins de longueur de à , arêtes répétées permises ; la diagonale de donne les degrés. |
| Graphe creux | : liste d'adjacence. Une matrice de 200 000 carrefours a cases, presque toutes vides. |
Les algorithmes
| Algorithme | Ce qu'il calcule, sa condition, son coût, son idée |
|---|---|
| Parcours en largeur | Sommets atteignables et distances en nombre d'arêtes ; . Une file ; marquer à l'entrée dans la file. |
| Parcours en profondeur | Composantes, cycles, ordre de fin ; . Une pile ou la récursion ; marquer à la sortie de la pile. |
| Dijkstra | Plus courts chemins depuis une source, poids ; . Glouton : figer le sommet le plus proche, relâcher ses arcs. |
| Bellman-Ford | Plus courts chemins avec poids négatifs, sans circuit négatif ; . passes de relâchement, puis une passe de contrôle. |
| Kruskal | Arbre couvrant minimal ; . Arêtes par poids croissant, rejeter celles qui ferment un cycle (union-trouve). |
| Prim | Arbre couvrant minimal ; . Faire grossir un seul arbre par l'arête la plus légère qui en sort. |
| Kahn | Tri topologique d'un DAG ; . Retirer les sommets sans prédécesseur ; s'il en reste, il y a un circuit. |
| Kosaraju, Tarjan | Composantes fortement connexes ; . Un ou deux parcours en profondeur, guidés par l'ordre de fin. |
| Coloration gloutonne | Chaque sommet prend la plus petite couleur libre ; au plus couleurs, et l'ordre décide du résultat. |
| Edmonds-Karp | Flot maximal ; . Chemins augmentants les plus courts dans le graphe résiduel, arcs inverses compris. |
Modéliser un problème
| Problème réel | Le graphe, puis l'outil |
|---|---|
| Itinéraire le plus rapide | Carrefours et tronçons pondérés par le temps : Dijkstra. |
| Relier des sites au moindre coût | Sites et liaisons possibles avec leur coût : arbre couvrant minimal. |
| Planifier des tâches | DAG des précédences et durées : tri topologique, chemin critique. |
| Créneaux sans conflit | Un sommet par activité, une arête par conflit : coloration (salles, fréquences, horaires). |
| Affecter des personnes | Biparti candidats et postes : couplage maximum. |
| Débit d'un réseau | Réseau orienté avec capacités : flot maximal, et la coupe minimale désigne le goulot. |
| Chaque rue une fois | Les rues sont les arêtes : graphe eulérien. |
| Chaque ville une fois | Les villes sont les sommets : hamiltonien, difficile, on se contente d'heuristiques. |
| Date au plus tôt | ; durée du projet = plus long chemin. |
| Date au plus tard | . |
| Marge totale | ; la tâche est critique si elle est nulle. |
Les pièges
| Piège | Ce qui est vrai |
|---|---|
| Poids négatif | Dijkstra peut rendre un résultat faux : Bellman-Ford. |
| « couleurs, donc » | Seulement . Minorer demande une clique, un cycle impair ou un raisonnement. |
| « Pas de triangle, donc 2 couleurs » | n'a aucun triangle et demande 3 couleurs. |
| Glouton de coloration | Il dépend de l'ordre ; optimal dans quelques cas seulement (intervalles par début croissant). |
| Preuve de non-bipartisme | Seul un cycle impair prouve ; une arête entre deux sommets de même couleur peut venir d'un mauvais choix. |
| Profondeur | Ce n'est pas la largeur avec une pile : la marque change de place. |
| Durée d'un projet | Pas la somme des durées : le plus long chemin du DAG. |
| Deux arbres | L'arbre couvrant minimal n'est pas l'arbre des plus courts chemins : deux questions différentes. |
| Flot bloqué | Plus de chemin de à dans le réseau ne prouve rien : chercher dans le graphe résiduel. |
| Grand graphe creux | Pas de matrice : la mémoire croît en . |