Cours Math Info
Cours Math Info
2025-2026
Table des matières
1
1.5.6 Graphe eulérien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.6 Graphes bipartis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.6.1 Dénition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.6.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.6.3 Graphe biparti complet . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.6.4 Propriété fondamentale . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.6.5 Coloration des graphes bipartis . . . . . . . . . . . . . . . . . . . . 35
1.6.6 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
1.6.7 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.7 Théorie de la coloration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.7.1 Dénition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.7.2 Nombre chromatique . . . . . . . . . . . . . . . . . . . . . . . . . . 36
1.7.3 Exemple : graphe chemin . . . . . . . . . . . . . . . . . . . . . . . . 36
1.7.4 Exemple : graphe complet . . . . . . . . . . . . . . . . . . . . . . . 37
1.7.5 Théorème des quatre couleurs . . . . . . . . . . . . . . . . . . . . . 37
1.7.6 Coloration des arêtes . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.7.7 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.7.8 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.8 Matrices associées aux graphes . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.8.1 Matrice d'incidence . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.8.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.8.3 Matrice des distances . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.8.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.8.5 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.8.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.9 Arbres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.9.1 Propriétés des arbres . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.9.2 Exemple d'arbre . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.9.3 Caractérisation des arbres . . . . . . . . . . . . . . . . . . . . . . . 40
1.10 Arbres couvrants minimaux . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.10.1 Dénition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
1.11 Algorithme de Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.11.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.11.2 Étapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.11.3 Pseudo-code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.12 Algorithme de Prim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.12.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.12.2 Étapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
1.12.3 Pseudo-code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.13 Comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.13.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.14 Exemple de Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.14.1 Étapes de l'algorithme de Kruskal . . . . . . . . . . . . . . . . . . . 42
1.14.2 Arbre couvrant minimal . . . . . . . . . . . . . . . . . . . . . . . . 43
1.15 Algorithme de Prim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.15.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.15.2 Application au même graphe . . . . . . . . . . . . . . . . . . . . . . 43
1.15.3 Arbre couvrant minimal . . . . . . . . . . . . . . . . . . . . . . . . 43
2
1.16 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.17 Tri topologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.17.1 Dénition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1.17.2 Algorithme de Kahn . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.17.3 Exemple : graphe initial . . . . . . . . . . . . . . . . . . . . . . . . 44
1.17.4 Étape 1 : degrés entrants . . . . . . . . . . . . . . . . . . . . . . . . 44
1.17.5 Étape 2 : suppression de A . . . . . . . . . . . . . . . . . . . . . . . 44
1.17.6 Étape 3 : traitement de B et C . . . . . . . . . . . . . . . . . . . . 44
1.17.7 Étape 4 : traitement de D et E . . . . . . . . . . . . . . . . . . . . 45
1.17.8 Résultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
1.17.9 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
1.17.10 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3
Chapitre 1
Introduction à la théorie des graphes
1.1 Introduction
La théorie des graphes est une branche fondamentale des mathématiques discrètes et
sommets (ou n÷uds)
de l'informatique théorique qui étudie les structures constituées de
et d'arêtes (ou liens) dénissant des relations entre ces sommets. Elle fournit un cadre
universel pour modéliser des systèmes complexes dans lesquels la topologie des relations
est primordiale.
Historique
Leonhard Euler
sept ponts de Königsberg
Les graphes apparaissent pour la première fois dans les travaux de
(1735) sur le problème des , marquant l'origine de la combinatoire
problème
moderne et ouvrant la voie à l'étude formelle des structures relationnelles. Le
des quatre couleurs, conjecturé par Francis Guthrie en 1852 et démontré par Appel
et Haken en 1976 à l'aide de méthodes informatiques, illustre l'importance des outils
computationnels dans les preuves mathématiques modernes.
Propriétés structurales
Les graphes se caractérisent par plusieurs propriétés essentielles :
Orientation des arêtes : un graphe peut être orienté (digraphe) ou non orienté.
Pondération : les arêtes peuvent porter des valeurs numériques représentant des
coûts, distances ou capacités.
Applications
La théorie des graphes est utilisée dans de nombreux domaines :
4
Informatique et réseaux : structures de données, analyse de réseaux sociaux,
moteurs de recherche, intelligence articielle.
Intérêt
La théorie des graphes fournit un langage unié et des outils rigoureux pour représen-
ter, analyser et résoudre des problèmes complexes dans des contextes variés, allant des
sciences fondamentales à l'ingénierie et aux systèmes informatiques distribués.
5
Exemple 1.1.2. Considérons :
V = {A, B, C, D}
Les arêtes modélisent les relations, interactions ou connexions entre les sommets du
graphe.
Interprétation : Une arête peut représenter, par exemple, une route entre deux villes,
une relation d'amitié entre deux personnes, ou une connexion entre deux ordinateurs.
6
Une boucle compte pour deux dans le degré.
Dans un graphe orienté, on distingue :
Alors :
deg(A) = 2
deg(B) = 2
deg(C) = 2
deg(D) = 2
Remarque 1.1.4. Dans tout graphe non orienté, la somme des degrés de tous les sommets
est égale à deux fois le nombre d'arêtes :
X
deg(v) = 2|E|
v∈V
A B
C D
Remarque 1.1.5. Ce graphe est non orienté (les arêtes n'ont pas de direction) et non
pondéré (aucun poids n'est associé aux arêtes).
7
Une arête {u, v} signie que l'on peut aller de u vers v et de v vers u.
Les arêtes sont représentées graphiquement par des segments sans èche.
Exemple 1.2.1. Le graphe ci-dessous est un graphe non orienté comportant trois sommets
, et C , chacun étant relié aux deux autres.
A B
A B
Remarque 1.2.1. Un graphe non orienté est souvent utilisé pour modéliser des
relations réciproques (amitié, routes à double sens, connexions physiques, etc.).
Dans ce type de graphe, la notion de voisinage est symétrique : si u est voisin de v,
alors v est voisin de u.
1.2.2 Graphe orienté
Dénition 1.2.2. Un graphe orienté (ou digraphe) est un graphe dans lequel les arêtes
possèdent une direction. Ces arêtes orientées sont appelées arcs et sont représentées par
des couples ordonnés :
(u, v) ̸= (v, u).
Interprétation : Dans un graphe orienté, la relation entre deux sommets n'est pas
nécessairement symétrique. Un arc (u, v) indique un déplacement ou une relation allant
de u vers v, sans impliquer l'existence du chemin inverse.
Un arc (u, v) signie que l'on peut aller de u vers v , mais pas forcément de v vers u.
Les arcs sont représentés graphiquement par des èches indiquant le sens de la
relation.
Exemple 1.2.2. Le graphe ci-dessous est un graphe orienté comportant trois sommets
A, B et C . Les arcs indiquent les directions possibles entre les sommets.
A B
8
1.2.3 Cycles dans un graphe
Dénition 1.2.3. Un cycle est une suite de sommets v , v , . . . , v (k ≥ 3) telle que :
chaque paire de sommets consécutifs est reliée par une arête (ou un arc);
1 2 k
Remarque 1.2.3. Les cycles sont souvent mis en évidence graphiquement à l'aide
de couleurs ou d'un tracé plus épais.
La détection de cycles est un problème fondamental en théorie des graphes.
Un graphe sans cycle est dit acyclique.
1.2.4 Boucles dans un graphe
Dénition 1.2.4. Une boucle est une arête (ou un arc) qui relie un sommet à lui-même.
Autrement dit, c'est une arête de la forme :
(v, v) ∈ E.
Interprétation : Une boucle représente une relation d'un sommet avec lui-même. Cela
peut modéliser, par exemple, une action interne, une auto-connexion ou une dépendance
réexive.
9
Boucle dans un graphe non orienté
Dans un graphe non orienté, une boucle est une arête reliant un sommet à lui-même,
sans notion de direction.
A B
A B
Remarque 1.2.4. Une boucle contribue pour deux au degré d'un sommet dans un
graphe non orienté.
Dans un graphe orienté, une boucle contribue pour un au degré entrant et un au
degré sortant.
Un graphe sans boucle est dit simple (s'il ne possède pas non plus d'arêtes mul-
tiples).
1.2.5 Graphes simples et multigraphes
Dénition 1.2.5. Un graphe simple est un graphe non orienté qui ne contient :
ni boucles ;
ni arêtes multiples (plusieurs arêtes entre deux mêmes sommets).
Interprétation : Dans un graphe simple, chaque paire de sommets est reliée par au
plus une seule arête, et aucun sommet n'est relié à lui-même.
Exemple 1.2.8. Le graphe ci-dessous est un multigraphe : il contient deux arêtes entre
A et B, ainsi qu'une boucle sur A.
A B
Remarque 1.2.5. Les graphes simples sont les plus utilisés en théorie des graphes
classique.
Les multigraphes sont utiles pour modéliser des réseaux complexes (routes multiples,
communications parallèles, etc.).
Lorsqu'un graphe orienté autorise plusieurs arcs entre deux sommets, on parle aussi
de multigraphe orienté.
1.2.6 Chemins et chaînes dans un graphe
Dénition 1.2.7. Dans un graphe G = (V, E), un chemin est une suite de sommets :
v1 , v2 , . . . , vk
telle que chaque paire consécutive (v , v ) est reliée par une arête (ou un arc) du graphe.
i i+1
Dénition 1.2.8. Une chaîne est une suite de sommets où chaque paire consécutive est
reliée par une arête, sans tenir compte de l'orientation.
Interprétation : On peut parcourir les arêtes dans les deux sens.
Exemple 1.2.10. La chaîne suivante est valide :
A−B−C −D
Dénition 1.2.9. Un chemin orienté est une suite de sommets telle que chaque arc
est parcouru dans le sens de son orientation.
Interprétation : On ne peut suivre que le sens des èches.
Exemple 1.2.11. Dans le graphe suivant, on a un chemin orienté :
A→B→C
11
Longueur d'un chemin
Dénition 1.2.10. La longueur d'un chemin est le nombre d'arêtes (ou d'arcs) qui le
composent.
Exemple 1.2.12. Le chemin A → B → C → D est de longueur 3.
Remarque 1.2.6. Un chemin est dit simple s'il ne repasse pas par un même som-
met.
Un chemin fermé (qui revient à son point de départ) est appelé un cycle.
Les chemins sont fondamentaux pour étudier la connexité et les distances dans
un graphe.
1.2.7 Connexité d'un graphe
Dénition 1.2.11. Un graphe est dit connexe si, pour toute paire de sommets (u, v) ∈ V ,
il existe au moins un chemin reliant u à v.
Interprétation : Un graphe connexe représente un système dans lequel il est possible
d'aller d'un sommet à n'importe quel autre en suivant les arêtes du graphe.
Exemple 1.2.13. Le graphe ci-dessous est connexe car tous les sommets sont reliés par
des chemins :
A B
C D
Dénition 1.2.12. Un graphe est dit non connexe s'il existe au moins deux sommets
entre lesquels aucun chemin n'existe.
Interprétation : Un graphe non connexe est composé de plusieurs parties isolées
composantes connexes.
appelées
Composantes connexes
Dénition 1.2.13. Une composante connexe est un sous-graphe connexe maximal,
c'est-à-dire un ensemble de sommets connectés entre eux et non extensible sans perdre la
connexité.
Remarque 1.2.7. Un graphe connexe possède une seule composante connexe.
Un graphe non connexe possède au moins deux composantes connexes.
La connexité est une notion fondamentale pour l'analyse des réseaux.
12
1.2.8 Distance dans un graphe
Dénition 1.2.14. Dans un graphe G = (V, E), la distance entre deux sommets u et v,
notée d(u, v), est la longueur du plus court chemin reliant u à v.
Interprétation : La distance mesure le nombre minimal d'arêtes (ou d'arcs) néces-
saires pour aller d'un sommet à un autre.
Remarque 1.2.9. La notion de distance est fondamentale dans l'étude des réseaux, no-
tamment pour les algorithmes de plus court chemin comme l'algorithme de Dijkstra.
1.2.9 Arbres et forêts
Arbres
Dénition 1.2.16. Un arbre est un graphe non orienté, connexe et sans cycle.
Interprétation : Un arbre est un graphe dans lequel il existe un unique chemin entre
toute paire de sommets. Il ne contient aucune boucle fermée.
B C
D E
13
Remarque 1.2.10. Un arbre à n sommets possède toujours exactement n − 1 arêtes.
Propriétés des arbres
Un arbre est un graphe connexe.
Un arbre est acyclique (ne contient aucun cycle).
Entre deux sommets d'un arbre, il existe un unique chemin.
Forêts
Dénition 1.2.17. Une forêt est un graphe non orienté sans cycle. Autrement dit, une
forêt est un ensemble de plusieurs arbres disjoints.
Interprétation : Une forêt peut être vue comme un graphe dont chaque composante
connexe est un arbre.
Exemple 1.2.17. Le graphe suivant est une forêt composée de deux arbres distincts :
A D
B C E F
Observation : Dans un graphe orienté, la relation entre deux sommets n'est pas
nécessairement réciproque. En conséquence, les algorithmes de parcours (DFS, BFS) et
de recherche de plus court chemin doivent prendre en compte le sens des arêtes.
Remarque 1.2.12. Un graphe non orienté peut être vu comme un cas particulier
d'un graphe orienté où chaque arête est remplacée par deux arcs opposés.
Le choix entre orienté et non orienté dépend directement du phénomène modélisé.
14
1.2.11 Graphe non pondéré
Dénition 1.2.18. Un graphe non pondéré est un graphe dans lequel toutes les arêtes
sont considérées comme ayant le même poids, généralement égal à 1. Autrement dit, au-
cune valeur numérique (distance, coût, durée, etc.) n'est associée aux arêtes.
Interprétation : Dans un graphe non pondéré, seule la structure des connexions entre
les sommets est prise en compte, sans distinction d'intensité ou de coût entre les relations.
Tous les déplacements entre deux sommets adjacents ont le même coût .
Exemple 1.2.18. Un réseau social où chaque relation d'amitié est considérée comme
équivalente est un exemple typique de graphe non pondéré.
A B
Remarque 1.2.13. Un graphe non pondéré peut être vu comme un cas particulier
de graphe pondéré où tous les poids sont égaux à 1.
La distance entre deux sommets correspond alors au nombre minimal d'arêtes entre
eux.
1.2.12 Graphe pondéré
Dénition 1.2.19. Un graphe pondéré est un graphe dans lequel chaque arête est as-
sociée à une valeur numérique appelée poids. Ce poids peut représenter, selon le contexte,
une distance, un coût, une durée ou une capacité.
Interprétation : Un graphe pondéré permet de modéliser des situations où les re-
lations entre sommets ne sont pas équivalentes, mais possèdent une intensité ou un coût
diérent.
Les poids sont généralement notés w(u, v) pour une arête (u, v).
Les algorithmes de plus court chemin (comme Dijkstra) utilisent ces poids pour
optimiser les trajets.
Exemple 1.2.19. Un réseau routier est un exemple typique de graphe pondéré : les arêtes
représentent les routes et les poids représentent les distances ou les temps de trajet.
5
A B
2 3
15
Remarque 1.2.14. Un graphe non pondéré peut être vu comme un cas particulier
de graphe pondéré où tous les poids sont égaux à 1.
La notion de distance dans un graphe pondéré correspond à la somme minimale des
poids des arêtes d'un chemin.
1.2.13 Graphe simple
Dénition 1.2.20. Un graphe simple est un graphe non orienté qui ne contient ni
boucles ni arêtes multiples. Autrement dit, entre deux sommets distincts, il existe au plus
une seule arête.
Interprétation : Un graphe simple modélise une situation où chaque relation entre
deux entités est unique et sans auto-connexion.
A B
Remarque 1.2.15. Les graphes simples sont les plus utilisés en théorie des graphes
classique.
Ils servent de base pour dénir de nombreuses notions comme les chemins, les cycles
et la connexité.
Un graphe simple est toujours non orienté (dans la dénition standard).
1.2.14 Multigraphe
Dénition 1.2.21. Un multigraphe est un graphe dans lequel il est possible d'avoir plu-
sieurs arêtes entre deux mêmes sommets, ainsi que des boucles (arêtes reliant un sommet
à lui-même).
Interprétation : Un multigraphe permet de modéliser des situations où plusieurs
relations distinctes existent entre les mêmes entités, ou lorsqu'une entité peut être reliée
à elle-même.
A B
16
1.3 Représentation des graphes
C D
Dénition 1.3.1. Une liste d'adjacence est une représentation d'un graphe dans la-
quelle chaque sommet est associé à l'ensemble de ses successeurs directs (dans le cas
d'un graphe orienté) ou de ses voisins (dans le cas d'un graphe non orienté).
Liste d'adjacence du graphe précédent :
A : B, C
B : D
C : D
D : -
0 sinon.
m =ij
17
Interprétation de la matrice :
Chaque ligne correspond à un sommet de départ, et chaque colonne à un sommet
d'arrivée.
Graphe correspondant :
A B
C D
On utilise souvent +∞ dans les algorithmes de plus court chemin (ex : Dijkstra)
pour indiquer qu'il n'y a pas de liaison directe.
Exemple :
Considérons le graphe pondéré suivant :
5
A B
2 3
C D
1
18
Les sommets sont ordonnés : A, B, C, D.
La matrice d'adjacence pondérée correspondante est :
0 5 2 0
0 0 0 3
M =
0
0 0 1
0 0 0 0
Interprétation :
A→B a un poids de 5.
A→C a un poids de 2.
B→D a un poids de 3.
C→D a un poids de 1.
4
A B
1 2
C D
Interprétation du graphe :
A→B de poids 4
A→C de poids 1
B→D de poids 2
+∞ +∞ +∞ 0
Mineur contenant des valeurs innies :
Considérons le sous-graphe induit par les sommets {B, C, D} :
19
0 +∞ 2
M{B,C,D} = +∞ 0 +∞
+∞ +∞ 0
Interprétation :
Ce mineur contient plusieurs valeurs +∞, ce qui signie qu'il n'existe pas d'arêtes
directes entre plusieurs paires de sommets.
Pile (Stack)
Dénition 1.3.4. Une pile est une structure de données de type LIFO (Last In, First
Out), ce qui signie que le dernier élément inséré est le premier à être retiré.
Interprétation : Une pile fonctionne comme une pile d'assiettes : on ajoute et on
retire toujours par le sommet, sans accès direct aux éléments intermédiaires.
Opérations principales :
empiler (push) : ajouter un élément au sommet de la pile ;
Elle permet d'explorer un chemin le plus loin possible avant de revenir en arrière
(backtracking).
Elle correspond à la gestion implicite de la récursion (pile d'appels système).
Elle garantit que les sommets sont traités dans l'ordre de leur découverte.
B pop (dépiler)
A push (empiler)
21
File (Queue - FIFO)
front back
Exemple :
Considérons le graphe suivant :
A B
C D
22
1.4.2 Parcours en profondeur (DFS)
Le parcours en profondeur (Depth-First Search, DFS) est un algorithme qui explore
un graphe en suivant un chemin aussi loin que possible avant de revenir en arrière.
Principe :
On part d'un sommet initial.
Lorsqu'un sommet n'a plus de voisin non visité, on revient en arrière (backtracking).
Exemple :
Considérons le même graphe :
A B
C D
1.5.1 Dénition
Dans un graphe pondéré, on associe à chaque arête une valeur numérique appelée
poids.
Le poids d'un chemin est la somme des poids des arêtes qui le composent.
La distance entre deux sommets a et b, notée δ(a, b), est dénie comme le poids
minimal de tous les chemins reliant a à b.
Formellement :
δ(a, b) = min{poids(P ) | P est un chemin de a à b}
23
Exemple : calcul de δ(A, D)
Considérons le graphe pondéré suivant :
4
A B
1 2
3
C D
5
On choisit à chaque étape le sommet non visité ayant la plus petite distance.
24
1
A B
2 3
C D
1
Étape 1 : initialisation
d(A) = 0
d(B) = +∞, d(C) = +∞, d(D) = +∞
Étape 2 : depuis A
d(B) = 1
d(C) = 2
Étape 3 : sommet le plus proche = B
d(D) = d(B) + 3 = 4
Étape 4 : sommet suivant = C
d(D) = min(4, d(C) + 1) = min(4, 3) = 3
Étape 5 : sommet nal = D
Résultat nal :
d(A, B) = 1, d(A, C) = 2, d(A, D) = 3
Remarque 1.5.2. Dijkstra fonctionne uniquement avec des poids positifs ou nuls.
Il garantit des distances optimales depuis un sommet source.
Sa complexité dépend de la structure de données utilisée (le de priorité).
1.5.3 Algorithme de Dijkstra
L'algorithme de Dijkstra permet de déterminer les plus courts chemins depuis un
sommet source dans un graphe pondéré à poids positifs.
Exemple : calcul des distances à partir de A
1
A B
2 3
C D
1
25
Étape Sommet xé d(A) d(B) d(C) d(D)
Initialisation - 0 +∞ +∞ +∞
1 A 0 1 2 +∞
2 B 0 1 2 4
3 C 0 1 2 3
4 D 0 1 2 3
Tous les autres sommets ont une distance innie car ils ne sont pas encore
atteints.
Résultat nal :
d(A, B) = 1, d(A, C) = 2, d(A, D) = 3
26
Algorithme de Dijkstra
1. Pour tout sommet v ∈ V , faire d(v) ← +∞
2. d(s) ← 0
3. Q ← V (ensemble des sommets non traités)
4. Tant que Q ̸= ∅ faire :
4.1 Choisir u ∈ Q tel que d(u) est minimal
4.2 Retirer u de Q
4.3 Pour chaque voisin v de u dans Q faire :
si d(u) + w(u, v) < d(v) alors
d(v) ← d(u) + w(u, v)
27
1.5.5 Graphe hamiltonien
Dénition 1.5.1. Un graphe hamiltonien est un graphe qui contient un cycle hamil-
tonien, c'est-à-dire un cycle simple passant par tous les sommets du graphe exactement
une fois, avant de revenir au sommet initial.
Autrement dit : Un graphe est hamiltonien s'il existe un parcours fermé qui :
visite chaque sommet une et une seule fois ;
forme un cycle.
Remarque :
Un graphe peut être connexe sans être hamiltonien.
Cycle hamiltonien
Un cycle hamiltonien est une suite de sommets :
v1 → v2 → · · · → vn → v1
telle que :
le sommet initial est égal au sommet nal (v1 ), ce qui forme un cycle.
Remarque :
Le cycle contient exactement n arêtes si le graphe possède n sommets.
Il ne faut pas confondre un cycle hamiltonien avec un simple cycle : ici, tous les
sommets doivent être visités.
Exemple
Considérons le graphe suivant :
A B
D C
A B
D C
Conséquence :
On peut entrer dans E, mais on ne peut pas en sortir sans repasser par C.
Cela impose de répéter un sommet, ce qui est interdit dans un cycle hamiltonien.
Conclusion :
Le graphe n'est pas hamiltonien.
Remarques
Un graphe peut être connexe sans être hamiltonien.
29
Comparaison avec les graphes eulériens
Type Porte sur Condition principale
Hamiltonien Sommets Passer une fois par chaque sommet
Eulerien Arêtes Passer une fois par chaque arête
tournées de livraison
planication de circuits
Remarque :
La condition de connexité (en ignorant les sommets isolés) est essentielle.
Un graphe eulérien peut revisiter des sommets, mais jamais des arêtes.
Cycle eulérien
Un cycle eulérien est une suite de sommets :
v1 → v2 → · · · → vk → v1
telle que :
30
Exemple
Considérons le graphe suivant :
A B
D C
n'est pas valide comme cycle eulérien, car certaines arêtes sont répétées.
Conclusion :
Ce graphe n'admet pas de cycle eulérien.
A B
D C
31
A B
D C
La condition degré pair garantit qu'à chaque entrée dans un sommet, il existe une
sortie possible.
Chemin eulérien
Dénition 1.5.3. Un chemin eulérien est une suite de sommets reliant deux som-
mets du graphe, telle que chaque arête du graphe est parcourue exactement une fois, sans
nécessairement revenir au sommet de départ.
Remarque :
Un chemin eulérien peut être ouvert (départ ̸= arrivée).
Théorème 1.5.3. Un graphe non orienté est eulérien au sens de chemin (c'est-à-dire
admet un chemin eulérien) si et seulement s'il est connexe (en ignorant les sommets
isolés) et s'il possède exactement deux sommets de degré impair.
Interprétation :
Les deux sommets de degré impair correspondent au point de départ et au point
d'arrivée du chemin.
Tous les autres sommets ont un degré pair, garantissant une entrée et une sortie à
chaque passage.
32
Contre-exemple
Considérons le graphe suivant :
A B
chemin eulérien.
Il admet en revanche un
Interprétation :
A est le sommet de départ
Graphe eulérien Arêtes Parcourir chaque arête exactement une fois (cycle)
Diérence fondamentale :
Hamiltonien → sommets
contrainte sur les
Remarque importante :
Un graphe peut être hamiltonien sans être eulérien, et inversement.
33
Interprétation
Les graphes eulériens modélisent des situations où l'on cherche à parcourir chaque
liaison exactement une fois, sans répétition. On les retrouve notamment dans :
les parcours de réseaux routiers (nettoyage, inspection ou maintenance de toutes les
routes une seule fois) ;
Remarque :
Le modèle eulérien est adapté lorsque l'intérêt porte sur les arêtes du réseau.
Cela le distingue des problèmes hamiltoniens, où l'on s'intéresse aux sommets.
Les graphes bipartis constituent une classe importante de graphes utilisée dans de
nombreuses applications telles que l'aectation de tâches, les réseaux sociaux et les pro-
blèmes de couplage.
L'idée fondamentale est de partitionner les sommets en deux ensembles distincts.
1.6.1 Dénition
Dénition 1.6.1. Un graphe biparti est un graphe dont l'ensemble des sommets peut
être partitionné en deux ensembles disjoints U et V tels que chaque arête relie un sommet
de U à un sommet de V .
Autrement dit,
U ∩V =∅
et aucune arête ne relie deux sommets appartenant au même ensemble.
1.6.2 Exemple
Considérons les ensembles
U = {u1 , u2 }, V = {v1 , v2 , v3 }.
Les arêtes sont
E = {u1 v1 , u1 v2 , u2 v2 , u2 v3 }.
34
v1
u1
v2
u2
v3
Ce graphe est biparti car toutes les arêtes relient un sommet de U à un sommet de V.
semble.
Le nombre total d'arêtes est
|E| = m × n.
Par exemple,
K2,3
possède 2×3=6 arêtes.
χ(G) = 2
lorsqu'il possède au moins une arête.
On attribue une couleur à tous les sommets de U et une autre couleur à tous les
sommets de V.
1.6.6 Applications
Les graphes bipartis interviennent dans de nombreux domaines :
35
Systèmes de recommandation ;
Réseaux de communication ;
1.6.7 Conclusion
Un graphe biparti est un graphe dont les sommets sont répartis en deux ensembles
disjoints. Il joue un rôle fondamental en théorie des graphes et en optimisation, notamment
grâce à ses propriétés de coloration et de couplage.
La théorie de la coloration est une branche de la théorie des graphes qui étudie l'at-
tribution de couleurs à certains éléments d'un graphe sous des contraintes données.
Le problème le plus classique est la coloration des sommets, où deux sommets
adjacents doivent recevoir des couleurs distinctes.
1.7.1 Dénition
Soit G = (V, E) un graphe simple, où V désigne l'ensemble des sommets et E l'en-
semble des arêtes.
Dénition 1.7.1. Une coloration propre des sommets d'un graphe G est une appli-
cation
c : V −→ 1, 2, . . . , k
telle que pour toute arête uv ∈ E,
c(u) ̸= c(v).
v1 − v2 − v3 .
Une coloration possible est :
36
Deux couleurs susent donc :
χ(P3 ) = 2.
χ(Kn ) = n.
En particulier,
χ(K3 ) = 3.
Ce théorème arme qu'il est toujours possible de colorier les régions d'une carte plane
avec au plus quatre couleurs de manière que deux régions adjacentes ne possèdent jamais
la même couleur.
Dénition 1.7.3. Une coloration propre des arêtes est une application
c : E −→ 1, 2, . . . , k
1.7.7 Applications
La théorie de la coloration intervient dans de nombreux domaines :
Ordonnancement de tâches ;
37
1.7.8 Conclusion
La théorie de la coloration constitue un domaine fondamental de la théorie des graphes.
Elle fournit des outils puissants pour résoudre des problèmes d'optimisation et d'allocation
de ressources tout en donnant lieu à des résultats théoriques majeurs tels que le théorème
des quatre couleurs.
Les graphes peuvent être représentés sous forme matricielle. Cette représentation per-
met d'étudier leurs propriétés à l'aide d'outils algébriques et de concevoir des algorithmes
ecaces pour leur analyse. Parmi les matrices les plus utilisées gurent la matrice d'inci-
dence et la matrice des distances.
0 sinon.
i j
m = ij
V = {A, B, C}
et
E = {e1 = AB, e2 = BC, e3 = AC}.
A B
38
1.8.3 Matrice des distances
Dénition 1.8.2. La matrice des distances d'un graphe G est la matrice
D = (dij )
On a toujours :
dii = 0.
1.8.4 Exemple
Considérons le graphe chemin
A − B − C − D.
1.8.5 Applications
Les matrices associées aux graphes permettent :
d'étudier sa structure ;
1.8.6 Conclusion
Les matrices d'incidence et des distances sont des outils fondamentaux en théorie des
graphes, permettant une analyse mathématique et algorithmique des réseaux.
39
1.9 Arbres
Dénition 1.9.1. Un arbre est un graphe simple, non orienté, connexe et sans cycle.
Autrement dit :
|E| = n − 1 ;
entre deux sommets, il existe un unique chemin simple.
1.10.1 Dénition
Dénition 1.10.1. Un arbre couvrant minimal est un arbre couvrant tous les sommets
de G dont la somme des poids des arêtes est minimale.
Applications :
réseaux de transport ;
réseaux électriques ;
réseaux informatiques.
40
1.11 Algorithme de Kruskal
1.11.1 Principe
L'algorithme de Kruskal construit un arbre couvrant minimal en ajoutant progressi-
vement les arêtes les moins coûteuses sans créer de cycle.
1.11.2 Étapes
1. Trier les arêtes par poids croissant ;
sinon la rejeter ;
1.11.3 Pseudo-code
Trier E par poids croissant
T ←∅
Pour chaque arête e∈E :
1.12.1 Principe
L'algorithme de Prim construit un arbre couvrant minimal en partant d'un sommet
et en l'étendant progressivement.
À chaque étape, on ajoute l'arête de poids minimal reliant l'arbre à un sommet exté-
rieur.
1.12.2 Étapes
1. Choisir un sommet initial ;
41
1.12.3 Pseudo-code
Choisir un sommet s
T ← {s}
Tant que T ̸= V :
1.13 Comparaison
Kruskal Prim
Stratégie Globale (arêtes) Locale (extension)
Structure Forêt Arbre unique
Idéal pour Graphes clairsemés Graphes denses
Démarrage Sans racine Sommet initial
1.13.1 Conclusion
Les algorithmes de Kruskal et de Prim permettent de construire un arbre couvrant
minimal selon deux approches diérentes :
B
1 4
A 2 D
3 5
C
Ajouter AB(1) ;
Ajouter BC(2) ;
Rejeter AC(3) (formation d'un cycle) ;
Ajouter BD(4).
42
1.14.2 Arbre couvrant minimal
L'arbre couvrant minimal obtenu est :
1.15.1 Principe
L'algorithme de Prim construit un arbre couvrant minimal en partant d'un sommet
et en ajoutant progressivement les arêtes de poids minimal reliant l'arbre aux sommets
restants.
1.16 Conclusion
Le tri topologique est un outil fondamental pour l'étude des graphes orientés sans
cycle (DAG).
1.17.1 Dénition
Un tri topologique d'un graphe orienté acyclique (DAG) est un ordre linéaire de ses
sommets tel que :
si u → v, alors u apparaît avant v.
Condition d'existence Un graphe admet un tri topologique si et seulement s'il est
sans cycle.
43
1.17.2 Algorithme de Kahn
Principe : on supprime progressivement les sommets de degré entrant nul.
1. Calculer les degrés entrants de tous les sommets.
extraire un sommet u;
l'ajouter au résultat ;
B D
C E
A → B, A→C
Nouveaux degrés entrants :
B = 0, C = 0, D = 2, E = 1
D devient 0
E devient 0
44
1.17.7 Étape 4 : traitement de D et E
On peut choisir :
D puis E ou E puis D
1.17.8 Résultat
Un tri topologique possible est :
A→B→C→D→E
1.17.9 Applications
planication de tâches ;
compilation de programmes ;
ordonnancement.
1.17.10 Conclusion
Le tri topologique permet d'ordonner les sommets d'un graphe orienté acyclique en
respectant les relations de dépendance.
45