Académique Documents
Professionnel Documents
Culture Documents
Faculté de Mathématiques
Département de Recherche Opérationnelle
Réalisé par:
KAOUANE Mohamed El Amine TIFAOUI Sarra Soumeya
16 16 31 06 43 27 17 17 31 07 31 01
M2 RO-2MIR
Janvier 2022
Projet Problème de reconnaissance, classes des graphes et problème de coloration CGA
Contents
1.1 Graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Sous-graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Voisinage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.11 Connexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.13 Clique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.14 Stable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
II Problèmes de graphes 8
2.1 Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.1 La Classe P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3.2 La classe NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5 Graphe triangulé 14
5.1 Préliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
IV Problème de coloration 17
5.2 Histoire du problème de la coloration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
V Application 22
5.10 Langage utilisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
VI Conclusion 32
Introduction
Sans que l’on en soit toujours conscient, la Théorie des Graphes est aujourd’hui très présente dans notre
société moderne. Cette branche des mathématiques, qui est traditionnellement considéree comme née sous
la plume du mathématicien suisse Leonhard Euler en 1736, a connu une croissance exponentielle au cours
des cinquante dernières années, notamment grâce aux travaux de Claude Berge qui a grandement participé
à sa diffusion.
Pendant plus d’un siècle, le développements des plus spectaculaires de la théorie des graphes a été largement
inspiré et guidé par la Conjecture des Quatre Couleurs1 , le résultat fut conjecturé en 1852 par Francis
Guthrie, intéressé par la coloration de la carte des régions d’Angleterre, mais ne fût démontré qu’en 1976
par deux Américains Kenneth Appel et Wolfgang Haken. Ce fut la première fois que l’utilisation d’un
ordinateur a permis de conclure leur démonstration en étudiant les 1478 cas particulier auxquels ils ont ra-
mené le problème, bien que ce problème ait été résolu, il attire toujours de nombreux chercheurs, qui tentent
de le résoudre sans l’aide d’ordinateurs.
S’appuyant sur les fondations laissées par Claude Berge, Paul Erdos, Bill Tutte, et d’autres, une nou-
velle génération de théoriciens des graphes a enrichi et transformé le sujet en développant des nouvelles
techniques puissantes, beaucoup étant empruntées à d’autres domaines des mathématiques. Celles-ci ont
conduit, en particulier, à la résolution de plusieurs anciennes conjectures, notamment la Conjecture Forte
des Graphes Parfaits de Berge (devenue maintenant un théorème) et la Conjecture de Kneser, toutes deux
sur les colorations.
De nombreux problèmes peuvent être modélisés sous forme de problème de coloration. L’utilité pratique de
ce problème, ne cesse d’augmenter et d’avoir des extensions pratiques; notamment les problèmes industriels
et autres. Ainsi, la résolution des problèmes approchés par le biais de la coloration des sommets d’un graphe
passe par l’étude des sous ensembles remarquables de sommets, ou les arêtes.
L’étude des graphes se réalise sous deux points de vues complémentaire: l’étude de propriétés structurelles
des graphes étudié ou de familles de graphes et l’étude algorithmique de certaines propriétés.
Il devrait être évident au vu des points ci-dessus que la théorie des graphes est une discipline en plein essor.
Elle contient un ensemble de théorèmes beaux et puissants qui s’appliquent largement, et plus encore, grâce
aux propriétés structurelles des graphes.
Le présent projet a commencé avec pour intention de présenter la classe des graphes triangulés, par la suite
notre attention s’est portée sur le problème de coloration.
Dans un premier temps, nous allons introduire quelques terminologies utilisées dans l’ensemble de ce docu-
ment ainsi des notions de graphes utiles pour définir les graphes triangulés. Nous allons par la suite définir
la classe des graphes triangulés, et aborder le problème de reconnaissance.
Dans le deuxième chapitre.
Nous traitons dans le chapitre 3 le problème de coloration d’un aspect génèral, par la suite nous nous con-
centrons sur une classe particulière de graphes, qui est la classe des triangulés.
Quant au quatrième chapitre, il se focalise autour de la résolution du problème de coloration. Enfin, nous al-
lons résoudre par le biais d’un programme implémenter sous le langage de programmation python l’algorithme
de reconnaissance des graphes triangulés ainsi que l’algorithme de coloration sur cette classe.
1 Ce problème est considéré comme l’un des problèmes les plus célèbres en théorie des graphes.
Chapitre 1
Part I
Dans ce chapitre, nous introduisons les notions et terminologies utilisées dans l’ensemble de ce document.
Dans la première partie, nous rappelons quelques définitions de base de la théorie des graphes.
1.1 Graphe
Un graphe G = (V, E) est constitué d’un ensemble non vide fini V = {v1 , . . . , vn } appelé ensemble des
sommets et d’un ensemble d’arêtes E = {e1 , . . . , en }, une arête est déterminée par une paire de sommets
non-ordonnée, le graphe dans ce cas est dit non orienté.
On nomme ordre de G le nombre de sommets qu’il contient, noté |V | = n, ainsi le nombre des arêtes de G
est appelé sa taille, noté |E| = m.
1.2 Sous-graphe
H est un sous-graphe induit de G si l’ensemble des arcs de H est formé de l’ensemble des arcs de G ayant
leurs extrémités dans l’ensemble des sommets de H.
1.5 Voisinage
Le voisinage d’un sommet v est l’ensemble des sommets adjacents à v, noté N (v).
Le degré d’un sommet u dans un graphe G, noté dG (u), est le nombre d’arêtes incidentes à u, et donc
dG (u) = |NG (u)|. Le degré maximum (respectivement minimum) d’un graphe G est noté (G) (respectivement
δ(G)) et défini comme le maximum (respectivement minimum) des degrés des sommets de G.
Le graphe complémentaire d’un graphe G = (V, E) est le graphe, noté Ḡ, ayant pour ensemble de sommets
V et dans lequel deux sommets sont adjacents si et seulement s’ils ne le sont pas dans G.
Un cycle est une suite d’arêtes consécutives C = (e1 , e2 , . . . , ek ), k ≥ 3 (chaine simple) dont les deux sommets
extrémités sont identiques. La longueur d’un cycle est le nombre de ses arêtes.
Une corde est un arc raliant deux sommets non-consécutifs d’un cycle.
Un trou tout graphe ayant au moins quatre sommets et dont les sommets peuvent être ordonnés de manière
à former un cycle sans corde . Un anti2 trou est le graphe complémentaire d’un trou.
Une chaı̂ne minimale de longueur k est une séquence {v0 , v1 , . . . , vk } de sommets distincts tels que vi est
adjacent à vi+1 ∀i = 0,¯k sans corde et vo , vk représentent les deux extrémités de la chaı̂ne, une telle chaı̂ne
est notée par Pk .
Un graphe est dit simple lorsque, pour l’ensemble des sommets du graphe, il y a au plus une arête entre
deux sommets et pas de boucle (arc partant d’un sommet allant vers lui même).
1.11 Connexité
Soit G = (V, E) un graphe simple et connexe, i.e qu’il est possible, à partir de n’importe quel sommet, de
rejoindre tous les autres sommets. Il est bien connu que pour tout graphe G, l’un de G ou G est connexe.
1.13 Clique
Une clique de G, notée K, est un ensemble de sommets adjacents deux-à-deux. La taille d’une clique est
égale au nombre de ses sommets. Une clique de G est maximum si elle est de taille maximale dans G. la
cardinalité maximale d’une clique de G est notée par le nombre ω(G):
ω(G) = max{ |K| : K est une clique de G}.
1.14 Stable
Un stable S dans un graphe G est un sous-ensemble de sommets de G tel que G[S] est un graphe sans arêtes.
Le nombre de stabilité α(G) de G est le cardinal maximal d’un stable dans G :
α(G) = max{ |S| : S est un stable de G}.
Un graphe G est dit complet si tous ses sommets sont adjacents deux-à-deux, autrement dit, si V (G) est une
clique. Un graphe complet d’ordre n est note Kn .
Dans ce qui suit, nous rappelons quelques définitions importantes relatives aux problèmes classiques de la
théorie des graphes.
Chapitre 2
Part II
Problèmes de graphes
Beaucoup de problèmes qui se modélisent et se posent sur les graphes sont parfois simples à résoudre et
parfois plus difficiles. Le temps d’exécution d’un algorithme est un facteur important dans l’évaluation de
son efficacité, c’est pourquoi l’algorithmique des graphes occupe aujourd’hui une place importante en infor-
matique fondamentale et appliquée.
Dans cette section, nous s’attachons à rappeler quelques définitions et notions fondamentales relatives aux
algorithmes, à la complexité, aux graphes et aux problèmes auxquels nous nous intéresserons dans la suite.
Enfin, nous donnons quelques éléments de combinatoire qui serviront à établir et à analyser quelques algo-
rithmes présentés.
2.1 Instance
On appelle instance d’un problème, un cas de celui-ci pour lequel tous les paramètres décrivant et car-
actérisant le problème sont instanciés.
2.2 Algorithme
Un algorithme est une séquence fini d’étapes élémentaires, complémentaires, logiques et chronologiques
transformant une chaine de caractères représentant les données d’une instance d’un problème en une chaine
de caractères représentant les résultats3 .
Un algorithme est dit efficace s’il est en temps polynomial.
Nous allons nous intéresser a l’étude de la difficulté intrinséque des problémes de décision, ce que l’on appelle
complexité des problèmes, ceux ci sont classé selon la complexité des algorithmes les résolvant.
2.3.1 La Classe P
Les problèmes de la classe P4 sont dits faciles. Ce sont ceux que l’on sait résoudre efficacement.
3 [Yagouni]
4 Polynomial time.
2.3.2 La classe NP
La classe des problèmes NP5 est la classe des problèmes pour lesquels on peut vérifier si la solution est celle
d’un problème est facile.
Il est à noter qu’un problème de reconnaissance est dans la classe NP si pour toute instance de ce problème,
on peut vérifier, en un temps polynomial par rapport à la taille de l’instance, qu’une solution proposée ou
devinée permet d’affirmer que la réponse est ”OUI” pour cette instance.
Un problème NP-complet possède la propriété que tout problème dans NP peut être transformé en celui-ci
en temps polynomial.
Ce sont lesproblèmes d’optimisation dont le problème de décision approprié est NP-complet. Il est conjecturé
qu’il n’existe pas d’algorithme polynomial pour les problèmes d’optimisation NP-difficiles. Les méthodes de
résolution exactes ou approchées proposées au cours de ces dernieres années sont nombreuses, elles sont le
reflet de l’´eventail de méthodes dont on dispose pour traiter les problemes d’optimisation combinatoire.
Pour tout graphe G, quatre paramètres classiques d’optimisation ont été définis :
- Le nombre de stabilité de G, noté α(G), est la taille d’un stable maximum de G.
- Le nombre de clique de G, noté ω(G), est la taille d’une clique maximum de G.
- Le nombre chromatique, noté χ(G), est la taille minimale d’une partition de V (G) en stables.
- Le nombre de couverture par des cliques, noté θ(G), est la taille minimale d’une partition de V (G) en cliques.
Les paramètres ω(G), χ(G), α(G) et θ(G) ont fait l’objet de très nombreuses études, et les problèmes de
décision liés à ces quatre paramètres font partie des problèmes NP-complets sur les graphes.
Lorsqu’un problème est observé ou bien compris d’être un problème reconnu, les algorithmes de résolutions,
les heuristiques, les méta-heuristiques, et les caractéristiques de ce problème se trouvent prêtes à être ex-
ploiter dans le but voulu. Ayant une situation précise, qui se modélise par un graphe simple, connaı̂tre les
spécification de ce graphe donnera un plus à cette modélisation, de ce fait connaitre la classe du graphe
rendra les informations plus utiles sur la situation ce qui aidera dans l’optimisation, ou bien dans la prise de
décision.
Un ensemble de graphes peut être regroupé en familles; on parle alors de classe de graphes. Bien souvent,
ces classes contiennent des graphes ayant des propriétés communes.
Une classe de graphes est dite héréditaire si pour chaque graphe de la classe, tous ses sous-graphes induits
appartiennent aussi à la classe.
Un grand nombre de classes a été défini. De façon exhaustive, le site internet [ISGCI6 ] en liste une très
grande collection. Nous listons et définissons ci-après quelques classes de graphes citées dans ce travail.
En 1960, l’historique des graphes parfaits a commencé, a son origine les travaux de C.E. SHANNON7
en théorie de l’information , et plus précisément, sur les codages optimaux et la capacité d’un canal de
communication.
Nous présentons dans cette partie un bref aperçu sur l’étude des graphes parfaits, des conjectures de Berge
jusqu’au théorème fort des graphes parfaits.
Théorème 1 (Théorème des Graphes Parfaits). Un graphe est parfait si et seulement si son complémentaire
est parfait.
6 Information System on Graph Classes and their Inclusions
7 Claude Shannon est un ingénieur en génie électrique et mathématicien américain. Il est l’un des pères, de la théorie de
l’information.
8 Lovász est un mathématicien hongrois connu pour ses travaux en combinatoire, notamment en théorie des graphes, et
La deuxième conjecture, plus forte que la première, a été pendant quarante ans l’un des plus grands problèmes
ouverts en théorie des graphes. C’est la Conjecture Forte des Graphes Parfaits (en anglais: Strong Perfect
Graph Conjecture, notée SPGC):
Conjecture 1. Un graphe est parfait si et seulement s’il est de Berge.
En 2002, Chudnovsky, Robertson, Seymour et Thomas annoncent qu’ils ont résolu la SPGC, devenue depuis
le Théorème Fort des Graphes Parfaits (SPGT):
Théorème 2 (Théorème Fort des Graphes Parfaits). Un graphe est parfait si et seulement s’il est de
Berge.
Il est aujourd’hui bien connu que le complémentaire d’un graphe parfait est parfait.
Un des aspects intéressants des graphes parfaits est qu’ils contiennent plusieurs classes fondamentales de
graphes, telles que les graphes bipartis, les graphes triangulés, les graphes d’intervalles et les graphes de
comparabilité.
Dans ce qui va suivre nous allons voir les sous-classes particulières de la classe des graphes parfaits.
De nombreuses autres classes appartenant à la grande classe des graphes parfaits ont été définies dans le
cadre de l’étude de la SPGC, nous mentionnons ici quelques classes connues ou auxquelles nous faisons
référence dans ce travail.
Graphes bipartis G est dit biparti si l’ensemble V des sommets peut être partitionner en deux sous-
ensembles non vides V1 et V2 c’est-a-dire V = V1 ∪ V2 et toute arête admet une seule extrémité dans le même
ensemble, on écrit alors G = (V1 ∪ V2 , E).
La perfection des graphes bipartis est triviale puisque ce sont les graphes dont le nombre chromatique est
au plus deux.
Graphes triangulés cette importante classe de graphes a été introduite par Hajnal et Suranyi. Un graphe
G est dit triangulé s’il ne contient pas de trou comme sous-graphe induit.
La perfection des graphes triangulés est une conséquence d’un résultat de Hajnal et Suranyi.
Nous verrons par la suite la classe des graphes triangulés en détails.
Graphes faiblement triangulés introduite par Hayward, cette classe de graphes généralise celle des
graphes triangulés. Un graphe est dit faiblement triangulé s’il ne contient pas de trou de longueur au moins
cinq ou son complémentaire.
Graphes Hypertriangulés Un graphe G = (V, E) est hypotriangulé si pour toute paire de sommets
a, b ∈ V telle que ayb est un P3 , alors ab ∈ E ou il existe z ̸= y tel que azb est un P3 .
Graphes de Meyniel un graphe G est dit de Meyniel si tout cycle impair de G possède deux cordes. La
perfection de cette classe fut établie par Meyniel en utilisant l’échange bi-chromatique. Une caractérerisation,
ainsi qu’un algorithme de reconnaissance, reviennent à Burlet et à Fonlupt. Le problème de la coloration est
également résolu pour ces graphes.
Graphes d’intervalles un graphe G est appelé graphe d’intervalles si chaque sommet de G représente un
intervalle sur la droite réelle, de sorte que deux sommets sont adjacents si et seulement si leurs intervalles
correspondants s’intersectent.
Tout graphe d’intervalles est triangulé et donc parfait.
Quelques caractéristiques des graphes d’intervalles:
• Un graphe est d’intervalles si et seulement si, il possède un schéma d’élimination parfait.
• Si G est un graphe d’intervalles alors il n’existe pas de cycle avec plus de 3 arêtes et sans raccourci.
• Un graphe d’intervalles est le graphe complémentaire d’un graphe de comparabilité.
• Un graphe G est d’intervalles si et seulement si Ḡ est de comparabilité et G ne contient aucun C4
comme sous-graphe induit. (Un C4 est un cycle de longueur 4 sans corde, c’est-à-dire un carré.)
Graphes de comparabilité un graphe est de comparabilité si on peut orienter ses arêtes de façon transi-
tive, c’est-à-dire de telle sorte que s’il existe un arc de i vers j et un arc de j vers k, alors il existe également
un arc de i vers k.
Les graphes de comparabilité ont les caractéristiques suivantes:
• Les graphes de comparabilité sont parfaits.
• Les graphes de comparabilités sont parfaitement ordonnables.
• Le théorème de Dilworth nous dit que θ(G)= α(G).
Graphes scindés un graphe G est dit scindé si l’ensemble de ses sommets V (G) peut être partitionné en
une clique K et un stable S.
Foldes et Hammer ont montré que tout graphe scindé et son complémentaire sont triangulés donc parfaits.
Graphes parfaitement ordonnables cette classe de graphes a été introduite par Chvatal. Un graphe
est dit parfaitement ordonnable si et seulement s’il admet un ordre < sur l’ensemble de ses sommets tel qu’il
n’existe pas de P4 induit de G, noté a − b − c − d, avec a < b et d < c. Un tel ordre est dit ordre parfait.
Les graphes parfaitement ordonnables sont parfaits.
Graphes planaires un graphe est planaire s’il existe un plongement de celui-ci dans le plan tel qu’aucune
arête ne se croise.
Tucker a montré que tout graphe planaire sans trou impair est parfait.
Nous citons quelques caractéristiques des graphes planaires ci-dessous:
• Dans un graphe planaire le nombre de faces est égal à |E|-|V | +2.
• Dans tout graphe planaire G, il existe un sommet de degré ≤ 5.
• Si G est planaire alors χ(G) ≤ 4.
• Un graphe est planaire si et seulement si il ne contient aucune subdivision de K5 ou de K3,3 comme
sous-graphe partiel.
Graphes de permutation Un graphe G est de permutation s’il existe une permutation π des sommets
telle que x est adjacent à y dans G si et seulement si:
x < y et π(y) < π(x) ou bien y < x et π(x) < π(y).
Quelques caractéristiques des graphes de permutation:
• Les graphes de permutation sont de comparabilité.
• Un graphe G est de permutation si et seulement si G et Ḡ sont de comparabilité.
Nous donnons ici quelques relations d’inclusion entre des classes de graphes usuelles. En particulier, on a les
inclusions fondamentales suivantes :
Graphe biparti ⊂ graphe de comparabilité.
Graphe fortement parfait ⊂ graphe parfait.
Graphe triangulé ⊂ graphe parfait.
Graphe faiblement triangulé ⊂ graphe parfait.
Graphe d’intervalle ⊂ graphe triangulé.
Graphe scindé ⊂ graphe triangulé.
La figure suivante montre quelques relations d’inclusion entre des classes de graphes usuelles.
Chapitre 3
Part III
Problèmes de reconnaissance
Reconnaı̂tre une classe de graphes, c’est donner un algorithme permettant de décider si un graphe appartient
ou non à la classe.
Dans ce qui va suivre nous allons nous intéressser à la classe des graphes triangulés, une classe qui a su
trouver une place importante dans la pratique, en particulier dans les problèmes d’allocation.
Nous définissons cette classe, tout en donnant des généralités ainsi que l’algorithme de reconnaissance de
cette classe de graphe.
Comme nous l’avons cité haut, le problème de la reconnaissance des graphes parfaits est resté ouvert jusqu’en
2002. Puis, Chudnovsky, Seymour, et al. ont simultanément proposé deux algorithmes de reconnaissance
des graphes de Berge en temps polynomial.
5 Graphe triangulé
5.1 Préliminaires
Autrement dit, dans un graphe triangulé tout cycle de longueur au moins 4 contient une corde (une arête
joignant deux sommets non consécutifs du cycle), i.e. les seuls cycles induits sont des triangles.
La figure 2 présente deux graphes: dans le graphe de la figure (a), le cycle (a, b, e, d) est un trou donc ce
graphe n’est pas triangulé. Par contre les cycles élémentaire du graphe de la figure (c) sont tous des triangles,
donc ce graphe est triangulé.
Remarque 1. Il est évident que si tous les cycles d’un graphe G sont des triangles, alors les cycles de
tout sous graphe induit de G sont aussi des triangles. Ainsi la propriéte d’être un graphe triangulé est une
propriété héréditaire, c’est-à-dire tout sous graphe induit d’un graphe triangulé est triangulé.
Définition 2. Un sommet v est dit simplicial si son voisinage N(v) est une clique.
Un célèbre théorème de Dirac affirme qu’on peut toujours trouver un sommet simplicial dans un graphe
triangulé.
Théorème 3 (Dirac). Tout graphe triangulé G autre qu’une clique contient au moins deux sommets sim-
pliciaux non adjacents.
Théorème 4 (Fulkerson et Gross (1965) ). Un graphe est triangulé si et seulement s’il admet un ordre
d’élimination simplicial.
Proposition 2. Si G admet un ordre d’élimination simplicial, donc tous ses sous graphes induits admettent
eux aussi un ordre d’élimination simplicial.
Rose, Tarjan et Lueker ont introduit en 1976 un algorithme appelé parcours en largeur lexicographique 10 (ou
Lex-BFS pour Lexicographic Breadth-First Search) qui permet de trouver efficacement un ordre d’élimination
simplicial d’un graphe triangulé, et qui permet par conséquent de déterminer si un graphe est triangulé ou
non.
Plusieurs algorithmes de reconnaissance de graphes triangulés sont basés sur cette idée.
Proposition 2. Pour un parcours Lex-BFS, si G est triangulé, le dernier sommet visité est simplicial.
9 Perfect Elimination Ordering
10 Le parcours d’un graphe est un procédé déterministe qui permet de choisir, à partir des sommets visités, le sommet suivant
à visiter. Le problème de parcours consiste à déterminer un ordre sur les visites des sommets à partir d’un sommet de départ,
fixé à l’avance.
Lex-BFS calcul un ordre d’élimination simplicial pour un graphe triangulé avec une complexité temporelle
O(|E| + |V |)11 .
Pour reconnaitre donc si un graphe est triangulé, il suffit de vérifier si l’ordre d’élimination simplicial obtenu
par lex-BFS est parfait.
Nous obtenons alors un ordre σ : V → [0, n − 1] sur les sommets du graphe, qui vérifie la propriété suivante :
Propriété 2. Si G est triangulé, alors σ −1 ∗ (n − 1) est simplicial.
Principe de l’algorithme
L’algorithme Lex-BFS a été le premier algorithme linéaire de reconnaissance des graphes triangulés.
Ces dernières années, il a été utilisé dans plusieurs applications. Il est à la base de la simplification du
premier algorithme linéaire de reconnaissance des graphes d’intervalles.
L’algorithme permet de d’ordonner un graphe G suivant l’ordre lexicographique avec la création d’un ordre
entre les voisins d’un sommet sélectionné en utilisant l’étiquetage lexicographique des sommets à travers la
recherche de telle sorte qu’un sommet non numéroté reçoit une étiquette.
Afin d’avoir une idée du fonctionnement de l’algorithme, nous détaillons son principe:
L’algorithme procède en deux étapes : construction d’un ordre d’élimination simplicial si et seulement si le
graphe est triangulé puis vérification.
La première étape, consiste à initialiser chaque sommet du graphe à un ensemble vide.
La deuxième étape, consiste à créer un ordre σ de sommets de V, d’une manière suivante :
choisir un sommet de départ s et l’initialiser à n, qui devient le plus grand suivant l’ordre lexicographique.
pour chaque sommet i de n à 1 on choisit un sommet non numéroté x d’étiquette maximum, et σ(i) := x
pour chaque voisin non numéroté y de x on ajoute (i) à tous les sommets y.
11 Un algorithme ayant une telle complexité est dit en temps linéaire ou optimal.
Chapitre 5
Part IV
Problème de coloration
Bien que la coloration de graphe est l’un des 21 problèmes montrés NP-complet dans le célèbre papier de
Karp (Karp, 1972 ), la classe des graphes parfaits demeure une importante classe pour lesquels le problème
de coloration peut être résolu en un temps polynomial.
Dans cette partie, nous nous intéressons au problème de coloration dans les graphes de manière générale, et
plus particulièrement dans les graphes parfaits.
De nombreux problèmes peuvent être modélisés sous forme de problème de coloration de graphes, et ce
dans divers domaines, mais au-delà du large éventail d’applications pratiques que ce problème permet de
modéliser, sa complexité combinatoire rend difficile sa résolution exacte des lors que la taille des problèmes
à traiter est conséquente.
L’une des premières sources d’inspiration de la coloration de graphes a été le célèbre problème des 4 couleurs
(the fourth map coloration), qui est resté ouvert pendant presque un siècle.
Francis Guthrie12 remarqua que quatre couleur suffisent pour colorier la carte d’Angleterre, il posa alors
la question de savoir si 4 couleurs sont suffisantes pour colorier une carte géographique quelconque de telle
sorte que deux pays voisins aient des couleurs distinctes?
Malgré un énoncé simple, ce problème s’est révélé très difficile et a suscité un très grand intérêt de la part des
chercheurs, de nombreux travaux sont publiés dans la littérature avec de pertinents résultats mathématiques.
Une coloration des sommets d’un graphe G est une fonction, notée habituellement π, de V(G) dans N ∗ telle
que pour toute paire de sommets adjacents {u, v}, on a π(u) ̸= π(v).
Le nombre chromatique d’un graphe G, noté χ(G), est le nombre minimum de couleurs à affecter aux som-
mets de G, de telle sorte que les sommets adjacents soient de couleurs différentes.
En d’autres termes, il s’agit de trouver le nombre minimum tel qu’il existe une application:
Dans le cas général, déterminer le nombre chromatique χ(G) d’un graphe quelconque est un problème
NP-difficile. Pour cette raison, plusieurs travaux de la littérature se sont intéressés à déterminer χ pour
des classes particulières de graphes, ou bien à proposer des bornes (inférieures ou supérieures) en fonction
12 Cartographe anglais
Un autre résultat trivial bien connu est que la taille d’une clique d’un graphe G constitue une borne inférieure
pour le nombre chromatique χ. En effet, si un graphe G contient une clique de taille ω, alors il faut au moins
ω couleurs pour le colorer. Ainsi, tout graphe G vérifie la relation: ω(G) ≤ χ(G).
Parmi les nombreux résultats relatifs au nombre chromatique nous pouvons citer le célèbre résultat de Appel
et Haken.
Théorème 7 (Appel and Haken, 1976). Tous graphe planaire est 4-coloriable.
Comme citer ci-haut, décider si un graphe possède une coloration en k couleurs est un problème NP-complet.
Il n’existe jusqu’a présent pas d’algorithme polynomial permettant de colorier tous les graphes de manière
optimale.
Pour certaines classes de graphes parfaits, des algorithmes existants dans la littérature peuvent être efficaces
opérant en temps polynomiaux ont été élaborés pour le problème de la coloration.
Dans ce qui suit nous allons présentés quelques algorithmes de coloration.
L’algorithme glouton de coloration considère les sommets selon un ordre < et donne à chaque sommet la plus
petite couleur non encore attribuée à l’un de ses voisins. Un graphe est parfaitement ordonnée avec l’ordre
< si et seulement si l’algorithme glouton appliqué à chaque sous-graphe induit utilisant l’ordre < colorie le
sous-graphe avec un nombre minimum de couleurs.
Nous allons nous intéresser dans cette partie à la coloration des graphes triangulés. Nous allons tout d’abord
présenter un algorithme qui nous sera utile pour la coloration des graphes triangulés : il s’agit de l’algorithme
Nous présentons dans ce qui suit quelques méthodes de coloration des sommets d’un graphe pour certaines
classes des graphes parfaits.
Les graphes bipartis constituent l’une des classes les plus anciennes et les plus connues en Théorie des
Graphes.
La reconnaissance des graphes bipartis est possible en Ο(n+m), en appliquant l’algorithme suivant, qui con-
siste à trouver une 2-coloration d’un graphe donné si elle existe.
Nous supposons que le graphe G est connexe (sinon il suffit d’appliquer l’algorithme sur chacune des com-
posantes connexes de G, celles-ci pouvant être déterminées en O(m).
Graphes d’intervalles
Une méthode de coloration de cette classe de graphes est donnée par l’algorithme 5.
Problème de la clique
Plusieurs problèmes réputés NP-complets tels que la recherche de coloration minimum, clique maximum, ou
stable maximum se résolvent en temps polynomial pour des classes de graphes parfaits.
La recherche de la plus grande clique ou sa cardinalité dans un graphe est un problème difficile de la théorie
des graphes, avec de nombreux domaines d’applications. Les algorithmes existants dans la littérature peu-
vent être efficaces pour certaines classes de graphes ou pour des graphes de taille moindre.
Ci-dessous une heuristique qui tente à déterminer la plus grande clique dans un graphe.
Une coloration propre d’arêtes d’un graphe G est une fonction π de E(G) dans Ntelle que pour toute paire
′ ′
d’arêtes adjacentes (e,e ), on a π(e) ̸= π(e ).
L’indice chromatique d’un graphe G, noté γ(G), est le nombre minimum de couleurs à affecter aux arêtes
de G, de telle sorte que les arêtes adjacentes soient de couleurs différentes.
Chapitre 4
Part V
Application
Dans cette partie, nous nous intéressons à programmer l’algorithme lex-BFS. en utilisant comme outil le
langage python.
Python est un langage de programmation open source créé par le programmeur Guido van Rossum en 1991.
Il tire son nom de l’émission Monty Python’s Flying Circus.
Il s’agit d’un langage de programmation interprété, qui ne nécessite donc pas d’être compilé pour fonctionner.
Un programme ” interpréteur ” permet d’exécuter le code Python sur n’importe quel ordinateur.
Le langage Python doit sa popularité à plusieurs avantages dont sa facilité et sa convivialité.
Nous allons programmer l’algorithme de reconnaissance des graphes triangulés. Le code source est le suivant:
class Maillon:
class File:
def __init__(self):
self.longueur = 0
self.debut = None
self.fin = None
def defiler(self):
if self.longueur > 0:
valeur = self.debut.valeur
if self.longueur > 1:
self.debut = self.debut.suivant
self.debut.precedent = None
else:
self.debut = self.fin = None
self.longueur -= 1
return valeur
def estVide(self):
return self.longueur == 0
def bfs(G,s) :
P = {s :None}
Q = File()
Q.enfiler(s)
while not(Q.estVide()) :
u = Q.defiler()
for v in G[u] :
if v in P : continue
P[v]=u
Q.enfiler(v)
return P
G = dict()
G['a'] = ['b','c']
G['b'] = ['a','d','e']
G['c'] = ['a','d']
G['d'] = ['b','c','e']
G['e'] = ['b','d','f','g']
G['f'] = ['e','g']
G['g'] = ['e','f','h']
G['h'] = ['g']
P = bfs(G,'b')
print(P)
def getDegree(D):
degree = {}
sorted_degree = {}
for k in Sommets(D):
if k in D.keys(): degree[k] = len(D[k])
else: degree[k] = 0
for key in sorted(degree, key=lambda x: -degree[x]):
sorted_degree[key] = degree[key]
return sorted_degree
def Sommets(D):
s=[]
for k in D:
if k not in s: s.append(k)
for i in D[k]:
if i not in s: s.append(i)
return s
def FullGraph(G):
fg = {}
for sommet in G:
fg[sommet] = G[sommet]
for succ in G[sommet]:
if succ not in fg:
if succ not in G:
fg[succ] = []
else:
fg[succ] = G[succ]
return fg
def ordre_pgsg_complet(D):
graphes_complets = []
for sommet in getDegree(D):
sommets = [sommet]
updated = True
for pt in D:
if sommet in D[pt]: sommets.append(pt)
while len(sommets) > 2 and updated:
for s in sommets:
updated = False
for j in sommets[:sommets.index(s)]+sommets[sommets.index(s)+1:]:
if s not in D[j]:
sommets.remove(s)
updated = True
break
graphes_complets.append(sommets)
pgsg = max(graphes_complets, key=lambda x:len(x))
return len(pgsg) if len(pgsg) > 2 else False
def Coloration(D):
deg = getDegree(D)
s = Sommets(D)
Colors = {}
current_color = 1
for sommet in deg:
if sommet not in Colors: Colors[sommet] = "Couleur"+str(current_color)
for sommet2 in s:
if sommet in D and sommet2 not in D[sommet] and sommet2 not in Colors:
Colors[sommet2] = "Couleur"+str(current_color)
if "Couleur"+str(current_color) in Colors.values(): current_color +=1
return Colors
def nombre_chromatique(D):
col = len(set(Coloration(D).values()))
max_len_graphe_complet = ordre_pgsg_complet(FullGraph(D))
if col == max_len_graphe_complet or max_len_graphe_complet == False: return "le nombre chromatique e
else: return "La coloration realiser n'est pas optimale"
Enoncé
La figure ci-dessous montre huit voies de circulation L1 , L2 , . . . , L8 à l’intersection de deux rues. Un feu de
circulation est situé à l’intersection. Au cours de chaque phase (ou période) du feu de circulation, les voitures
dans les voies pour lesquelles le feu est vert peuvent circuler en toute sécurité à travers l’intersection dans
certaines voies autorisées.
Quel est le nombre minimum des phases (ou périodes) nécessaires pour le feu de circulation afin que
(éventuellement) toutes les voitures puissent passer le carrefour?
Nous souhaitons régler les feux de circulation à l’intersection de deux rues de telle façon que nous puissons
répartir les flux de circulation en groupes en partageant dans le temps l’utilisation d’une meme rue entre des
flus conflictuels.
Les flux du même groupe auront la meme couleur de feu simultanément (ce qui veut dire que les voitures ne
peuvent pas s’intersecter). Pendant cette période (durée durant laquelle un feu a une couleur donné), tous
les autres flux auront un feu différent.
Nous pouvons observer ce problème de deux ongles differents:
Chercher qui sont les groupes affecter à chaque période, ie. un feu à chaque groupe, pour la résolution: Nous
pouvons le résoudre par le biais:
*D’un programme linéaire en consédérant le problème comme um problème d’affectation sous contraintes.
*D’un programme linéaire d’un stable maximum et puis nous affectons les feux à chaque période aux groupes.
*D’un problème de coloration de graphe pour avoir les groupes à affecter aux feux à chaque période.
Nous tenterons de résoudre l’instance de la figure 3 par la coloration (3eme approche), nous modélisons dans
ce qui suit le problème par un graphe.
Le graphe G modélisant ce problème (la figure 3) est obtenu en considérant les sommets comme étant le
passage d’un sens à un autre (on peut aller de L1 à L3 donc ce sont des sommets de G) et deux sommets
sont adjacents dans G si les deux passages leurs correspondants se croisent (le passage de L1 à L3 se croise,
nous obtenons ainsi le graphe G de la Figure ci-dessous ayant 8 sommets notés comme suit: {L1 , L2 , . . . , L8 }.
Dans ce problème, la résolution revient à colorier les sommets de façon à attribuer des couleurs différentes
aux sommets adjacents en utilisant un nombre minimum de couleurs.
De ce qui précède une solution, qui utilise 3 couleurs est obtenue, nous remarquons que le graphe G possède
un sommet qui n’est pas en relation avec les autres sommets.
De cette solution, on déduit les flux de voitures suivants:
Premier bloc de couleur: {L5 , L7 , L8 }
Deuxième bloc de couleur: {L1 , L2 , L6 }
Troisième bloc de couleur: {L3 }
De plus le sommet L4 n’ayant pas de sommet adjacents, le flux de circulation de cette voie peut circuler
instantanément avec les autres voies de circulation, ie. couleur verte à chaque phase.
Cette solution est optimale. En fait, il suffit de regarder le sous-graphe de G.
Donc en attribuant l’une des 3 couleurs: vert, rouge et orange à chaque bloc nous obtenons le planning de
circulation.
Pour faire passer le flux de circulation sur les huits voies à l’intersection de deux rues, nous proposons le
plan de circulation suivant:
Au cours de la première phase (période) du feu de circulation, Ainsi les voitures dans les voies L1 , L2 et L6
peuvent circuler à travers l’intersection dans les voies autorisées (couleur verte).
Au cours de la deuxième phase (période) du feu de circulation, les voitures dans les voies L5 , L7 et L8 peuvent
circuler à travers l’intersection dans les voies autorisées (couleur verte).
Au cours de la troisième phase (période) du feu de circulation, les voitures dans la voie L3 peuvent circuler
à travers l’intersection dans les voies autorisées (couleur verte).
Sans oublier le fait que les voitures dans la voie L4 peuvent circuler en toute sécurité à travers l’intersection
dans les voies autorisées et cela tout au long des 3 phases.
Nous résumons le plan de circulation dans le tableau suivant:
Une entreprise composée de neuf salariés : Ali, Lila, Amel, Omar, Sara, Samir, Adam, Karim et Amina.
Le chef de cette entreprise décide de faire subir a ses salaries des formations dans des différentes spécialités:
comptabilité, informatique, Droit, théorie des graphes, Marketing et Anglais. Le plan de formation est donné
par le tableau suivant :
Nous supposons que chaque cours dure une heure et que les salariés n’ont pas les mêmes connaissances
préalables. Le symbole ”x” indique les formation dont le salarié a besoin. L’objectif est d’organiser une
session de formation qui dure le moins longtemps possible de façons à ce que tout salarié suit les formations
indiquées.
La solution la plus évidente pour planifier tout ça est de programmer les cours l’un après l’autre. Ainsi la
session de formation durera six heures (six cours d’une heure). La question est: peut-on faire mieux en tenant
compte du fait que les formations dont un même candidat est concernées ne peuvent pas être programmées
à la même heure. Nous associons le graphe G = (V, E) tel que les sommets représentent les cours et deux
sommet sont reliés par une arête si et seulement si les deux cours ne peuvent pas avoir lieu au même temps.
Le graphe suivant donne une modélisation de ce plan formation :
D’après ce graphe, on voit bien que le cours d’informatique et celui du droit peuvent être programmes en
même temps car ils sont pas adjacents dans G. Ainsi il est naturel de penser qu’une partition minimale en
stable donne un planning optimale pour le dérou- lement de cette formation, i.e. ce planning sera donné par
le nombre chromatique de G. Commençons par l’application de l’algorithme Lex-BFS sur G.
L’ordre des sommets obtenu est : σ = {I, A, D, T, M, C}. L’exécution de l’algorithme Lex-BFS sur ce graphe
vérifie que cet ordre est un ordre d’élimination parfait, et donc le graphe est triangulé.
Le planning optimal est le suivant: à la première heure, on programme le cours de comptabilité et anglais,
à la deuxième heure marketing qui intéresse tout le monde, à l’heure suivante le cours de la Théorie des
Graphe qui intéresse aussi tout le monde et enfin le cours d’informatique et celui de droit.
Une partition minimale en stable donne un planning optimale pour le déroulement de cette formation, i.e.
ce planning sera donné par le nombre chromatique de G.
L’application de l’algorithme Lex-COLOR donne une coloration optimale pour les sommets de G comme le
montre la figure suivante:
A l’époque, le duc de Densmore avait été tué par l’explosion d’une bombe, qui avait également détruit son
chateau. Les journaux d’alors relataient que le testament, détruit aussi par l’explosion, avait tout pour
déplaire à l’une de ses sept ex-femmes. Or, avant de mourir, le duc les avait toutes invitées à passer quelques
jours. Sherlock Holmes a enquêté sur le meurtre commis, il interrogea les sept ex-femmes sur qui elles y ont
rencontrées :
Ann a rencontré Betty, Charlotte, Félicia, Georgia
Betty a rencontré Ann, Charlotte, Edith, Felicia , Helen.
Charlotte a rencontré Ann, Betty, Edith.
Edith a rencontré Betty, Charlotte, Felicia.
Felicia a rencontré Ann, Betty, Edith, Helen.
Georgia a rencontré Ann, Helen.
Helen a rencontré Betty, Felicia , Georgia.
Ce graphe n’est pas triangulé car les cycles A-B-H-G et A-C-H-G sont sans corde. Donc quelqu’un a menti,
d’autre part le cycle A-B-C-D-E-F posséde des cordes (le sous-graphe induit est effectivement triangulé).
La personne commune aux 3 cycles posant problème est A, donc la coupable est Ann.
Part VI
Conclusion
Ce travail fait l’objet d’une étude sur une classe de graphe, qui est les graphes triangulés et leurs propriétés
et généralisations apres avoir rappelé les notions de base de la théorie des graphes, en particulier certaines
classes de graphes classiques, nous avons mentionné quelques théorèmes et sur les graphes triangulés.
L’objectif de cette étude est de faire connaitre d’une manière générale le concept des classes de graphes avec
leurs différentes variantes tout en mettant en évidence le principal avantage de la reconnaissance des graphes
notamment en pratique.
Notre travail a également fait l’objet d’une étude sur le probleme de coloration, notament sur la classe des
graphes triangulés.
En présentant une application des graphes triangulés, et avons programmé l’algorithme de reconnaissance
de la classe des graphes triangulés ainsi que l’algorithme de coloration de cette classe avec le langage de
programmation Python.
Annexe
Dans cette annexe nous allons proposer une application qui résout le problème de coloration pour un graphe
quelconque.
Il suffit d’introduire la matrice d’adjacence de du graphe que nous souhaitons colorer ainsi choisir la taille
de la matrice dans la barre.
Pour en finir lancer l’algorithme de coloration glouton en cliquant sur le bouton ’Lancer l’algorithme’.
Dans le panel s’affichera notre graphe introduit ainsi que la coloration des sommets de ce dernier.
Nous allons tester notre application sur le problème des feux de circulation.
Bibliographie
Classes de graphes.
Les graphes d’intervalles, Complément au chapitre 3 ≪ Vol aux archives cantonales ≫ .
Algorithmique de graphes, Graphes triangulés, Fabien de Montgolfier
Etude d’une nouvelle classe de graphes : les graphes hypotriangulés, Hélène Topart.
Stabilité et coloration des graphes sans P5, Grégory Morel.
Site ISGC: https://www.graphclasses.org/.
Quelques méthodes de résolutions en optimisation combinatoire, Kherbouche Lynda, Oubahri Zohra.
Graphes parfaits : Structure et algorithmes, Nicolas Trotignon.
Cours Professeur Ait Haddaden, Master 1 RO2MIR 2020/2021.