Algorithme de Fleury en graphes
Algorithme de Fleury en graphes
Bastien Fayolle
14 juin 2024
Théorie des graphes 14 juin 2024
Structure de graphe 4
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Notations / Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Voisinage au sommet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Degré d’un sommet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Degré de graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Graphe K-régulier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Chemin (simple) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Cycle (ou circuit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Marche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Cheminement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Tour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Sous-graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Sous graphes induits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Sous graphes couvrants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Famille et caractéristiques de graphes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Graphe Complet Kn ou Clique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Ensemble indépendants/ Stables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Etoile K1...n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Forêts / Arbres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Graphe connexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Composant connexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Graphe Biparti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Décomposition en cycles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Décomposition en chemin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Théorème de Veblen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Tour Eulérien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Parcours de graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Parcours Générique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Parcours en largeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Parcours en profondeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Représentation en machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Matrice d’adjacence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Liste d’adjacence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Matrice d’incidence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Diamètre d’un graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Bastien Fayolle 1
Théorie des graphes 14 juin 2024
Bastien Fayolle 2
Théorie des graphes 14 juin 2024
Flots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Connexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Chemins disjoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Ensemble séparateur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Graphe k-connexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
K-Fan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Bastien Fayolle 3
Théorie des graphes 14 juin 2024
Structure de graphe
Introduction
Un graphe simple est un graphe sans boucle ni arête multiple. Il n’y a alors d’arêtes qu’entre des
sommets distincts, et entre deux sommets il y a au plus une arête.
V = {a, b, c, d}
S4
a b c d
V (S4 ) = {a, b, c, d}
E(S4 ) = ∅
{a, b} ≡ {b, a} mais (a, b) ̸≡ (b, a) car (a, b) représente un arc (orienté) et {a, b} représente une arête
(pas orientée).
2
1 3 4
D = (V, A)
V = {1, 2, 3, 4}
Bastien Fayolle 4
Théorie des graphes 14 juin 2024
S’il existe une orientation transitive, alors le graphe correspond à un ordre partiel.
On peut l’utiliser en :
• mathématique/ combinatoire
• algorithmique
• algebre
• probabilité
Notations / Définitions
Voisinage au sommet
c d
b e a
Le degré d’un sommet est noté dG (v) = |NG (v)| (c’est le nombre de voisin de v) Si G=(V,A) est orientée,
on peut distinguer le voisinage entrant et sortant :
Bastien Fayolle 5
Théorie des graphes 14 juin 2024
Degré de graphe
∆(G) = degré maximum (degré du sommet qui a le plus de voisin) ∆(G) = maxdG (v)|v ∈ A(G)
Graphe K-régulier
Chemin (simple)
Un chemin sur k sommets est noté Pk . On dit qu’il est maximal si on ne peut plus lui ajouter d’arêtes.
Un cycle est un chemin dans lequel les sommets de Départs et d’Arrivé sont les mêmes. Un circuit (ou
cycle) sur k sommets est noté Ck .
Marche
Une marche : chemin ou suite de chemins où les sommets et les arrêtes peuvent apparaître plusieurs
fois.
Cheminement
Marche où les sommets peuvent apparaître plusieurs fois mais les arêtes n’apparaissent qu’une seule
fois.
Tour
Bastien Fayolle 6
Théorie des graphes 14 juin 2024
Sous-graphes
G = (V, E) H = (W, F )
1 2 1 2 1 2 2
7 6 3 7 6 3 6 6
5 4 4 5 4 5 4
G G₁ G₂ G₃
Figure 1: Exemple de la relation de sous-graphe
G1, G2 et G3 sont des sous-graphes de G. G1 n’est pas un sous-graphe induit car il manque l’arête
2-6. G2 et G3 sont des sous-graphes induits.
Un sous-graphe couvrant ou graphe partiel est un sous-graphe ayant le même ensemble de sommets
que le graphe qui le contient.
Ensemble des graphes où il y a une arête entre chaque paire de Sommets. (chaque sommet est voisin
de tous les autres) Si on note n l’ordre d’un tel graphe, alors sa taille est n(n−1)
2
Bastien Fayolle 7
Théorie des graphes 14 juin 2024
Etoile K1...n
Forêts / Arbres
Graphe connexe
G = (V, E) est connexe si pour toute paire de sommets vi , vj ∈ V (G)vi ̸= vj , il existe un chemin dans
G de Vi à Vj .
Composant connexe
Graphe Biparti
Bastien Fayolle 8
Théorie des graphes 14 juin 2024
G = (V, E) est biparti si on peut partitionner V en deux partis A et B telles que G[A] est un Stable et
G[B] est un Stable.
Preuve
On va montrer que pour les arêtes qui ne sont pas dans T (i.e. E \ F ) la partition induite par T
sur les sommets est valide
Bastien Fayolle 9
Théorie des graphes 14 juin 2024
Supposons G sous cycle impaire et G pas biparti, il existe une arête e∈ E \ F telle que a et b
sont dans la même partie.
e = {a, b} ∈ E \ F
Si on ferme ce chemin avec l’Arête {a, b}, on obtient un cycle de longueur impaire, Donc contra-
diction
Décomposition en cycles.
G = (V, E)
On veut trouver une partition des arêtes F = F1 , F2 , ...Fk telle que Fi forme un cycle élémentaire.
Pout qu’un graphe admette une décomposition en cycle, le degré de chaque sommet doit être pair
Pour chaque sommet v , chaque cycle qui passe par v doit pouvoir arriver et repartir
Décomposition en chemin
Théorème de Veblen
Comme P est déjà de longueur maximum, le voisin manquant de v1 est sur le chemin P \ {v2 }
Bastien Fayolle 10
Théorie des graphes 14 juin 2024
Un chemin est maximal si on ne peut pas lui rajouter des arêtes pour que ca reste un chemin
• ⇐ : ε = {C1 , C2 , ..., Ck } pour chaque sommet v, si v est incident à p cycle, sont degré est 2p
Tour Eulérien
Un cheminement fermé qui passe exactement une seule fois par toutes les arêtes du graphe
Bastien Fayolle 11
Théorie des graphes 14 juin 2024
Lemme :
Bastien Fayolle 12
Théorie des graphes 14 juin 2024
Complexité : O(n + m)
Soit x un ensemble de sommets ∂(X) ensemble des arêtes avec une extrémité dans X et l’autre dans
V \X
Arête déconnectante : e = {a, b} telle G − {e} n’est plus connexe.(e est nommé Isthme, ou pont/-
bridge)
Preuve Par induction , sur le nombre d’arêtes dans W, où W un cheminement où les arêtes sont
utilises au plus une fois (car chaque arête, une fois utilisée, est supprimée de F) On s’arrête quand
dF (x) = 0; c’est un cheminement fermé
Pour prouver que toutes les arêtes sont utilisés, on fait un raisonnement par l’Absurde. On considère
l’ensemble des sommets X qui ont un degré positif à la fin de l’algorithme. Des arêtes de G n’ont pas
été sélectionnée par l’algorithme.
L’ensemble V − X est non vide car u (le sommet de départ) est dans V \ X
Bastien Fayolle 13
Théorie des graphes 14 juin 2024
Donc la dernière arrête utilisée pour construire le tour W de dF (x) , c’était une arête déconnectante.
(a = {a, b}) Quand on était sur le sommet b et qu’on a choisi e , d’autre arêtes non-déconnectantes
étaient disponibles, contredisant les choix suivis par l’Algorithme
Remarque : il existe un autre algorithme qui est basé sur la décomposition en cycle, et qui permet de
calculer de manière incrémentale un tour Eulérien, en rajoutant un cycle à la fois.
Parcours de graphe
• Parcours générique
• Parcours en largeur → Plus court chemin dans des graphes unitaires
• Parcours en profondeur → Calcule de composantes fortement connexes
Les algorithmes de parcours permettent d’explorer le graphe dans un certain ordre et d’extraire des
propriétés de ce graphes
Parcours Générique
Ce parcours générique permet de déterminer rapidement si G est connexe. G est connexe si tous les
sommets ont un σ[v] ̸= ∅
Pour chaque sommet V on peut associer un sommet “parent”, seulement basé sur les étiquettes
σ[V ]
Le premier sommet V aura σ[v] = 1. Pour les autres sommets w, on aura σ[w] = min(σ[v]|v ∈ NG (u))
Bastien Fayolle 14
Théorie des graphes 14 juin 2024
On peut même déduire une orientation des arcs vers le sommet de départ
ΣdG (v) + n
Parcours en largeur
C[v] : couleur
Bastien Fayolle 15
Théorie des graphes 14 juin 2024
8 6) L=(d,f)
9 7) L=(f)
10 8) L=(g)
11 9) L=()
Le parcours en largeur sur les graphes unitaires permet de calculer les plus courts chemins d’un sommet
vers tous les autres
σ(S, V ) ≤ δ(s, u) + 1 ∀u ∈ NG (V )
Recurrence :
Par hypothèse de récurrence: l[u] ≥ δ(S, u) l[u] = l[u]+1 l[v] = l[u]+1 ≥ δ(S, u)+1 l[v] ≥ δ(S, u)+1
δ(S, u) + 1 ≥ δ(S, v)« par le lemme précédent l[v] ≥ δ(s, v)
Lemme : A un instant t, pour les sommets (v1 , v2 , ..., vk ) présents dans L - l[vk ] ≥ l[v1 ] + 1 (le niveau
du dernier sommet est inférieur au niveau du premier sommet +1) - l[vi ] ≥ l[vi+1 ]
Théorème
Bastien Fayolle 16
Théorie des graphes 14 juin 2024
Preuve
On suppose qu’il existe un sommet v pour lequel l’algo trouve une valeur v pour laquelle l[v] ̸= δ(s, v),
l[v] > δ(s, v). (v est le premier sommet avec cette propriété)
On considère le sommet u qui a permis à v d’être traité. Par le choix de v, on a σ[v] > σ[u] et donc
l[u] = δ(s, u).
1. SI v est noir, u a été inséré dans la liste après v , l[v] ≤ l[u] : Pas possible
2. Si v est gris, il y a un autre sommet w qui a fait entrer v dans L et σ[w] < σ[u] donc l[v] ≤ l[u]
Pas possible
3. Si v est blanc, u qui fait rentrer v dans la liste, donc l[v] = l[u] + 1 = δ(s, v)
Parcours en profondeur
Procédure : P P (G)
Input : G(V, E)
Output : Arborescence de G
Bastien Fayolle 17
Théorie des graphes 14 juin 2024
21 date++
22 f(u)=date
Bastien Fayolle 18
Théorie des graphes 14 juin 2024
Théorème Soit G un grahpe, et Iv ∀v les intervalles calculés par le DFS sur G. ∀v, w
2 cas à considérer:
1. d[w] < f [v] : ca signifie que w a été exploré alors que v était déjà gris. Donc la fin du traitement
de w interviendra avant celle de v. On aura :
2. Si la date de début de w est plus grande que la date de fin, (d[w] > f [v]), les intervalles sont
disjoints.
Théoreme Dans une forêt de parcours en profondeur, un sommet v est un descendant d’un sommet
u si au moment où u est exploré , il existe un chemin composé uniquement de chemins blancs de u à v
dans G
Complexité : O(n + m)
Bastien Fayolle 19
Théorie des graphes 14 juin 2024
Représentation en machine
Matrice d’adjacence
Une matrice carrée n × n mij = 1 ssi i est adjacent j. (on remarque que la matrice est symétrique sur
la diagonale identité dans un graphe non-orientée, elle sera asymétrique dans un graphe orienté).
Liste d’adjacence
une liste de liste. Pour chaque sommets v, on aura la liste de ses voisins. (∈ O(n + m))
Bastien Fayolle 20
Théorie des graphes 14 juin 2024
Matrice d’incidence
Matrice n × m où les lignes correspondent aux sommets et les arrêtes aux colonnes
• Arcs de liaison
• Arcs Arrières
Bastien Fayolle 21
Théorie des graphes 14 juin 2024
• Arcs avant
• Arcs Transverses
Lemme :
Un graphe G = (V, E) est un sous-circuit ssi lors d’un parcours en profondeur aucun arc arrière n’est
généré.
Preuve :
(u, v) est un arc arrière, et par définition, il existe un chemin de v à u car u est un descendant de v.
⇐ Par contraposée :
Au moment où V est découvert, tous les sommets de C sont blancs. Par le théorème du chemin blanc,
tous les sommets sont des descendants de V . En particulier donc (u, v) est un arc arrière
Tri topologique
Pour un graphe orienté sans circuit, un tri topologique est un ordre total (σ) des sommets tel que pour
tout sommet v, ∀v,w ∈ N + (v)
Pour résoudre les systèmes de contrainte de précédence (construire un batiment, Paquets logiciels,
makefile)
Bastien Fayolle 22
Théorie des graphes 14 juin 2024
1 L=vide
2 PP(G)
3 //Lorsque le traitement d'un sommet V est terminé dans PP(G),
4 Inserer V au début de L
Théorème
Tri-Topologique : calcule calcule d’un tri topologique d’un graphe orienté sans cycle
Preuve :
Considérons une application du parcours en profondeur sur G, pour calculer les dates de fin.
On considère l’arc (u, v) lorsqu’il est exploré par le parcours en profondeur V ne peut pas être gris,
sinon, (u, v) est un arc arrière.
Une composantes fortement connexe est un sous ensemble de sommet maximal qui induit un graphe
fortement connexe
On a un arc entr deux sommet ci et cy de GCF C ssi il existe un arc (u, v) ∈ A(G)tel que u ∈ Ci etv ∈
Cj
Les arcs de GCF C sont les arcs reliant les différentes CF C dans G.
Bastien Fayolle 23
Théorie des graphes 14 juin 2024
GCF C est sans-circuit (car si circuit : on peut en faire une grande composante connexe (faire un
schéma))
• Nombre min de CF C : 1
• Nombre max de CF C : n -> Graphe sans circuit
Algo CFC
Lemme Soient C et C ′ 2 CFC d’un graphe orienté G(V, A) et on a un arc (u, v) ∈ A(G) spdg : u ∈
C et v ∈ C ′ alors f (C ′ ) > f (C)
Preuve
1) d(C) < d(C ′ ) : Soit le sommet de C tel que d(x) = d(C) (c’est le premier sommet de C qui a
été exploré par le parcours en profondeur). Tous les sommets de C sont des descendants de x
(Thm chemin blanc). De même que tous les commet de C ′ d(C) = d[x] < d(C ′ ) Donc tous les
sommets de C’ sont aussi des descendants de x (à cause de l’arc (u, v))
Le traitement de tous les sommets de C ′ sera terminé avant la fin du traitement de x. Donc on a
f (C) > f (C ′ )
2. d(C) > d(C ′ ) Soit y le sommet de C ′ tq d[y] = d(C ′ ) au moment d[y] tous les sommets de C ′
sont blancs, les sommet de C ′ sont les descendants
Comme il n’y a aucun Arc de C ′ vers C, le traitement des sommets de C ′ sera terminé avant de
commencer à explorer C => f (C ′ ) = f [y] f [y] < d[x] < f [x] Donc f (C) > f (C ′ )
Dans un graphe orienté sans circuit, on distingue 2 type de sommets : - les sources : sommets pour
lesquels il n’y a pas de voisin entrrants - les puits : pas de voisins sortans - (les intermédiaires : tous les
autres)
Bastien Fayolle 24
Théorie des graphes 14 juin 2024
Avec le parcours en profondceur, on identifie les GCF C une source s quand on fait le parcours dans
GT à partir de s.
Couplages (matching)
Soit G = (V, E) un graphe et soit M = {e1 , e2 ...ek } un ensemble d’arêtes tel que ∀i, jei ∩ ej = ∅
Chemin M -Alternant
Si P = V1 , V2 , V3 , ..., Vk est M -alternant si exactement une arête sur deux le long de P appartient et
n’appartient pas au couplage M .
On dit qu’un chemin est augmentant si la première et la dernière arrête ne sont pas dans M .
En présence d’un chemin augmentant, on peut inverser la longueur du chemin les arêtes qui sont dans
M et celle qui ne sont pas dans M
Cycles alternants
C = V1 , V2 , V3 , ..., Vk , V1 $ où une arête sur deux est dans le couplage et l’autre pas.
Théorème Soit G = (V, E) un graphe et M un couplage, M est maximum ssi G ne contient pas de
chemin M -augmentant.
Si ∃P un chemin M -augmentant :
⇐ Par l’absurde
Bastien Fayolle 25
Théorie des graphes 14 juin 2024
On garde les arêtes qui sont dans M et pas dans M ∗ et celles qui sont dans M ∗ mais pas dans M .
Car chaque composante connexe est soit: - Un chemin - Un cycle (de taille paire)
B = (X, Y, E).
Théorème de Hall 1935 Soit G = (V, E) un graphe biparti, il admet un couplage qui couvre tous les
sommets de X ssi |N (S)| ≥ |S| ∀S ⊆ V
Autrement dit:
Soit G = (V, E) un graphe biparti, avec les ensembles de sommets X et Y . Alors, G admet un couplage
qui couvre tous les sommets de l’ensemble X si et seulement si, pour chaque sous-ensemble S de
X, le nombre de voisins de S dans l’ensemble Y , noté N (S), est supérieur ou égal à la taille de S,
c’est-à-dire |N (S)| ≥ |S|.
Preuve : ⇒ Si G admet un couplage M qui couvre tous les sommets de X. La propriété est vérifié
pour X.
|N (X)| ≥ |X| comme il y a un couplage chaque sommet x a un voisin qui lui est propre dans Y .
⇐ (par contraposée)
Bastien Fayolle 26
Théorie des graphes 14 juin 2024
Soit G un graphe biparti qui n’admet pas de couplage qui couvre tous les sommets de X. Soit M ∗ un
couplage de cardinalité maximum dans G.
On considère u un sommet non couvert par M ∗ . On considère tous les sommets de G accessibles à
partir de u par des chemins M ∗ alternant. Seul u ne sera pas couvert.
On note Z l’ensemble des sommets qui sont accessibles par ces chemins R = X ∩ Z B = Y ∩ Z
Tous les sommets de R sauf u sont couverts par M ∗ . (par construction : l’accessibilité par un chemin
M ∗ -alternant).
Tous les voisins de u dans Y sont aussi dans $B£ et donc tous les voisins de V sont couverts par M ∗
sinnon on pourrait augmenter la taille du couplage
Un vertex cover est un sous-ensemble de sommets X tel que chaque arête de G a au moins une
extrémité dans X.
Théorème
Pour tout graphe G = (V, E), on a β(G) ≤ 2α′ (G) (avec α le couplage maximum)
Preuve
Théorème
Kőnig-Egerváry
Bastien Fayolle 27
Théorie des graphes 14 juin 2024
Le problème de l’arbre couvrant de poids minimum est de trouver un Arbre T = (V, F ), où T un arbre
couvrant et de poids minimum (i.e. w(T ) = Σe∈E(T ) w(e))
Algorithme générique
Règle bleue: On sélectionne une coupe ∂(x) (les arêtes sortantes de X) sans arête bleu, on sélectionne
l’arête non coloriée de poids minimum et on la colorie en bleue
Règle Rouge : Cycle C sans arête rouge et parmi les arêtes non coloriées, on met en rouge l’arête de
points maximum
Invariant de couleurs : Toutes les arêtes qui sont bleues forment la solution
Lemme On est capable de colorier toutes les arêtes du graphe (soit en rouge, soit en bleue).
Preuve Par l’absurde, on suppose qu’a la fin de l’algorithme, il reste des arêtes non coloriées et
qu’aucune règles ne peut s’appliquer.
On a quelques arêtes bleues, quelques arêtes rouges et des arêtes non coloriées (au moins une). Soit
e = {x, y} une arête non coloriée. Les arêtes bleues forment une forêts.
1. Si les deux extrémités sont dans la même CC de la forêt, ca forme un cycle avec les arêtes bleues.
Comme e est la seule arête non colorié, on applique la règle rouge.
2. Si les deux extrémités sont dans 2 CC différentes , Ci et Cj : On peut appliquer la règle bleue.
On applique la règle bleue sur Ci (ou Cj ) de manière indiférenciée. Comme e est présente dans
∂(Ci ) en appliquant la règle bleue, on va colorier au moins une arête en bleu.
Invariant de Couleur
A la fin de l’algorithme, les arêtes de la solution sont bleues. Les arêtes rejetées sont rouges.
Bastien Fayolle 28
Théorie des graphes 14 juin 2024
Démonstration Règle bleue : Soit e l’arête sur le point d’être coloriée en bleue par l’algorithme. Soit
T l’arbre qui respecte l’invariant de couleur.
Règle rouge :
1. Si e ̸∈ T : OK
2. Si e ∈ T : Si on supprime e de T, on obtient une forêt avec 2 sous arbres T1 et T2 Le Cycle C
sur lequel on a appliqué la règle comporte au moins une autre arêtes, e′ (sans couleur) comme
l’invariant de couleur est respecté, on a w(e′ ) < w(e). Si on enlève e à T et qu’on rajoute e′ , on a
un arbre de poids moindre.
Algorithme de Kruskal
Algo de Kruskal
Bastien Fayolle 29
Théorie des graphes 14 juin 2024
Algorithme de Kruskal
Input: G = (V, E, u)un graphe pondéré
Output: T = (V, F ) un arbre couvrant de poids minimum
Complexité Complexité : O(n · log2 (n)) + O(n + mα(n, m)) Tri : O(m.log2 n) Reste de l’algo :
O(n + mα(n, m))
Remarque
Algorithme de Prim
Bastien Fayolle 30
Théorie des graphes 14 juin 2024
Algorithme de Prim
Input: G = (V, E, w)un graphe pondéré
Output: T = (V, F ) un arbre couvrant de poids minimum
Soit s un sommet
F =∅
C = {s}
̸ n do:
While|C| =
Appliquer la règle bleue sur ∂(C)
soite = {x, y} l’arête choisie
F = F ∪ {e}
C = C ∪ {x, y}
C(e) = bleue
End While
Return T = (V, F )
Si remplace une arête pondéré à 1000 par 1000 arêtes log2 (w(e)) pour stocker les poids
P
e∈E
N = n + 1000 M = m + 1000
Principe de sous-optimalité
Lemme Soit G = (V, E, w) un graphe. Soit P un plus court chemin de x à y. alors tous les sous
chemins Pαβ , αβ sommets de P sont aussi des plus courts chemins.
Bastien Fayolle 31
Théorie des graphes 14 juin 2024
Preuve Par l’absurde, on suppose qu’il existe une paire de sommets de P, α, β telle que Pαβ la
restriction de P au segment αβ n’est pas le plus court.
Il existe un chemin P ′′ de x à y qui passe par P ′′ pour aller de x à α ,par P ′ pour aller de α à β et par P
pour aller de β à y . La longueur de P ′′ est strictement plus petite que celle de P , CONTRADICTION
Dans les algos qu’on va présenter, on va calculer une valeur d[v] qui représente une borne sup sur la
longueur de s à v
Inégalité triangulaire
Operation de mise à jour de distance : Pour un sommet u et v un voisin de u, la mise à jour consiste à
voir si on peut améliorer la distance de v en passant par u.
Propagation d’optimalité
Bastien Fayolle 32
Théorie des graphes 14 juin 2024
Algorithme de Dijkstra
Algorithm Algo
Input: G = (V, E, w), s et t des sommets
Output: Arborescence du plus court chemin enraciné en s
foreach v ∈ V (G)
d[v] = ∞
p[v] = ∅
End For
d[s] = 0
In = ∅
Out = V (G)
Bastien Fayolle 33
Théorie des graphes 14 juin 2024
Complexité : O(m + nlog2 n) : avec des tas de Fibonacci O(m.log2 n + n) : avec un tas binaire
Théorème L’algorithme de Dijkstra calcule les plus courts chemins à partir d’une source unique s
Preuve
Base : d[s] = 0 In ← s
Induction
Par l’absurde, il existe un sommet u pour lequel on a d[u] ̸= δ(s, u); d[u] > δ(s, u)
On suppose que u est le premier sommet pour lequel on a d[u] > δ(s, u), (touts les autres sommets
avant ont recus la bonne distance)
x ∈ In et y ∈ Out
Par propagation d’optimalité, on a d[y] < d[u]. Au moment où on exécute l’algo, on doit préférer y à u
(Contradiction)
Bastien Fayolle 34
Théorie des graphes 14 juin 2024
Algorithme de Bellman
Algorithme de Bellman
Input : G = (V, E, w) un graphe orienté valué, s un sommet de départ
Output : Une arborescence de plus courts chemins, faux sinnon
For: v ∈ V (G) do :
d[v] = ∞
p[v] = ∅
End For
For i = 0 → |V (G)| − 1 do:
For (u, v) ∈ E(G) do :
If d[v] > d[u] + w(u, v) then:
d[v] = d[u] + w(u, v)
p[v] = u
End if
End for
End for
For (u, v) ∈ E(G) do:
if d[v] > d[u] + w(u, v)then:
Return "Il y a une cycle négatif (absorbant)"
Return d, p
Complexité : O(n × m)
Flots maximum
G = (V, E, c) orienté
• s:source
• t: puits
c : E → R+ fonction de capacité (La quantité maximum qui peut transiter sur un arc).
Bastien Fayolle 35
Théorie des graphes 14 juin 2024
f : E → R+
On a deux contrainte :
• Le respect de la capacité , tq
∀e ∈ E, f (e) ≤ c(e)
a 2/2 b
3/3 3/3
S 1/2 / 6 1/1 t
3/5
d
4/4 c 3/3
Chemin améliorant
C’est un chemin entre s et t dans un graphe G = (V, E, c) avec un flot f qui transite sur G.
P = s, v1 , v2 , . . . , vi , t
Bastien Fayolle 36
Théorie des graphes 14 juin 2024
a 5/5 b
5/8 5/7
S 0/4 0/2 0/5 t
5/7 5/8
d
5/10 c
Bastien Fayolle 37
Théorie des graphes 14 juin 2024
a
5 b 5
5 2
3
S 4 2 5 t
2 3
5
5 d 5 c
5
Figure 7: Le graphe résiduel
Le réseau résiduel GF permet de mettre en correspondances les chemins améliorant de G(f ) avec
les chemins de s à t dans Gf . Un chemin de s à t dans Gf peut être trouvé en temps linéaire avec un
parcours (Largeur ou profondeur)
Une coupe (S, S̄) est minimum si ∀(S ′ , S̄ ′ ) autres coupe, on a c(S, S̄) ≤ c(S ′ , S̄ ′ ).
Théorème : Si f est un flot dans un graphe G = (V, E, c) alors les conditions suivantes sont équiva-
lentes :
Bastien Fayolle 38
Théorie des graphes 14 juin 2024
Preuve :
(2) ⇒ (3) : Soit S l’ensemble des sommets de Gf accessibles depuis s. (tous les arcs de S à S̄ sont
saturés, par définition du réseau résiduel)
(3) ⇒ (4) : par la remarque précédente, la valeur de f ne peut excéder la valeur de c(S, S̄), ∀(S, S̄). Si
la valeur est atteinte, i.e. ie |f | = c(S, S̄) le flot maximum
Algorithme de Ford-Fulkerson
f =∅
Gf = G
while il existe un chemin P de s à t dans Gf do:
augmenter le flot le long du chemin P avec la valeur cf (p)
mettre à jour Gf
end while
Return c
cf (p) = min c′ (e) , ∀e ∈ E(p) (la capacité résiduelle du chemin augmentant p est égale à la capacité
résiduelle minimum de ses arcs.)
Edmond-Karp :
Coloration de graphes.
• coloration de sommets
• Coloration d’arêtes
Bastien Fayolle 39
Théorie des graphes 14 juin 2024
On cherche une fonction c : V → {1, . . . , k} telle que : ∀vi , vj ∈ E(G) on a c(vi ) ̸= c(vj )
Le nombre chromatique du graphe, noté χ(G) correspond au plus petit nombre de couleurs nécessaire
pour colorier le graphe.
Borne supérieure :
Sur le nombre chromatique χ(G) ≤ n
Borne inférieur
• ω(G) ≤ χ(G)
c[i] = {v|c(v) = i}
Le problème de Coloration revient à couvrir l’ensemble des sommets par k stables (avec le plus petit k
possible)
Coloration de Carte par Francis Guthrie, vers 1850:
Problème de coloration :
Bastien Fayolle 40
Théorie des graphes 14 juin 2024
Heuristique gloutonne
Algorithm
Input: G = (V, E) un graphe non orienté
Output: c : V → N+
Récurrence : Pi−1 ⇒ Pi
On doit donc montrer qu’il existe une couleur dans l’ensemble {1, . . . , ∆(G) + 1} disponible pour
vi .
d(vi ) ≤ ∆(G)
Si d(vi ) = ∆(G) et tous les voisins de vi sont déjà coloriés avec des couleurs toutes différentes, alors
il y a au plus ∆(G) couleurs utilisés. Donc il y a au moins une couleurs disponible dans l’ensemble
{1, . . . , ∆(G) + 1} disponible pour vi .
χ = ∆(G) + 1
∆(Kn ) = n − 1, χ(Kn ) = n
Bastien Fayolle 41
Théorie des graphes 14 juin 2024
∆(C2k+1 ) = 2, χ(C2k+1 ) = 3
Théorème de Brooks:
Preuve
On construit une permutation des sommets v1 est une feuille de T . On construit la permutation
en enlevant successivement des feuilles de T
On colorie donc v1 , v2 , . . . , vi , vk , x
2. Si G est régulier
1. si G possède un sommet qui est déconnectant Alors on enlève ce sommet, créant donc 3
composantes connexes, que l’on augment en re-mettant x le sommet déconnectant.
On a donc :
∆(Gi ) = k, ∀i ∈ {1, 2, 3}
d(Gi ) < k
Pour chaque graphe Gi , on est dans le cas d’application du cas 1, G n’est pas régulier et
∆(Gi ) = ∆(G) pour chaque Gi , on a (Gi ) ≤ ∆(G)→on peut fusionner les coloration de
chaque Gi pour n’utiliser que max(Gi ).
Résultat : tout parcours en profondeur est un chemin Hamiltonien ssi G est un graphe
complet Kn ou un Biparti complet Kn,n .
Bastien Fayolle 42
Théorie des graphes 14 juin 2024
ω(G) ≤ (G)
(ω(C2k+1 ) = 2 χ2k+1
Construction de Mycielski
Pour toute valeur entière k positive, on note M (k) un graphe sans triangle(K3 ) dont le nombre chro-
matique est k.
On connecte ui aux voisins de vi . On ajoute un sommet x connectés à tous les sommets ui (sommet
“universel”).
Remarque :
Récurrence : Mk ⇒ Mk+1
x ne peut pas participer à un K3 , tous les sommets a, b, c ne peuvent pas être identifié à des sommets
de u.
Si Mk+1 contient un graphe K3 comme sous graphe induit, K3 contient au plus un sommet u1 nommé
ui . ui a exactement les mêmes voisins que vi (sauf x). ⇒ vi vj vk forment un triangle dans Mk+1 ,
contredisant l’hypothèse de départ □.
Bastien Fayolle 43
Théorie des graphes 14 juin 2024
Soit G = (V, E) un graphe et on souhaite colorier les arêtes de G telle que 2 arêtes qui partagent
soient de couleurs différentes.
On note χ′ (G) le nombre chromatique d’arête le nombre minimum de couleur par arête colorier G.
∆(G) ≤ χ′ (G)
Construction d’un line graphe. On a un graphe G = (V, E) et on construit L(G) = (E, f (E)).
La coloration de sommets de L(G) peut être transformée en une coloration d’arêtes de G (ssi).
(une clique qui part d’un extremétié de l’arête, l’autre qui part de l’autre extrémité)
Remarque : ∆(G) ≤ χ′ (G) Nombre maximum de couleur pour colorier les arrêtes de G
Bastien Fayolle 44
Théorie des graphes 14 juin 2024
Lemme
Si G n’est pas un cycle impair (ni une clique), alors χ′ (G) ≤ 2∆(G) − 2
Théorème de Vizing :
1. S’il existe une couleur c ≤ ∆(G) disponible en x et y, si c est disponible en x et y, aucune arête
incidente à x ni y n’utilise cette couleur donc on peut l’utiliser pour e.
2. La couleur c est disponible en x mais pas en y Par hypothèse, les arêtes coloriées utilisent au
plus ∆(G) couleurs.
Et donc, ∃c′ = {1, . . . , ∆(G)} qui est disponible en y( car dG (y) ≤ ∆(G) − 1), donc au plus
∆(G) − 1 couleurs sont incidentes à y. )
et c′ n’est pas disponible le au niveau de x.
SI non, on se ramène au cas n°1.
On considère que le graphe est constitué uniquement des couleurs c et c′ qui partent de x et de
y.
La structure de Cx et de Cy . (Cx (resp Cy ) composante connexe qui contient x resp. y) dans ce
graphe.
1. Cx est différente de Cy . Sur une des deux composantes connexes, (spdg x) on échange les
2 couleurs, c′ devient dispo en x et l’était déja en y.
Bastien Fayolle 45
Théorie des graphes 14 juin 2024
Flots
On transforme un graphe biparti en un problème de flot en lui ajoutant une source, un puit, et une
capacité à chaque arête (1 pour chaque).
Connexité
Chemins disjoints
Pour une paire de sommet s et t, on veut trouver deux chemins P et P ′′ disjoints entre s et t.
2 chemins P et P ′′ sont sommet (respectivement arrêtes) disjoint si aucun sommet (resp. arrêtes) de
P et P ′′ sont communs (sauf s et t).
On cherche à trouver le nombre maximum de chemins disjoints (sommets ou arêtes). entre 2 sommets.
→ algo polynomiale pour les 2 sommets.
κ(Kn ) = n − 1
Bastien Fayolle 46
Théorie des graphes 14 juin 2024
Ensemble séparateur.
S ⊊ V (G) est un ensemble séparateur si le nombre de cc de G − S est plus grand que celui de G:
Pour une paire de sommet x, y, on note c(x, y) la taille du plus petit x − y séparateur.
Théorème de Menger
(C’est à dire : la taille du plus petit ensemble de sommets x − y séparateur est e nombre maximum de
chemin sommet disjoints entre x et y).
Graphe k-connexe
• 1-connexe = connexe_ç
• 2-connexe = pas de sommet déconnectant
• k-connexe : Si ∀x, y, x =
̸ y, il existe k chemin disjoints entre x et y. Si pour la suppression de tout
sous-ensemble X de sommets, de taille au plus k − 1, G − X reste connexe
Remarque
Lemme
Preuve
1. Si y ∈ S
Bastien Fayolle 47
Théorie des graphes 14 juin 2024
2. Si y ̸∈ S
On doit montrer qu’il reste un chemin entre y et les sommets de G − S. Par construction y a au
moins k voisins dans G.
Pire des cas : S ⊊ N (y) mais sommet dH (y) ≥ k et |S| ≤ K + 1, il reste au moins un sommet x
de G qui est voisin de y.
Preuve:
K-Fan
(x, Y ) est un k-fan si x est un sommet et Y un ensemble de taille k. Les k chemins disjoints de x vers
Y
Preuve:
Base : k = 2
Bastien Fayolle 48