Vous êtes sur la page 1sur 59

ENSEIGNEMENT DE PROMOTION SOCIALE

——————————————————————
Cours de

MATHS APPLIQUEES A L'INFORMATIQUE


- Introduction à la théorie des graphes -
——————————————————————

H. Schyns

Décembre 2009
Introduction à la théorie des graphes Sommaire

Sommaire
1. INTRODUCTION

2. DEFINITIONS

3. REPRESENTATIONS

3.1. Position du problème


3.2. Représentation graphique
3.3. Représentation matricielle
3.4. Représentation tabulaire
3.5. Quelques exemples
3.5.1. Carte routière
3.5.2. Base de données
3.5.3. Automate à Etats Finis
3.5.4. Diagramme PERT
3.5.5. Flow sheet industriel
3.6. Conclusion

4. PROPRIETES DES GRAPHES


4.1. Connectivité
4.1.1. Position du problème
4.1.2. Algorithme
4.2. Nombre d'arêtes entre deux points
4.2.1. Position du problème
4.2.2. Algorithme
4.3. Origines et extrémités
4.3.1. Position du problème
4.3.2. Approche intuitive
4.3.3. Algorithme
4.3.4. Application
4.4. Cycles simples et multiples
4.4.1. Position du problème
4.4.2. Algorithme simple
4.4.3. Algorithme complet
4.5. Plus court chemin
4.5.1. Position du problème
4.5.2. Algorithme de Dijkstra

5. AUTRES PROPRIETES

5.1. Planéité
5.1.1. Illustration
5.1.2. Raisonnement
5.1.3. Critère mathématique
5.1.4. Application
5.2. Chemin et circuit eulérien

H. Schyns S.1
Introduction à la théorie des graphes Sommaire

5.3. Chemin et circuit hamiltonien

6. EXERCICES DU CHAPITRE

6.1. Exercice 1
6.2. Exercice 2
6.3. Exercice 3
6.4. Exercice 4
6.5. Exercice 5

7. SOURCES

H. Schyns S.2
Introduction à la théorie des graphes 1 - Introduction

1. Introduction

Un graphe est un objet mathématique qui permet de modéliser un grand nombre de


problèmes de la vie courante tels que :

- l'organisation d'une entreprise,


- un algorithme de calcul,
- la structure d'un réseau routier ou informatique,
- les relations affectives ou professionnelles entre individus,
- des liens de causalité entre des événements,
- etc.

La théorie des graphes est un outil très puissant dans l'analyse des problèmes. De
plus, de nombreux problèmes de nature différente peuvent se mettre sous la forme
de graphes.

La théorie des graphes apparaît alors comme une passerelle qui permet
d'appliquer des outils habituellement utilisés dans un contexte à la résolution
de problèmes qui appartiennent à un autre contexte (fig. 1.1) (1).

fig. 1.1 La théorie des graphes en tant que passerelle de résolution

Ce thème faisant partie du programme du cours de mathématiques appliquées à


l'informatique, l'accent sera mis sur la méthodologie et sur les algorithmes de
détection des propriétés.

Les notes commencent par la définition du vocabulaire. Toutefois, pour ne pas


alourdir ce premier chapitre, nous n'avons repris que les termes essentiels pour la
suite du cours. Le lecteur intéressé trouvera un lexique complet dans les ouvrages
cités en référence et, en particulier, dans le cours de Didier Maquin de l'ENSEM-
Nancy, disponible sur le web (voir chap. 7 Sources).

Une fois les définitions posées, nous passons aux différentes manières de
représenter les graphes et à l'examen de quelques cas typiques : carte routière,
base de données, automate à états finis, etc.

Dans le chapitre suivant nous passons en revue les principaux algorithmes qui
permettent à un ordinateur d'examiner ou de parcourir un graphe : comment savoir si
un graphe est en un seul morceau ou non; combien d'étape faut-il parcourir pour
aller d'un point à un autre du graphe, quel est le plus court chemin entre deux points,
etc.

1 C'est une des démarches propice à la pensée latérale développée par Edward de Bono

H. Schyns 1.1
Introduction à la théorie des graphes 1 - Introduction

Nous examinons ensuite rapidement quelques concepts intéressants tels que


planéité, graphe eulérien ou graphe hamiltonien.

Enfin, à titre d'exercice, nous proposons quelques problèmes et applications. Nous


encourageons vivement le lecteur à essayer de les résoudre afin de prendre la
matière bien en main.

Le lecteur qui veut aborder ce chapitre devrait avoir :

- une maîtrise élémentaire d'un tableur de type Excel ou OpenOffice,


- une connaissance élémentaire de la gestion de bases de données,
- quelques bases de calcul matriciel.

Des notes de cours sur ces différents pré-requis sont disponibles sur le site
www.notesdecours.info.

H. Schyns 1.2
Introduction à la théorie des graphes 2 - Définitions

2. Définitions

Un graphe consiste en deux ensembles :

- un ensemble de points, nommés nœuds ou sommets (ang.: vertex (s),


vertices (pl))
- un ensemble de droites appelées arêtes (ang.: edges) les relient les nœuds.

fig. 2.1 Exemple de graphe

Dans la plupart du temps, les nœuds représentent des états, des situations tandis
que les arêtes représentent des transformations mais c'est parfois l'inverse.

Chaque arête connecte deux et seulement deux nœuds. Ces nœuds sont appelés
extrémités (ang.: endpoints) de l'arête considérée. L'existence d'une arête entre
deux nœuds est définie par de l'existence d'une certaine relation – au sens
mathématique – entre ces nœuds (p.ex.: "est voisin de", "précède", etc.).

Deux nœuds sont dits adjacents ou voisins lorsqu'ils sont reliés par une arête. De
même, deux arêtes sont dites adjacentes lorsqu'elles ont un nœud commun. On
appelle voisinage d'un nœud l'ensemble de ses voisins.

L'ordre d'un graphe est le nombre de nœuds de ce graphe.

Un graphe est dit non orienté lorsque toutes ses arêtes peuvent être parcourues
indifféremment dans les deux sens. C'est le cas lorsque la relation représentée est
symétrique par essence (p.ex.: "est voisin de", "dîne avec", "est égal à", etc.). Il est
orienté lorsque l'une au moins de ses arêtes ne peut être parcourue que dans un
sens, lequel doit être explicitement représenté. C'est le cas lorsque la relation
représentée est asymétrique dans sa définition (p.ex.: "est le chef de", "doit de
l'argent à", etc.).

fig. 2.2 Graphe non-orienté (à g.) et orienté (à dr.)


Dans un graphe non orienté, le degré d'un nœud est le nombre d'arêtes auxquelles
ce nœud appartient. La somme des degrés de chaque nœud est égale au double du
nombre total d'arêtes (1).

1 C'est asez évident puisque toute arête a deux extrémités

H. Schyns 2.1
Introduction à la théorie des graphes 2 - Définitions

Dans un graphe orienté, on distingue les notions de degré entrant ; nombre d'arêtes
qui aboutissent au nœud considéré ; et de degré sortant ; nombre d'arêtes qui
partent du nœud considéré. Le degré d'un nœud (au sens large) est alors la somme
des degrés entrant et sortant.

Dans un graphe orienté, un chemin est une séquence ordonnée d'arêtes qui permet
de passer continûment d'un nœud à un autre. Dans un graphe non orienté, on parle
plutôt de chaîne.

fig. 2.3 Chemin (à g.) et circuit et cycle dans un graphe orienté (à dr.)

Lorsque le chemin revient au nœud de départ, il définit un parcours fermé nommé


circuit. Dans un graphe non orienté, un parcours fermé est un cycle.

Lorsqu'un cycle est composé d'une seule arête qui relie un sommet à lui-même, on
parle de boucle.

Un graphe acyclique est un graphe non orienté qui ne contient aucun cycle.

Un graphe non orienté est connexe (d'un seul tenant) s'il existe une chaîne reliant
tout couple quelconque de sommets. La définition vaut aussi pour un graphe orienté
à condition de considérer le graphe non-orienté correspondant, c'est-à-dire le graphe
dans lequel toutes les arêtes sont devenues bidirectionnelles.

Si l'existence d'un chemin entre tout couple de sommets se vérifie dans le graphe
orienté original, alors celui-ci est dit fortement connexe.

fig. 2.4 Graphe orienté connexe mais non fortement connexe


Un arbre est simplement un graphe non orienté, connexe et acyclique. Si les arêtes
sont orientées, on parle plutôt d'arborescence (1).

1 Dont un exemple est l'arborescence des dossiers dans l'organisation d'un système de fichiers d'un
ordinateur.

H. Schyns 2.2
Introduction à la théorie des graphes 2 - Définitions

fig. 2.5 Un arbre : non orienté, connexe et acyclique


Les nœuds de degré 1 sont appelés feuilles; les nœuds de degré supérieur à 1
sont les nœuds internes.

Un graphe est dit complet quand tous ses nœuds sont reliés deux à deux. Un
graphe complet à [ n ] nœuds est noté Kn (1)

K1 K2 K3 K4 K5

Partant de K1, on constate qu'en ajoutant un nœud on doit aussi ajouter une arête
pour obtenir K2. En toute généralité, si on ajoute un nœud à Kn, il faut aussi ajouter
n arêtes pour obtenir Kn+1. Le graphe complet Kn contient donc [ a ] arêtes avec

n×(n-1)
a=1+ 2+3+...+(n-1)=
2

Ainsi, le graphe complet K6 compte 15 arêtes, soit 5 de plus que K5.

1 Par référence au mathématicien polonais Kazimierz Kuratowski (1896-1980).

H. Schyns 2.3
Introduction à la théorie des graphes 3 - Représentations

3. Représentations

3.1. Position du problème

La manière la plus évidente de représenter un graphe est - qui l'eût cru - sous forme
graphique.

C'est une représentation qui peut être rapidement appréhendée par l'œil et le
cerveau humain ainsi qu'en témoigne l'expression "un petit dessin vaut mieux qu'un
long discours".

De nombreux objets graphiques que nous voyons chaque jour ne sont pourtant
pas perçus en tant que graphes au sens mathématique du terme : une carte
routière, un arbre généalogique, des fontes typographiques, un flow sheet industriel
ou l'organigramme d'une société sont des graphes ou, plus exactement, contiennent
des graphes.

De manière similaire, bon nombre de concepts non-graphiques auxquels nous


sommes confrontés peuvent aussi se mettre sous forme de graphe : une recette de
cuisine, un mode d'emploi, une comptabilité, l'organisation d'un événement sont
aussi des graphes.

Inversement, les graphes admettent aussi des représentations non-graphiques, plus


difficilement compréhensibles pour l'être humain mais bien plus commodes pour le
traitement informatique :

- représentation matricielle,
- représentation base de données.

Dans ce chapitre, nous verrons comment mettre l'information sous forme de graphes
et comment mettre les graphes sous une forme "computer friendly".

3.2. Représentation graphique

Au chapitre précédent, nous avons vu plusieurs définitions de graphes


accompagnées d'exemples.

Pour être compréhensible, un graphe doit mettre clairement en évidence les nœuds
ou sommets. Il doit surtout leur attribuer un nom.

Les arêtes matérialisent les relations entre les nœuds. Si cette relation est identique
pour l'ensemble du graphe – cas de l'organigramme hiérarchique - il suffira de la
spécifier dans la description générale. Il ne sera pas nécessaire de nommer
chacune des arêtes; celles-ci étant définies par leurs extrémités.

m A n m A n

q q
p
r r
B C D B C D
u
t t

s s
E E

fig. 3.1 Graphes non orienté (g.) et orienté (dr.) élémentaires

H. Schyns 3.1
Introduction à la théorie des graphes 3 - Représentations

Par contre, si chaque arête exprime une relation différente - cas d'un schéma de
base de données – il faudra nommer chacune d'elles pour que le graphe soit
compréhensible (fig. 3.1).

3.3. Représentation matricielle

Un graphe peut être représenté de manière abstraite par une matrice d'adjacence.

Une première idée consiste en un tableau à deux dimensions dans lequel les arêtes
sont présentées en en-tête de colonnes et les nœuds en en-tête de ligne.

Arêtes
m n q r s t
A 1 1 1 0 0 0
B 1 0 0 0 1 0
Nœuds

C 0 0 1 1 0 1
D 0 1 0 1 0 0
E 0 0 0 0 1 1
tab. 3.1 Représentation matricielle du graphe de la fig. 3.1 (g.)

Chaque colonne – qui représente une arête - est remplie de zéros, sauf dans les
deux cellules qui correspondent à ses extrémités. Ainsi, dans le tab. 3.1 qui est la
version matricielle du graphe de la fig. 3.1 (g), la colonne relative à l'arête [ m ] est
nulle partout sauf en regard des lignes [ A ] et [ B ] qui représentent ses extrémités.

Une telle représentation convient bien pour un graphe non-orienté qui ne


contient pas de boucles.

La représentation peut être adaptée au cas des graphes orientés, à condition de


prendre une convention supplémentaire; par exemple, noter –1 pour le nœud
d'origine et +1 pour le nœud de destination. Mais ça ne résout pas le problème des
boucles.

Une meilleure solution consiste en un tableau à deux dimensions dans lequel les
lignes et colonnes représentent uniquement des nœuds. Les nœuds considérés
comme origine sont présentés en en-tête de colonnes; ceux considérés comme
extrémités, en en-tête de ligne.

Origine
A B C D E
A 0 1 1 0 0
Destination

B 1 0 0 0 0
C 0 0 0 1 0
D 1 0 0 1 0
E 0 1 1 0 0
tab. 3.2 Représentation matricielle du graphe de la fig. 3.1 (dr.)
Dans ce tableau, chaque cellule représente une arête potentielle. Elle se trouve à
l'intersection d'une colonne qui représente son nœud d'origine et une ligne qui
représente son nœud d'extrémité. Cette cellule contient 1 ou 0 selon que l'arête
correspondante existe ou non dans le graphe.

Ainsi, dans le tab. 3.2 qui est la version matricielle du graphe orienté de la fig. 3.1
(dr.), nous voyons que le nœud [ A ] est à l'origine de deux arêtes, l'une conduisant à
[ B ] et l'autre à [ D ].

Les éléments de la diagonale correspondent aux arêtes pour lesquelles l'origine et la


destination sont identiques, ce qui est le cas de la boucle [ D ][ D ].

H. Schyns 3.2
Introduction à la théorie des graphes 3 - Représentations

Cette représentation est largement utilisée dans les traitements informatiques. Elle
a l'inconvénient de consommer beaucoup d'espace mémoire alors que relativement
peu de cellules contiennent des valeurs non nulles. Elle a l'avantage de pouvoir
attribuer un poids autre que 0 ou 1 aux arêtes ainsi que nous le verrons plus loin.
D'autre part, dans le cas d'un graphe non orienté, la matrice est symétrique (1). On
peut donc se contenter de considérer une matrice triangulaire.

3.4. Représentation tabulaire

Puisqu'un graphe est composé de nœuds et d'arêtes, il suffit, pour le décrire, de faire
la liste des nœuds et la liste des arêtes. Cette lapalissade est à la base de la
représentation tabulaire ou base de données.

origine
Noeuds Arêtes
I destination II

fig. 3.2 Schéma E-R de gestion des graphes

Chaque ARETE prend son origine en un et un seul NOEUD


Chaque NOEUD est pris comme origine pour une ou plusieurs ARETES

Chaque ARETE prend sa destination en un et un seul NOEUD


Chaque NOEUD est pris comme destination pour une ou plusieurs ARETES

Dans cette représentation, le graphe orienté de la fig. 3.1 se met sous la forme
suivante

NOEUDS ARETES
IdN Libelle IdR IdNO IdND Libelle
A Noeud A m A B Arc AB
B Noeud B n A D Arc AD
C Noeud C p B A Arc BA
D Noeud D q C A Arc CA
E Noeud E r D C Arc DC
s B E Arc BE
t C E Arc CE
u D D Boucle DD

Toutes les recherches d'information se font à l'aide de requêtes SQL. Par exemple,
pour extraire la liste des nœuds qui sont origine d'au moins un arc nous aurons :

SELECT DISTINCT Aretes.IdNO, Noeuds.Libelle


FROM Noeuds INNER JOIN Aretes ON Noeuds.IdN = Aretes.IdNO;

De même, pour extraire les nœuds qui ne sont jamais à l'origine d'une arête (2)

SELECT DISTINCT Noeuds.IdN, Noeuds.Libelle


FROM Noeuds LEFT JOIN Aretes ON Noeuds.IdN = Aretes.IdNO
WHERE (Aretes.IdNO Is Null);

1 Une matrice A est symétrique si la valeur de l'élément situé à l'intersection de la colonne [ P ] et de la ligne
[ Q ] est identique à celle de l'élément situé à l'intersection de la colonne [ Q ] et de la ligne [ P ]
2 Ces sommets sont donc des points de sortie du graphe comme on le verra plus loin.

H. Schyns 3.3
Introduction à la théorie des graphes 3 - Représentations

Pour extraire les nœuds qui portent des boucles, nous écrirons :

SELECT Noeuds.Libelle
FROM Noeuds INNER JOIN Aretes ON Noeuds.IdN = Aretes.IdNO
WHERE Aretes.IdNO = Aretes.IdND;

La représentation tabulaire a l'avantage d'être très compacte puisqu'elle ne contient


que les arêtes réellement présentes dans le graphe. Par contre, les traitements sont
un peu plus ésotériques.

3.5. Quelques exemples

3.5.1. Carte routière

Une carte (fig. 3.3) contient énormément d'informations : réseau routier, relief,
divisions administratives, etc.

fig. 3.3 Carte géographique (ancienne) de la Belgique

En particulier, le réseau autoroutier représenté est un graphe mathématique (fig. 3.4)


dans lequel les villes sont les nœuds et les autoroutes, les arêtes.

H. Schyns 3.4
Introduction à la théorie des graphes 3 - Représentations

Oostende Antwerpen
Brugge
Gent
Hasselt

Bruxelles
Kortrijk
Liège

Mons Charleroi Namur

Arlon

fig. 3.4 Graphe non orienté du réseau autoroutier belge (simplifié)

Ce graphe peut lui-même se mettre sous forme matricielle (tab. 3.3) :


Antwerpen
Oostende

Bruxelles

Charleroi
Hasselt
Brugge

Kortrijk

Namur

Mons
Liège

Arlon
Gent

Oostende 1
Brugge 1 1 1
Gent 1 1 1 1
Kortrijk 1 1
Antwerpen 1 1 1
Bruxelles 1 1 1 1 1 1
Hasselt 1 1 1
Liège 1 1 1 1
Namur 1 1 1 1
Charleroi 1 1 1
Mons 1
Arlon 1 1
tab. 3.3 Matrice de connectivité du réseau auto-routier belge

Comme les autoroutes peuvent être parcourues dans les deux sens, il s'agit d'un
graphe non orienté. La matrice qui le représente est symétrique : chaque ligne est
identique à la colonne correspondante. Eventuellement, les éléments de la matrice
pourraient contenir la longueur ou la durée du trajet entre les deux villes concernées
à la place des 1 et 0.

3.5.2. Base de données

Tout informaticien sait que la conception d'une base de données passe par
l'établissement d'un modèle entités-relations. La fig. 3.5 représente le graphe
entités-relations d'un facturier.

H. Schyns 3.5
Introduction à la théorie des graphes 3 - Représentations

localise Codes héberge


Remises Clients Pays
Postaux

liste reçoit

Conditions liste Lignes facture


Factures Produits
paiement paie Facturation

reprend
acquitte regroupe

Déclarations reçoit Comptes Categorie


Paiements
TVA financiers TVA

effectue

Modes
Paiement

fig. 3.5 Une base de données de facturation classique

Du point de vue mathématique, il s'agit d'un graphe dans lequel les entités (tables)
sont les nœuds et les relations sont les arêtes.

Comme il s'agit d'un graphe orienté, nous pouvons en donner une représentation
tabulaire. Nous avons vu au point 3.3 qu'il nous faut une table des nœuds et une
table des arêtes. Dans le cas présent, ceci se traduit par une table des tables et une
table des relations.

Tout SGBD contient une méta-base de données qui gère (au moins) une
table des tables et une table des relations (1).

TABLES RELATIONS
IdT Libelle IdR IdT1 IdTn Libelle
PA Pays 1 PA CP Héberge
CP CodesPostaux 2 CP CL Localise
CL Clients 3 CL FA Reçoit
RE Remises 4 FA RE Liste
PR Produits 5 PR LF Facture
LF LignesFacturation 6 FA LF Liste
FA Factures 7 CO FA Paie
CO ConditionsPaiement 8 CT PR Regroupe
CT CategorieTVA 9 FA PM Acquitte
CF ComptesFinanciers 10 DT FA Reprend
PM Paiements 11 CF PM Reçoit
DT DeclarationsTVA 12 MP PM Effectue
MP ModesPaiement

1 Il y a aussi toujours une table des attributs ou champs. Ce sont eux qui définissent les relations mais ça ne
change rien au raisonnement.

H. Schyns 3.6
Introduction à la théorie des graphes 3 - Représentations

Certaines bases de données peuvent présenter des boucles. C'est notamment le


cas lorsqu'il y a une relation hiérarchique entre deux objets appartenant à une même
entité.

Prenons le cas d'une organisation quelconque qui utilise des employés pour
accomplir des tâches. Les employés forment une hiérarchie et les tâches aussi.

La hiérarchie des employés est représentée par la boucle :

Chaque EMPLOYÉ commande un ou plusieurs (sous-) EMPLOYÉS


Chaque EMPLOYÉ est commandé par un seul (super-) EMPLOYÉ

La hiérarchie des tâches est représentée par la boucle :

Chaque TÂCHE renferme une ou plusieurs (sous-) TÂCHES


Chaque TÂCHE est renfermée dans une seule (super-) TÂCHE

Ce qui se traduit par le schéma suivant :

commande renferme

reçoit détermine
Employés Attributions Tâches

fig. 3.6 Une base de données d'une organisation

Nous pouvons aussi le mettre sous forme de graphe ainsi que nous le verrons plus
loin (4.3.4).

Employés Attributions Tâches

fig. 3.7 Graphe orienté d'une organisation

3.5.3. Automate à Etats Finis

La plupart des processus et des modes opératoires tels que algorithmes, recettes,
peuvent être décrits par un automate à états finis (ang.: finite state automaton).

Un tel automate est défini par :

- un nombre fini d'états (1),


- un certain nombre de transitions entre ces états,
- un certain nombre d'actions qui activent ces transitions,
- des équations logiques qui définissent les conditions dans lesquelles les actions
peuvent être déclenchées.

L'automate peut être représenté par un graphe dans lequel les nœuds
correspondent aux états et les arêtes, aux transitions. Ce sont les arêtes qui
supportent les conditions.

1 D'où le nom.

H. Schyns 3.7
Introduction à la théorie des graphes 3 - Représentations

La fig. 3.8 représente le fonctionnement d'un système d'exploitation qui charge,


exécute ou parque des processus.

Nouveau
9

Prêt
6 1
5 2

Permuté 4 Actif
Prêt
3 10

8 Bloqué Terminé
7

Permuté
Bloqué

fig. 3.8 Lancement et arrêt d'un processus par un système d'exploitation

Ce graphe orienté se met facilement sous forme matricielle (tab. 3.4) :

Origine

Permuté prêt
Nouveau

Permuté

Terminé
Bloqué

bloqué
Actif
Prêt

Conditions

Nouveau
Prêt 1 1 1 1 1
Destination

Actif 1 1
Bloqué 1 1
Permuté bloqué 1 1
Permuté prêt 1 1 1
Terminé 1
tab. 3.4 Matrice représentative d'un automate

On remarque que la diagonale n'est pas nulle : certaines transitions sont des
boucles qui permettent au processus de rester dans le même état.

En réalité, les 1 ne sont pas statiques. Ils correspondent au résultat de l'équation


logique qui conditionne le passage d'un état à l'autre. Ces équations sont
réévaluées périodiquement pour tous les processus qui sont dans un état d'origine
donné de manière à définir les états qu'ils peuvent atteindre.

Pour le débutant, la grosse difficulté consiste à ne pas confondre les états, les
transitions et les conditions… ce n'est pas toujours évident !

3.5.4. Diagramme PERT

Le diagramme PERT (1) est un outil de planification dans lequel on visualise l'inter-
dépendance des tâches et leur ordonnancement en étapes :

1 Project Evaluation and Review Technique

H. Schyns 3.8
Introduction à la théorie des graphes 3 - Représentations

- chaque étape est représentée par un cercle


- chaque tâche est représentée par une flèche qui conduit d'une étape à une
autre une autre étape.

Tâche 3
15
Tâche 1 Transfert
Etape 1 Etape 3 0
5

Dmin Dmax Dmin Dmax


5 25 20 40
Etape 0 Etape 5

Dmin Dmax Dmin Dmax


0 0 40 40
Etape 2 Etape 4

Tâche 2 Dmin Dmax Dmin Dmax Tâche 6


10 10 10 25 25 15
Tâche 4
15

fig. 3.9 Diagramme PERT typique

Chaque tâche se voit attribuer une durée estimée.

Chaque étape se voit attribuer :

- une date au plus tôt (Dmin) qui résulte de l'addition des durées définies pour
l'enchaînement des tâches qui y conduisent.
- une date au plus tard (Dmax) qui tient compte de la durée totale du projet et qui
est déterminée en remontant dans le diagramme.

Une étape peut être le point de départ de plusieurs tâches mais les flèches ne
doivent jamais se croiser.

Nous retrouvons sensiblement les mêmes concepts que dans l'automate à états
finis, les étapes étant l'équivalent des états et les tâches, l'équivalent des transitions.

origine
Détails Détails
Etapes Tâches
Etape destin. Tâche

fig. 3.10 Diagramme E-R d'un PERT

3.5.5. Flow sheet industriel

Un flow sheet industriel (fig. 3.11) est un schéma dans lequel :

- les différents appareils (réservoirs, réacteurs…) et activateurs (pompes,


vannes…) d'une installation industrielle (usine, atelier…) sont représentés par
des symboles;
- les flux de matière et d'énergie entre ces appareils sont représentés par des
lignes.

Un activateur est un dispositif qui autorise le passage d'un flux tandis qu'un appareil
est un dispositif capable de stocker, de transformer ou de délivrer de la matière ou
de l'énergie.

H. Schyns 3.9
Introduction à la théorie des graphes 3 - Représentations

fig. 3.11 Flowsheet d'un procédé chimique typique

Du point de vue de la théorie des graphes :

- les appareils sont les nœuds,


- les flux sont les arêtes. Chaque flux est pourvu d'un ou de plusieurs activateurs
(fig. 3.12).

fig. 3.12 Graphe des flux du procédé chimique

La représentation matricielle (tab. 3.5) est assez semblable à celle de l'automate à


états finis. L'état ouvert ou fermé du ou des activateurs tient lieu de conditions.

H. Schyns 3.10
Introduction à la théorie des graphes 3 - Représentations

ORIGINE
TA TB TC EE W1 R TD S1 C W2 D TF TE
R VTA VTB VTC M VW1 R
TD VR
D VTD VS1 VCD
TE VTE
DESTINATION C VW2 1
TF VTF
TA
TB
TC
EE
W1
S1
W2

tab. 3.5 Représentation matricielle du même procédé

3.6. Conclusion

De nombreux problèmes peuvent se mettre sous la forme d'un graphe. Or, pour
traiter un graphe de manière abstraite, il suffit de disposer :

- soit d'un objet "Matrice" dans un langage quelconque;


- soit d'une base de données "Noeuds-Arêtes".

La suite n'est plus qu'une question d'algorithmes génériques… Ces algorithmes font
l'objet du chapitre suivant.

H. Schyns 3.11
Introduction à la théorie des graphes 4 - Propriétés des graphes

4. Propriétés des graphes

4.1. Connectivité

4.1.1. Position du problème

Un premier problème qui se pose est de savoir si un graphe (non orienté) est d'un
seul tenant ou non; en d'autres mots, s'il est connexe ou non.

Le problème se pose notamment :

- en cartographie : est-il possible d'aller de Paris à Dublin par la route ? Y a-t-il un


continuum habité entre Bruxelles et Liège (1) ?
- en informatique : est-il possible d'atteindre telle machine à partir de telle autre ?
Jusqu'où un virus peut-il se propager dans un système ?
- en épidémiologie : une épidémie locale peut-elle se transformer en pandémie
mondiale ? Quelle proportion de la population faut-il vacciner pour faire barrière
à la maladie ?
- en animation 3D : les objets sont-ils attachés et se déplacent-ils ensemble ou
non ?

Nous savons qu'un graphe non orienté est connexe s'il existe une chaîne reliant tout
couple quelconque de sommets. Inversement, il suffit de trouver une seule paire de
nœuds impossibles à relier pour que le graphe soit non connexe.

A B C D

E F G H

I J K L

fig. 4.1 Un graphe trivialement non-connexe

Si la (non-)connectivité d'un graphe simple tel que celui de la fig. 4.1 apparaît
immédiatement à l'observateur humain, il en va tout autrement quand le graphe
compte un grand nombre de nœuds et d'arêtes.

fig. 4.2 Les murs du labyrinthe sont-ils d'un seul tenant ?

1 On considère qu'il y a habitat continu tant que les maisons sont à une distance inférieure à maximum
donnée les unes des autres (p.ex 100m).

H. Schyns 4.1
Introduction à la théorie des graphes 4 - Propriétés des graphes

Qui peut dire rapidement si les murs du labyrinthe de la fig. 4.2 sont d'un seul tenant
ou non ? S'il contient des zones dont il est impossible de s'échapper ?

Dans de tels systèmes, le recours à l'informatique est indispensable. Encore faut-il


disposer d'un algorithme performant.

4.1.2. Algorithme

Plusieurs algorithmes ont été proposés pour détecter la connexité d'un graphe. Les
plus connus sont ceux du parcours en largeur et du parcours en profondeur.

L'algorithme présenté ci-dessous est très simple et basé sur un classement de


nombres binaires (1).

Partons de la représentation matricielle du graphe simple de la fig. 4.1. Cette


matrice est symétrique. Nous avons omis les zéros pour plus de clarté et, pour les
besoins de l'algorithme, nous avons ajouté des 1 (qui représentent des boucles) sur
la diagonale :

A B C D E F G H I J K L Degré ValBin
A 1 1 1 3 3200
B 1 1 2 3072
C 1 1 1 3 784
D 1 1 1 3 784
E 1 1 1 1 1 5 2252
F 1 1 1 1 4 204
G 1 1 1 3 49
H 1 1 1 1 1 1 6 819
I 1 1 1 1 4 204
J 1 1 1 1 4 204
K 1 1 2 18
L 1 1 1 3 49
tab. 4.1 Matrice de connectivité

La suite 1 et de 0 de chaque ligne du tableau peut être interprétée comme un


nombre binaire dont la valeur décimale est reprise dans la colonne de droite
(ValBin).

Dans un premier temps, nous décidons de donner le plus gros poids binaire aux
nœuds qui ont le degré le plus élevé. Nous trions donc les lignes et colonnes du
tableau en ordre décroissant de degré. Ce n'est pas strictement nécessaire pour la
suite, mais ça permet déjà d'y voir plus clair.

H E F I J A C D G L B K Degré ValBin
H 1 1 1 1 1 1 6 2109
E 1 1 1 1 1 5 1984
F 1 1 1 1 4 1920
I 1 1 1 1 4 1920
J 1 1 1 1 4 1920
A 1 1 1 3 1090
C 1 1 1 3 2096
D 1 1 1 3 2096
G 1 1 1 3 2060
L 1 1 1 3 2060
B 1 1 2 66
K 1 1 2 2049
tab. 4.2 Matrice de connectivité

1 N'ayant pas trouvé cet algorithme, ou du moins, cette implémentation dans la littérature, je peux peut-être
en revendiquer la paternité. Son originalité consiste à remplir la diagonale avec des 1 et à interpréter les
lignes comme des nombres binaires (on pourrait également les considérer comme des nombres décimaux
ou des chaînes de caractères).

H. Schyns 4.2
Introduction à la théorie des graphes 4 - Propriétés des graphes

L'algorithme consiste à classer ces nombres dans l'ordre décroissant (ou


croissant) en permutant les lignes et les colonnes correspondantes (1).

N'importe quel algorithme de tri peut faire l'affaire mais pour des raisons didactiques
nous illustrerons le cas d'un tri simple.

La ligne H étant déjà en bonne position, nous poursuivons le tri en permutant les
lignes E et C ainsi que les colonnes E et C. Bien sûr, ce tri détruit l'ordre des degrés
mais c'est sans importance :

H C F I J A E D G L B K Val
H 1 1 1 1 1 1 3101
C 1 1 1 3088
F 1 1 1 1 928
I 1 1 1 1 928
J 1 1 1 1 928
A 1 1 1 98
E 1 1 1 1 1 992
D 1 1 1 3088
G 1 1 1 2060
L 1 1 1 2060
B 1 1 66
K 1 1 2049
tab. 4.3 Après la première permutation (E-C)

Nous remarquons que les valeurs binaires ont été modifiées dans l'opération mais
sans que cela ait un impact sur l'ordre déjà établi (H et C).

Nous poursuivons le tri en permutant les lignes F et D ainsi que les colonnes F et D :

H C D I J A E F G L B K Val
H 1 1 1 1 1 1 3597
C 1 1 1 3584
D 1 1 1 3584
I 1 1 1 1 432
J 1 1 1 1 432
A 1 1 1 98
E 1 1 1 1 1 496
F 1 1 1 1 432
G 1 1 1 2060
L 1 1 1 2060
B 1 1 66
K 1 1 2049
tab. 4.4 Après la deuxième permutation (F-D)

Même observation que ci-dessus : les valeurs binaires des lignes ont été modifiées
mais cela n'a eu aucun impact sur les lignes déjà triées.

A présent, permutons I et G :

1 En réalité, il s'agit d'un simple tri lexicographique, semblable à un classement alphabétique inverse dans
lequel 1 vient avant 0.

H. Schyns 4.3
Introduction à la théorie des graphes 4 - Propriétés des graphes

H C D G J A E F I L B K Val
H 1 1 1 1 1 1 3845
C 1 1 1 3584
D 1 1 1 3584
G 1 1 1 2308
J 1 1 1 1 184
A 1 1 1 98
E 1 1 1 1 1 248
F 1 1 1 1 184
I 1 1 1 1 184
L 1 1 1 2308
B 1 1 66
K 1 1 2049
tab. 4.5 Après la troisième permutation (I-G)

Ensuite J et L :

H C D G L A E F I J B K Val
H 1 1 1 1 1 1 3969
C 1 1 1 3584
D 1 1 1 3584
G 1 1 1 2432
L 1 1 1 2432
A 1 1 1 98
E 1 1 1 1 1 124
F 1 1 1 1 60
I 1 1 1 1 60
J 1 1 1 1 60
B 1 1 66
K 1 1 2049
tab. 4.6 Après la quatrième permutation (J-L)

Nous poursuivons avec A et K :

H C D G L K E F I J B A Val
H 1 1 1 1 1 1 4032
C 1 1 1 3584
D 1 1 1 3584
G 1 1 1 2432
L 1 1 1 2432
K 1 1 2112
E 1 1 1 1 1 61
F 1 1 1 1 60
I 1 1 1 1 60
J 1 1 1 1 60
B 1 1 3
A 1 1 1 35
tab. 4.7 Après la cinquième permutation (A-K)

Et finalement avec B et A :

H C D G L K E F I J A B Val
H 1 1 1 1 1 1 4032
C 1 1 1 3584
D 1 1 1 3584
G 1 1 1 2432
L 1 1 1 2432
K 1 1 2112
E 1 1 1 1 1 62
F 1 1 1 1 60
I 1 1 1 1 60
J 1 1 1 1 60
A 1 1 1 35
B 1 1 3
tab. 4.8 Matrice de connectivité triée

H. Schyns 4.4
Introduction à la théorie des graphes 4 - Propriétés des graphes

Nous obtenons finalement un tableau bien trié dans lequel plusieurs îlots
apparaissent le long de la diagonale. Il ne nous reste plus qu'à voir s'il est possible
d'isoler des sous-tableaux indépendants.

Pour cela, partons du nœud [ H ] qui se trouve dans le coin supérieur gauche du
tableau (tab. 4.9). Parcourons cette ligne en partant de son extrémité [ B ] et en
revenant vers l'origine et arrêtons-nous juste avant la première arête rencontrée,
c'est-à-dire dans la colonne [ E ]. Ceci signifie que [ E ] n'est pas connecté à [ H ] qui
est pourtant le sommet de degré maximum.

Voyons si [ E ] est connecté à l'un des nœuds déjà traités. Déplaçons-nous


verticalement dans la colonne [ E ] pour revenir à la diagonale, et arrêtons-nous au
premier nœud rencontré avant d'atteindre la diagonale.

H C D G L K E F I J A B
H 1 1 1 1 1 1
C 1 1 1
D 1 1 1
I 1 1 1
L 1 1 1
K 1 1
E 1 1 1 1 1
F 1 1 1 1
G 1 1 1 1
J 1 1 1 1
A 1 1 1
B 1 1
tab. 4.9 Recherche des sous-graphes indépendants

En fait, nous ne trouvons aucune arête avant d'atteindre la diagonale. [ E ] est donc
un nœud qui ne se connecte à aucun des nœuds déjà examinés du graphe.

Il n'existe aucune arête liant les nœuds de l'ensemble {H, C, D, G, L, K} à ceux de


l'ensemble {E, F, G, J, A, B} ainsi qu'en témoignent les deux rectangles vides du
tableau. En effet, si c'était le cas (par exemple une arête [ A-G ] ), il y aurait un bit
de poids fort en plus dans l'une des lignes inférieures du tableau et celle-ci serait
remontée dans le classement pour se mêler aux lignes du premier bloc.

Par conséquent, ces deux ensembles sont disjoints et le graphe initial n'est pas
connexe.

L'ensemble {H, C, D, G, L, K} que nous avons isolé constitue un sous-tableau


indépendant et donc un graphe connexe distinct.

H C D G L K E F I J A B
H 1 1 1 1 1 1
C 1 1 1
D 1 1 1
I 1 1 1
L 1 1 1
K 1 1
E 1 1 1 1 1
F 1 1 1 1
G 1 1 1 1
J 1 1 1 1
A 1 1 1
B 1 1
tab. 4.10 Recherche d'un autre îlot indépendant

Comme il pourrait y avoir plus de deux sous-graphes, nous reprenons la recherche


avec l'élément suivant de la diagonale. L'examen de la ligne [ E ] nous conduit
directement au nœud [ B ] qui est le dernier de la liste. En descendant dans la
colonne [ B ], nous trouvons l'arête [ A-B ] avant de rencontrer la diagonale. [ B ] est
donc lié aux nœuds déjà traités.
H. Schyns 4.5
Introduction à la théorie des graphes 4 - Propriétés des graphes

Par conséquent, les nœuds de l'ensemble {E, F, I, J, A, B} forment un seul sous-


graphe connexe indépendant du premier.

Nous pouvons à présent remettre la diagonale à zéro :

H C D G L K E F I J A B
H 1 1 1 1 1
C 1 1
D 1 1
I 1 1
L 1 1
K 1
E 1 1 1 1
F 1 1 1
G 1 1 1
J 1 1 1
A 1 1
B 1
tab. 4.11 Deux sous-graphes connexes isolés

Nous vérifions sur le graphe initial que nous avons bien isolé les deux figures :

A B C D

E F G H

I J K L

fig. 4.3 Le graphe initial, décomposé en deux sous-graphes connexes

4.2. Nombre d'arêtes entre deux points

4.2.1. Position du problème

Dans un graphe connexe (non orienté), nous savons qu'il est toujours possible de
trouver un chemin pour aller d'un sommet [ A ] à un autre sommet [ B ]. Par contre,
nous ne savons pas quel est le nombre minimal d'arêtes qu'il faut parcourir ni le
nombre minimal de sommets qu'il faut traverser pour nous rendre de [ A ] à [ B ].

Ce problème se pose notamment :

- en transports : quel trajet présente le nombre minimal de frontières à traverser


pour se rendre de Belgique en Turquie ? Combien de véhicules faut-il prendre
au minimum pour de rendre de Liège-centre à une plage aux Seychelles.
- en informatique : quel est le nombre minimal de routeurs qu'un paquet doit
traverser pour passer d'une machine à une autre ?
- en automation : comment faire un minimum de mouvement à un bras robotisé
pour prendre une pièce sur une bande transporteuse et la déposer correctement
sur un banc de travail ?
- en généalogie : quel est le degré de parenté entre deux individus donnés ?

A nouveau, le problème peut sembler trivial dans des cas simples, il l'est nettement
moins quand le graphe est dense et étendu comme celui de la fig. 4.4; quand il faut
raisonner dans l'espace, comme dans le cas du polyèdre de la fig. 4.5 ou quand il
faut expliquer ces choses à un ordinateur.

H. Schyns 4.6
Introduction à la théorie des graphes 4 - Propriétés des graphes

fig. 4.4 Graphe de la relation "a une frontière terrestre avec" appliqué à l'Europe (1)

2
fig. 4.5 Icosidodécaèdre ditrigonal ( )

Une variante du problème consiste déterminer quels sont les sommets les plus
éloignés l'un de l'autre dans un graphe; éloigné s'entend en termes de nombre d'arcs
et de sommets.

4.2.2. Algorithme

Pour illustrer la démarche nous posons la question suivante : quel est le nombre
minimum de pays qu'un transporteur routier danois doit traverser pour se rendre au
Portugal ?

1 L'Espagne et l'Irlande ont une frontière terrestre avec le Royaume-Uni respectivement via Gibraltar et
l'Uster. La Pologne et la Lituanie en ont une avec la Russie via l'enclave de Kaliningrad.
2 Provenant du site http://www.mathcurve.com/polyedres/polyedres.shtml

H. Schyns 4.7
Introduction à la théorie des graphes 4 - Propriétés des graphes

Partons du graphe "européen" de la fig. 4.4. quelque peu élagué pour ne pas
encombrer la résolution et établissons la matrice de connectivité :

F D B L CH I E NL A DK P ValBin
France 1 1 1 1 1 1 1 2032
Allemagne 1 1 1 1 1 1 1 1 1998
Belgique 1 1 1 1 1 1928
Luxembourg 1 1 1 1 1920
Suisse 1 1 1 1 1 1636
Italie 1 1 1 1 1124
Espagne 1 1 1 1041
Pays-Bas 1 1 1 776
Autriche 1 1 1 1 612
Danemark 1 1 514
Portugal 1 1 17
tab. 4.12 Connectivité des pays européens de l'Ouest

Les lignes et colonnes ont été classées selon la méthode décrite au point précédent
de manière à vérifier si le graphe est connexe, ce qui est le cas.

L'absence de 1 à l'intersection de la ligne du Danemark et de la colonne du Portugal


confirme que ces deux pays ne sont pas voisins (en rouge). Le transporteur devra
forcément transiter par un pays tiers. Idem pour un transporteur venant des Pays-
Bas qui désire se rendre en Autriche (en bleu).

L'algorithme consiste à calculer les puissances successives de la matrice de


connectivité jusqu'à ce qu'une valeur non nulle apparaisse dans les cellules
concernées.

En d'autres mots, pour en effectuant une première fois le produit matriciel de la


matrice de connectivité par elle-même, nous déterminons les sommets qui sont
séparés par un et un seul pays de transit.

F D B L CH I E NL A DK P
France 7 5 4 4 4 3 2 2 3 1 1
Allemagne 5 8 5 4 4 3 1 3 3 2
Belgique 4 5 5 4 2 1 1 3 1 1
Luxembourg 4 4 4 4 2 1 1 2 1 1
Suisse 4 4 2 2 5 4 1 1 4 1
Italie 3 3 1 1 4 4 1 3
Espagne 2 1 1 1 1 1 3 2
Pays-Bas 2 3 3 2 1 3 1 1
Autriche 3 3 1 1 4 3 1 4 1
Danemark 1 2 1 1 1 1 1 2
Portugal 1 2 2
tab. 4.13 Pays situés à un pays de transit (au plus) d'un autre

La matrice résultante contient des valeurs qui ne sont plus seulement des 1 et des 0.
Ces valeurs indiquent le nombre de chemins possibles pour se rendre à la
destination choisie. Ainsi, un routier allemand qui veut se rendre en Italie dispose de
trois possibilités : il peut choisir de traverser soit l'Autriche, soit la Suisse, soit la
France (1).

Cette matrice nous montre que le routier néerlandais ne doit traverser qu'un seul
pays de transit pour se rendre en Autriche mais qu'il n'a qu'une seule possibilité : via
l'Allemagne. Le routier belge peut se rendre dans tous les autres pays (sauf au
Portugal) au prix d'un seul transit mais il n'a pas trop le choix du parcours (sauf pour
la Suisse). Le chauffeur français a plus de chance et plus de choix : il peut atteindre

1 Ca, c'est la carte qui le dit, pas la matrice de connectivité.

H. Schyns 4.8
Introduction à la théorie des graphes 4 - Propriétés des graphes

tous les autres pays et dispose de plusieurs itinéraires. Par contre, le chauffeur
danois n'est pas encore arrivé à Lisbonne.

En multipliant cette matrice par la matrice initiale nous définissons les trajets qui
nécessitent la traversée de deux pays de transit :

F D B L CH I E NL A DK P
France 29 3 22 2 22 17 1 11 15 6 3
Allemagne 3 34 25 22 23 15 6 16 18 1 1
Belgique 22 25 21 18 13 8 5 13 9 6 1
Luxembourg 2 22 18 16 12 8 5 1 8 5 1
Suisse 22 23 13 12 21 17 5 7 17 5 1
Italie 17 15 8 8 17 14 4 4 14 3 1
Espagne 1 6 5 5 5 4 7 2 3 1 5
Pays-Bas 11 16 13 1 7 4 2 9 5 4
Autriche 15 18 9 8 17 14 3 5 14 4
Danemark 6 1 6 5 5 3 1 4 4 4
Portugal 3 1 1 1 1 1 5 4
tab. 4.14 Pays situés à deux pays de transit (au plus) d'un autre

Nous voyons que tous les pays de la liste sont à une distance maximale de deux
sommets (deux pays de transit) les uns des autres, à l'exception notable du
Portugal.

Ainsi, le chauffeur italien qui doit se rendre aux Pays-Bas doit traverser deux pays
(Autriche-Allemagne / Suisse-Allemagne / France-Allemagne / France-Belgique).
Quant à notre pauvre chauffeur danois, il lui faudra encore traverser un pays avant
d'atteindre le Portugal.

Nous poursuivons le raisonnement en multipliant cette matrice par la matrice initiale.


Nous définissons ainsi les trajets qui nécessitent la traversée de trois pays de
transit :
F D B L CH I E NL A DK P
France 150 155 112 101 113 83 42 63 84 36 13
Allemagne 155 178 127 111 120 86 37 75 90 44 7
Belgique 112 127 99 86 77 52 28 59 55 31 6
Luxembourg 101 111 86 76 70 48 26 50 50 27 6
Suisse 113 120 77 70 100 77 28 43 78 28 6
Italie 83 86 52 48 77 62 22 27 60 18 5
Espagne 42 37 28 26 28 22 22 13 18 7 12
Pays-Bas 63 75 59 50 43 27 13 38 32 20 2
Autriche 84 90 55 50 78 60 18 32 63 22 3
Danemark 36 44 31 27 28 18 7 20 22 14 1
Portugal 13 7 6 6 6 5 12 2 3 1 9
tab. 4.15 Pays situés à trois pays de transit (au plus) d'un autre

Cette fois, tout le monde est interconnecté !

Une valeur non nulle est apparue à l'intersection de la ligne du Danemark et de la


colonne du Portugal. Le chauffeur danois doit traverser trois pays (sommets) et
donc parcourir quatre arêtes pour aller à Lisbonne. Il ne dispose que d'un seul
itinéraire : via l'Allemagne, la France et l'Espagne.

La comparaison des deux dernières matrices nous montre que les plus grandes
distances se situent entre :

- le Portugal et les Pays-Bas,


- le Portugal et l'Autriche,
- le Portugal et le Danemark.

H. Schyns 4.9
Introduction à la théorie des graphes 4 - Propriétés des graphes

Le Portugal apparaît ainsi comme le pays le plus éloigné des autres (1).

Nous apprenons aussi qu'il suffit de parcourir un maximum de quatre arêtes pour se
rendre d'un point du graphe à un autre.

Cette distance maximale (en fait mini-max) constitue le diamètre du graphe.

4.3. Origines et extrémités

4.3.1. Position du problème

Nous savons à présent définir si un graphe non orienté est connexe et quel est le
nombre minimal d'arêtes qu'il faut parcourir pour aller de [ A ] à [ B ].

Dans le cas de graphes orientés, un problème supplémentaire se pose : où sont les


sources ou origines (en d'autres mots, par où entre-t-on dans le graphe) ? Où sont
les puits ou extrémités (en d'autres mots, par où en sort-on) ? Par quels sommets
passe-t-on entre l'origine et l'extrémité ?

Ce problème se pose notamment :

- en gestion de projets : quels sont les pré-requis et les étapes pour réaliser un
projet donné (méthode PERT) ?
- en organisation d'entreprise : quel est le chemin suivi par un document, une
tâche dans une organisation ?
- en organisation de bases de données : dans quel ordre faut-il remplir les tables
pour assurer l'intégrité référentielle de l'ensemble ?
- en électronique : par où entre-t-on dans le circuit ? Quels sont ses outputs ?
- en jeux vidéo : comment le joueur entre-t-il dans le jeu ? Quel est l'objectif ?
Par quelles épreuves le joueur doit-il passer ?

Un cas particulièrement intéressant est celui de la réalisation de bases de données.

L'analyse entités-relations fournit un premier schéma d'organisation semblable à


celui de la fig. 4.7 mais ne fournit guère d'indications sur l'ordre d'implémentation.

Nous allons voir comment la théorie des graphes permet de résoudre ce problème.

4.3.2. Approche intuitive

Quand un problème est complexe, il faut commencer par le simplifier (2).


Commençons par le graphe élémentaire de la fig. 4.6.

A B C D

fig. 4.6 Origine (A) et destination (D) dans un graphe orienté

Il nous paraît évident que [ A ] est un point d'entrée dans le graphe tandis que [ D ]
est un point de sortie. Mais comment ferons-nous avec un graphe beaucoup plus
compliqué comptant des milliers de sommets ?

1 Dans le cadre des hypothèses formulées dans cet exemple.


e
2 En paraphrasant René Descartes, philosophe français du XVII s. (1596-1650); père de la démarche
analytique.

H. Schyns 4.10
Introduction à la théorie des graphes 4 - Propriétés des graphes

En y regardant de plus près, nous notons que :

- une arête à [ A ] pour origine, mais aucune n'a [ A ] comme destination,


- des arêtes ont [ B ] ou [ C ] pour origine et d'autres ont [ B ] ou [ C ] comme
destination,
- une arête à [ D ] pour destination, mais aucune n'a [ D ] comme origine.

Nous pouvons en conclure que

- un nœud est un point d'entrée dans un graphe orienté si et seulement s'il


n'apparaît jamais comme destination des arêtes du graphe
- un nœud est un point de sortie d'un graphe orienté si et seulement s'il
n'apparaît jamais comme origine des arêtes du graphe

4.3.3. Algorithme

Représentons le graphe de la fig. 4.6 sous la forme matricielle habituelle. Cette fois,
le graphe est orienté et nous devons préciser que les origines des arêtes sont les
en-têtes de colonne et que les destinations sont les en-têtes de ligne :

Origine
A B C D S
A 0
Destination

B 1 1
C 1 1
D 1 1
S 1 1 1 0
tab. 4.16 Représentation matricielle

Nous ajoutons une colonne et une ligne supplémentaires pour les totaux.

Le total de la ligne [ A ] nous indique immédiatement que [ A ] n'est jamais


destination d'une arête. Par contre, le total de la colonne [ A ] nous indique que
[ A ] est utilisé une fois comme origine. Il est donc possible de partir de [ A ] mais
pas d'y arriver. Nous en déduisons que [ A ] est un point d'entrée dans le graphe.

De manière similaire, le total de la colonne [ D ] nous indique immédiatement que


[ D ] n'est jamais comme origine d'une arête. Par contre, la ligne [ D ] nous indique
que [ D ] est utilisé comme destination. Il est donc possible d'arriver à [ D ] mais pas
d'en repartir. Nous en déduisons que [ D ] est un point de sortie du graphe.

Un sommet qui serait à la fois un point d'entrée et un point de sortie serait un point
isolé.

Chacun sait que quand on coupe le bout d'une ficelle, on se retrouve avec un
nouveau bout. De manière similaire, dans la matrice, nous pouvons supprimer le
"bout" [ A ] : supprimons la colonne [ A ], ainsi nous supprimons les arêtes qui en
partent; supprimons aussi la ligne [ A ] puisque ce sommet est retiré du graphe :

Origine
B C D S
B 0
Dest.

C 1 1
D 1 1
S 1 1 0
tab. 4.17 Représentation matricielle

H. Schyns 4.11
Introduction à la théorie des graphes 4 - Propriétés des graphes

Cette fois, nous voyons que [ B ] n'est jamais destination d'une arête. Par contre,
[ B ] est utilisé une fois comme origine. Nous en déduisons que [ B ] est un point de
niveau 2 dans le graphe.

En continuant de la sorte, nous progressons dans un graphe, depuis les points


d'entrée, vers les points de sortie. De manière similaire, nous pourrions remonter
depuis les points de sortie vers les points d'entrée.

4.3.4. Application

Pour illustrer la démarche nous posons la question suivante : dans quel ordre faut-il
implémenter les tables de la base de données dont le diagramme Entités-Relations
est repris à la fig. 4.7 ?

localise Codes héberge


Remises Clients Pays
Postaux

liste reçoit

Conditions liste Lignes facture


Factures Produits
paiement paie Facturation

reprend
acquitte regroupe

Déclarations reçoit Comptes Categorie


Paiements
TVA financiers TVA

effectue

Modes
Paiement

fig. 4.7 Diagramme Entités-Relations d'une chaîne de facturation

Avant d'attaquer le problème, il n'est pas inutile de rappeler le symbolisme :

fig. 4.8 Différents symboles qui représentent une relation un à plusieurs optionnelle

Rappelons aussi que, pour assurer l'intégrité référentielle, les enregistrements qui
appartiennent à l'entité située du coté "un" doivent être encodés avant ceux de
l'entité située du côté "plusieurs".

Le diagramme Entités-Relations est donc aussi un diagramme de


précédence; l'entité "un" étant l'origine et l'entité "plusieurs" la destination de
l'arête qui représente la relation.

C'est donc un graphe orienté que nous pouvons représenter comme à la fig. 4.9.

H. Schyns 4.12
Introduction à la théorie des graphes 4 - Propriétés des graphes

Codes
Remises Clients Pays
postaux

Lignes
Conditions Factures Produits
facturation

Paiements

Comptes
Déclarations
financiers

Modes
paiement

fig. 4.9 Graphe orienté tiré du diagramme Entités-Relations

Le tab. 4.18 montre sa matrice de connectivité. Elle compte une large majorité de
zéros :

Cond. Paiement
Origine
Codes Postaux

Catégorie TVA

Modes Paiemt
Comptes Fin.
Lignes Fact.

Déclarations
Paiements
Remises

Factures
Produits
Clients
Pays

Destination
Pays 0
Codes Postaux 1 1
Clients 1 1
Remises 1 1
Produits 1 1
Lignes Fact. 1 1 2
Factures 1 1 1 3
Cond. Paiement 0
Catégorie TVA 0
Comptes Fin. 0
Paiements 1 1 1 3
Déclarations 0
Modes Paiemt 0
S 1 1 1 0 1 0 3 1 1 1 0 1 1

tab. 4.18 Matrice de connectivité de la base de données

La matrice montre immédiatement qu'il y a six nœuds d'entrée dans la base de


données. C'est par ces entités qu'il faut commencer l'implémentation. Nous les
appellerons Entités de niveau I (1).

De même, nous repérons trois nœuds de sortie. Ces trois entités seront les
dernières à être traitées mais il ne nous est pas encore possible de déterminer leur
niveau.

Elaguons le graphe en supprimant les nœuds d'entrée, lignes et colonnes (sans


toucher aux nœuds de sortie). Nous obtenons la sous-matrice du tab. 4.19.

1 En toute rigueur, il faudrait parler de sommet ou nœud de niveau I.

H. Schyns 4.13
Introduction à la théorie des graphes 4 - Propriétés des graphes

Origine

Codes Postaux

Lignes Fact.

Paiements
Remises

Factures
Produits
Clients
S

Destination
Codes Postaux 0
Clients 1 1
Remises 1 1
Produits 0
Lignes Fact. 1 1 2
Factures 1 1
Paiements 1 1
S 1 1 0 1 0 3 0

tab. 4.19 Entités de niveau II

Nous mettons en évidence deux nouveaux points d'entrée. Ces entités seront
traitées en deuxième ligne. Nous les appellerons Entités de niveau II.

Nous poursuivons notre travail d'élagage et nous obtenons le tab. 4.20.

Origine
Lignes Fact.

Paiements
Remises

Factures
Clients

S
Destination
Clients 0
Remises 1 1
Lignes Fact. 1 1
Factures 1 1
Paiements 1 1
S 1 0 0 3 0

tab. 4.20 Entités de niveau III

Il nous montre que l'entité Client est une entité de niveau III.

Après avoir supprimé l'entité Client nous obtenons les entités de niveau IV de la tab.
4.21 :
Origine
Lignes Fact.

Paiements
Remises

Factures

Destination
Remises 1 1
Lignes Fact. 1 1
Factures 0
Paiements 1 1
S 0 0 3 0

tab. 4.21 Entités de niveau IV

Enfin, nous arrivons aux points de sortie. Ces trois points de sortie sont des entités
de niveau V. Elles seront traitées en dernier lieu.

H. Schyns 4.14
Introduction à la théorie des graphes 4 - Propriétés des graphes

Origine

Lignes Fact.
Paiements
Remises
S

Destination
Remises 0
Lignes Fact. 0
Paiements 0
S 0 0 0

tab. 4.22 Entités de niveau V

A partir de cette hiérarchie, il est aisé de regrouper les entités en sous-groupes


indépendants (fig. 4.10) mais ceci sort du cadre de ce cours (1).

Remises Clients Codes Pays


Postaux
V III II I

Conditions Factures Lignes Produits


paiement Facturation
I IV V II

Déclarations Paiements Comptes Categorie


TVA financiers TVA
I V I I

Modes
Paiement
I

fig. 4.10 Hiérarchie des nœuds (entités) et regroupement en sous-graphes

Une version simplifiée du graphe orienté est présentée à la fig. 4.11.

Comme il est dit dans l'introduction, l'algorithme décrit dans ce chapitre peut
s'appliquer à tous les problèmes organisationnels et dépasse le cadre de la
réalisation de bases de données.

1 Le lecteur intéressé peut lire le document intitulé "Développer une application – Première partie : analyse et
principes" disponible dans la section "Access" du site www.notesdecours.info

H. Schyns 4.15
Introduction à la théorie des graphes 4 - Propriétés des graphes

Clients

Factures Paiements

Produits

fig. 4.11 Graphe orienté des étapes de réalisation du facturier

4.4. Cycles simples et multiples

4.4.1. Position du problème

Grâce à la méthode décrite au paragraphe précédent nous sommes capables


d'identifier les points d'entrée et de sortie d'un graphe orienté et de le traverser de
part en part. Toutefois, les graphes se laissent rarement traverser sans problèmes :
le plus souvent ils présentent des cycles.

Un cycle apparaît dans un graphe orienté lorsqu'une arête part d'un sommet donné
pour aboutir à un sommet rencontré précédemment dans la hiérarchie (fig. 4.12).

A B C E

fig. 4.12 Graphe orienté présentant un cycle simple

Ces cycles sont parfois souhaités, parfois indésirables. Dans tous les cas, il est
important de pouvoir les identifier :

- en réseau : la configuration des routeurs peut engendrer des boucles de routage


dans lesquelles les paquets vont se perdre sans espoir de sortie;
- en engineering : les schémas industriels présentent très fréquemment des
boucles de recyclage, souvent imbriquées. Toute boucle doit être pourvue d'une
purge afin d'éviter l'accumulation de composés indésirables.

Alimentation Réacteur Production


Mélangeur Séparateur
A A®B B

fig. 4.13 Boucle de recyclage dans un schéma industriel

- en économie : la structure financière des gros conglomérats industriels indique


souvent des participations croisées qui compliquent leur évaluation.
- en gestion de projets : les besoins simultanés d'informations ou de ressources
se traduisent par des boucles qui provoquent des blocages (méthode PERT).
- en organisation de bases de données : le schéma Entités-Relations d'une base
de données bien conçue ne peut pas faire apparaître de boucles.

H. Schyns 4.16
Introduction à la théorie des graphes 4 - Propriétés des graphes

4.4.2. Algorithme simple

L'algorithme de détection des points d'entrée et de sortie décrit au chapitre


précédent sert également à la détection des cycles.

Définissons le graphe de la fig. 4.12 sous la forme matricielle habituelle :

Origine
A B C D E S
A 0

Destination
B 1 1 2
C 1 1
D 1 1
E 1 1
S 1 1 2 1 0
tab. 4.23 Représentation matricielle

Nous voyons immédiatement que [ A ] est le nœud d'entrée dans le graphe et que
[ A ] et relié à [ B ] (tab. 4.23).

Poursuivons notre progression dans le graphe en supprimant la ligne et la colonne


[ A ]. Surprise ! Plus aucune ligne n'est vide : la suppression du nœud d'entrée [ A ]
ne provoque pas l'apparition d'une nouvelle entrée (tab. 4.24).

Origine
B C D E S
B 1 1
Destinat.

C 1 1
D 1 1
E 1 1
S 1 2 1 0
tab. 4.24 Entrée dans un cycle

Nous venons de buter sur un cycle dont [ B ] est l'entrée ou, plus exactement la
source.

Puisque nous ne pouvons pas poursuivre dans cette direction, prenons le graphe
par l'autre bout. La matrice révèle que [ E ] est l'extrémité du graphe, c'est-à-dire le
puits. Or on arrive à [ E ] à partir de [ C ].

Nous supprimons l'extrémité [ E ] en retirant la ligne et la colonne [ E ]. Cette


opération devrait faire apparaître une autre extrémité mais il n'en est rien : plus
aucune colonne n'est vide !

Origine
B C D S
B 1 1
Destin

C 1 1
D 1 1
S 1 1 1
tab. 4.25 Sortie du cycle

Nous en déduisons que nous venons de buter contre un cycle dont [ C ] est la sortie.
Le cycle relie les sommets restants [ B ], [ C ] et [ D ]. On y entre par le sommet [ B ]
et on en sort - si on y arrive - par le sommet [ C ] (fig. 4.14).

H. Schyns 4.17
Introduction à la théorie des graphes 4 - Propriétés des graphes

A B C E

fig. 4.14 Cycle simple isolé

Un schéma Entités-Relations ne peut jamais présenter de cycle.

La présence d'un cycle indique soit une relation incorrecte, soit une cardinalité
incorrecte (plusieurs : un au lieu de un : plusieurs).

Dans le cas d'un diagramme PERT de suivi de projet, un cycle définit une
situation de blocage.

[ B ] ne peut accomplir sa tâche tant que [ D ] n'a pas fini la sienne; [ D ] ne peut
accomplir sa tâche tant que [ C ] n'a pas fini la sienne et [ C ] ne peut finir son travail
tant que [ B ] ne lui a pas fourni le sien.

Une solution souvent utilisée consiste à enfermer [ B ], [ C ] et [ D ] dans un même


lieu de travail jusqu'à ce qu'ils soient arrivés à une solution commune. C'est ce qui
se passe lors de certaines négociations gouvernementales.

Dans un autre scénario, tous les intervenants font simultanément et


indépendamment les un des autres un projet martyr basé sur ce qu'ils attendent de
l'intervenant qui les précède. Par exemple, le projet de [ B ] aurait la forme "Si [ D ]
faisait ceci, alors je ferais cela". Chacun passe ensuite son projet au suivant et
rédige un nouveau projet dans lequel il corrige les hypothèses qu'il a faites en
fonction de ce qu'il reçoit du précédent.

4.4.3. Algorithme complet

L'algorithme qui vient d'être décrit révèle rapidement si un graphe contient au moins
un cycle; il ne précise pas s'il y a plusieurs cycles successifs ou imbriqués.

G H I

A B C D E F

fig. 4.15 Cycles successifs

Par exemple, dans le cas de la fig. 4.15, l'algorithme isole bien les sommets {B, C,
D, E, G, H, I} comme étant impliqués dans des cycles mais n'isole pas les trois
cycles successifs.

De même qu'un explorateur progresse dans une forêt équatoriale en taillant dans les
lianes qui entravent son parcours, l'algorithme complet progresse dans le graphe en
coupant les arêtes qui créent des cycles. Au terme du parcours, l'algorithme aura
défini le niveau hiérarchique de chacun des sommets et déterminé le nombre de
cycles rencontrés.

Pour illustrer la démarche, partons du graphe de la fig. 4.16.

H. Schyns 4.18
Introduction à la théorie des graphes 4 - Propriétés des graphes

F G

A B C D E

fig. 4.16 Cycles successifs et imbriqués

Un examen visuel préliminaire révèle trois boucles :

- [ B-C-F-B ]
- [ C-D-G-D ]
- [ B-C-D-G-F-B ]

La matrice de connectivité du tab. 4.26 Entrée et sortie du graphe révèle


immédiatement le point d'entrée en [ A ] et le point de sortie en [ E ] :

Origine
A B C D E F G S
A 0
B 1 1 2
Destination

C 1 1 2
D 1 1
E 1 1
F 1 1 2
G 1 1
S 1 1 2 2 0 1 2
tab. 4.26 Entrée et sortie du graphe

Dans cet algorithme; nous progressons toujours de l'entrée vers la sortie, jamais en
sens inverse. [ A ] est le sommet initial (niveau I) et une arête nous conduit à [ B ].
Nous pouvons à présent supprimer la ligne et la colonne [ A ] afin de mettre en
évidence le niveau suivant. Plus aucune origine n'apparaît : nous nous heurtons à
un premier cycle.

Origine
B C D E F G S
B 1 1
C 1 1 2
Destination

D 1 1
E 1 1
F 1 1 2
G 1 1
S 1 2 2 0 1 2
tab. 4.27 Premier cycle et coupure

Toutefois, nous savons par l'étape précédente que [ A ] nous conduisait à [ B ].

Nous décidons de "couper" toutes les arêtes qui ont [ B ] pour destination.

Pour "couper" les liaisons, nous créons artificiellement une ligne vide [ B ] dans la
matrice de connectivité. [ B ] devient donc un sommet de niveau II. Nous voyons
par la même occasion qu'une arête relie [ B ] à [ C ].

H. Schyns 4.19
Introduction à la théorie des graphes 4 - Propriétés des graphes

F G

A B C D E
I II III

fig. 4.17 Coupure du premier cycle

Nous pouvons à présent supprimer la ligne et la colonne [ B ] afin de mettre en


évidence le niveau suivant (tab. 4.28). A nouveau, aucune origine n'apparaît : nous
nous heurtons à un deuxième cycle.

Origine
C D E F G S
C 1 1
Destination

D 1 1
E 1 1
F 1 1 2
G 1 1
S 2 2 0 1 2
tab. 4.28 Deuxième cycle et coupure

Nous savons que [ B ] nous conduisait à [ C ]. Nous décidons donc de "couper"


toutes les arêtes qui ont [ C ] pour destination.

Ceci crée une ligne vide [ C ] dans la matrice de connectivité et [ C ] devient un


sommet de niveau III. Nous voyons par la même occasion qu'une arête relie [ C ] à
[ D ] et [ F ] (fig. 4.18).
VI V
F G

A B C D E
I II III IV V

fig. 4.18 Coupure du deuxième cycle

Nous pouvons à présent supprimer la ligne et la colonne [ C ] afin de mettre en


évidence le niveau suivant (tab. 4.29). Cette fois, nous découvrons que [ D ] est une
nouvelle origine "normale". C'est un sommet de niveau IV.

Origine
D E F G S
D 0
Destin.

E 1 1
F 1 1
G 1 1
S 2 0 1 1
tab. 4.29 Sortie du cycle

La suite de la progression ne pose plus de problème. Après avoir supprimé la ligne


et la colonne [ D ], nous identifions [ E ] et [ G ] comme étant des sommets de niveau
V (tab. 4.30)

H. Schyns 4.20
Introduction à la théorie des graphes 4 - Propriétés des graphes

Origine
E F G S
E 0

Destin
F 1 1
G 0

S 0 0 1
tab. 4.30 Sommets de niveau V

Il ne reste finalement que [ F ] qui est un sommet de niveau VI et qui marque la fin
de notre progression.

L'algorithme nous a permis :

- de traverser tout le graphe,


- d'attribuer un niveau hiérarchique à tous les sommets,
- d'identifier deux cycles,
- d'identifier une arête de chaque cycle,

Pour identifier exactement tous les sommets et arêtes impliquées dans chaque
cycle, il suffit de repartir de la matrice initiale dans laquelle nous supprimons toutes
les arêtes coupées sauf la dernière (fig. 4.19) (1).
VI V
F G

A B C D E
I II III IV V

fig. 4.19 Identification du dernier cycle

Nous appliquons ensuite l'algorithme simple vu au point 4.4.2. ce qui nous donne
très rapidement le cycle [ C-D-G-C ].

Ces trois sommets peuvent être fusionnés en effectuant un OR logique entre les
lignes puis entre les colonnes [ C ], [ D ] et [ G ]. Nous restaurons ensuite l'avant-
dernière arête coupée (fig. 4.20) et nous reprenons le processus.

VI
F

G
A B C D E
I II III IV V

fig. 4.20 Fusion des sommets et identification du cycle suivant

Nous identifions ainsi le cycle [ B-(CDG)-F-B ].

1 On peut aussi simplement repartir de la matrice obtenue avant la dernière coupure.

H. Schyns 4.21
Introduction à la théorie des graphes 4 - Propriétés des graphes

4.5. Plus court chemin

4.5.1. Position du problème

Jusqu'à présent, nous avons traité de graphes simples constitués d'arêtes


"binaires" :

- l'arête existe, elle est représentée par un 1 dans la matrice de connectivité;


- l'arête n'existe pas, son absence est représentée par un 0 dans la matrice de
connectivité.

Dans les graphes pondérés, les arêtes sont affectées d'un poids quelconque,
évidemment en rapport avec le problème traité (fig. 4.21) (1).

B
2 7
A 3 D
6 3
C

fig. 4.21 Exemple de graphe pondéré

Ce poids représente une caractéristique du parcours qui va de l'origine à la


destination :

- une distance kilométrique


- une durée
- un coût
- un nombre de personnes
- etc.

Pour un même graphe, on peut avoir plusieurs jeux de poids. C'est notamment le
cas des cartes routières dans lesquelles on représente numériquement les distances
(parfois aussi le temps nécessaire) et qualitativement l'importance des routes.

Un graphe pondéré admet une représentation matricielle simple, semblable à celles


que nous avons déjà rencontrées. Le poids attribué à chaque arête est inscrit dans
la cellule correspondante (tab. 4.31).

Origine
A B C D S
A 0
Destin.

B 2 2
C 6 3 9
D 7 3 10
S 8 10 3 0
tab. 4.31 Matrice de connectivité correspondant à la fig. 4.21

A partir du moment où les arêtes sont affectées d'un poids, nous allons
naturellement nous poser la question de savoir quel est le parcours de poids
minimum (maximum) pour aller d'un sommet du graphe à un autre.

Ce problème se pose notamment :

1 On pourrait aussi attribuer un poids aux nœuds mais l'expérience montre que ce poids peut généralement
être attribué aux arêtes entrantes ou sortantes.

H. Schyns 4.22
Introduction à la théorie des graphes 4 - Propriétés des graphes

- en cartographie : quel est le trajet plus court (le plus rapide) entre deux villes ?
- en informatique : dans un réseau de routeurs quel est le chemin le plus rapide
pour transmettre un paquet d'un serveur à un client ?
- en organisation d'entreprise : quelle est la durée (le coût, la charge humaine)
minimale de réalisation d'un projet ?

4.5.2. Algorithme de Dijkstra

Plusieurs algorithmes ont été proposés pour résoudre le problème du plus court
chemin dans un graphe ou, plus exactement, du chemin qui minimise la somme des
poids des arêtes parcourues.

A ce jour, l'algorithme le plus efficace est dû à E. Dijkstra (1). Nous allons l'illustrer
au moyen du graphe de la fig. 4.22 (2).

La matrice de connectivité (non représentée) révèle que [ C ] est un point d'entrée et


[ I ] un point de sortie du graphe. Quel est le chemin optimal c'est-à-dire le chemin
de moindre poids, qui permette de se rendre de [ C ] à [ I ] (3).

fig. 4.22 Application de l'algorithme de Dijkstra

Nous commençons par faire un tableau (4) qui compte autant de colonnes qu'il y a
de sommets dans le graphe. Nous ajoutons une colonne supplémentaire pour
mémoriser la meilleure solution trouvée (tab. 4.32).

Chaque élément contient deux caractéristiques :

- un coût ou poids,
- le nœud à partir duquel on arrive à cet élément pour ce coût;

Pas Noeuds A B C D E F G H I J Min


0 Coût ∞ ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 0
Via C
tab. 4.32 Initialisation du tableau

1 Edsger Dijkstra, mathématicien et informaticien néerlandais né à Rotterdam en 1930, mort à Nuenen 2002.
Sa contribution à l'informatique est considérable. On lui doit notamment le principe des sémaphores
utilisés dans la conception des systèmes d'exploitation.
2 Cet exemple est repris de l'excellent site Aromath dirigé par Bernard Langer (voir sources).
3 Notons au passage qu'on peut choisir deux points quelconques mais dans ce cas, on aura recours à un
algorihme d'élaguage (voir exercices).
4 Du point de vue de la programmation, il s'agit plutôt d'un vecteur de structures ou d'objets.

H. Schyns 4.23
Introduction à la théorie des graphes 4 - Propriétés des graphes

Partant de [ C ], nous ignorons encore le coût des trajets pour nous rendre aux
autres points. Nous inscrivons que le coût est infini a priori. Par contre, le coût pour
ce rendre en [ C ] est nul puisque c'est le point de départ.

Dans la cellule de droite, le résultat optimal indique un coût nul si on part de [ C ]

Nous ajoutons une ligne supplémentaire dans laquelle nous traitons les sommets
directement accessibles à partir de [ C ] et le coût correspondant.

Pas Nœuds A B C D E F G H I J Min


0 Coût ∞ ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 0
Via C
1 Coût 4 ∞ 10 16 ∞ ∞ ∞ ∞ ∞ 4
Via C C C A
tab. 4.33 Premier pas

De [ C ] nous pouvons nous rendre à [ A ](4), à [ D ](10) et à [ E ](16). Tous ces


coûts sont inférieurs aux coûts infinis de l'étape précédente, donc ils les remplacent.
Il est inutile de considérer un retour à [ C ], donc la colonne est barrée.

Le coût est minimum (4) quand on quitte [ C ] pour aller à [ A ].

Puisque le passage par [ A ] est la solution retenue à ce stade, nous ajoutons une
nouvelle ligne dans laquelle nous traitons les sommets directement accessibles à
partir de [ A ] et le coût correspondant.

Pas Nœuds A B C D E F G H I J Min


0 Coût ∞ ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 0
Via C
1 Coût 4 ∞ 10 16 ∞ ∞ ∞ ∞ ∞ 4
Via C C C A
2 Coût 14 8 16 14 ∞ ∞ ∞ ∞ D
Via A A C A 8
tab. 4.34 Deuxième pas

De [ A ] nous pouvons nous rendre à [ B ](10), à [ D ](4) et à [ F ](10). Toutefois, il


ne faut pas oublier que nous avons déjà un coût de 4 unités pour aller de [ C ]
jusqu'à [ A ]. Il faut donc ajouter ce coût antérieur aux coûts locaux.

Nous voyons que le trajet de [ C ] vers [ D ] en passant par [ A ] coûte moins cher (8)
que le trajet direct (10). C'est d'ailleurs cette solution économique qui est retenue
dans la dernière cellule.

Puisque le passage par [ D ] est la meilleure solution retenue à ce stade, nous


ajoutons une nouvelle ligne dans laquelle nous traitons les sommets directement
accessibles à partir de [ D ] et le coût correspondant (tab. 4.35).

Pas Nœuds A B C D E F G H I J Min


0 Coût ∞ ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 0
Via C
1 Coût 4 ∞ 10 16 ∞ ∞ ∞ ∞ ∞ 4
Via C C C A
2 Coût 14 8 16 14 ∞ ∞ ∞ ∞ D
Via A A C A 8
3 Coût 14 16 14 29 ∞ ∞ ∞ 14
Via A C A D B
tab. 4.35 Troisième pas

H. Schyns 4.24
Introduction à la théorie des graphes 4 - Propriétés des graphes

[ D ] permet d'accéder à [ F ] pour un coût local de 12 unités, auxquels il faut ajouter


les 8 unités dépensées jusqu'ici. Le total n'est pas meilleur que le trajet déjà indiqué
qui, passant par [ A ], ne coûte que 14 unités. La colonne [ F ] reste donc
inchangée.

[ D ] permet aussi d'accéder à [ G ](21) pour un coût total de 29 unités, meilleur que
le coût infini noté jusqu'à présent.

Cette ligne présente deux minima, l'un passant par [ B ] et l'autre passant par [ F ].
Que nous sélectionnions l'un ou l'autre comme optimum est sans importance car
nous verrons que l'autre sera traité au pas suivant. Nous décidons donc de prendre
l'optimum que passe par [ B ] (et par [ A ])ce qui amène le coût total de notre chemin
à 14 unités.

De [ B ], nous pouvons aller à [ E ](5), [ J ](10) et [ I ](17).

Les passages vers [ I ] et [ J ] n'étaient pas encore apparus; ils replacent


avantageusement le coût infini noté jusqu'à présent (tab. 4.36).

Par contre, compte tenu du coût total de 14 unités déjà déboursé, le passage par
[ B ] n'est pas la meilleure solution pour se rendre à [ E ]; le trajet direct venant de
[ C ] est moins coûteux.

Pas Nœuds A B C D E F G H I J Min


0 Coût ∞ ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 0
Via C
1 Coût 4 ∞ 10 16 ∞ ∞ ∞ ∞ ∞ 4
Via C C C A
2 Coût 14 8 16 14 ∞ ∞ ∞ ∞ D
Via A A C A 8
3 Coût 14 16 14 29 ∞ ∞ ∞ 14
Via A C A D B
4 Coût 16 14 29 ∞ 31 24 14
Via C A D B B F
tab. 4.36 Quatrième pas
Nous voyons que la meilleure solution de cette ligne est le passage par [ F ], déjà
apparu ex aequo à l'étape précédente.

Pas Nœuds A B C D E F G H I J Min


0 Coût ∞ ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 0
Via C
1 Coût 4 ∞ 10 16 ∞ ∞ ∞ ∞ ∞ 4
Via C C C A
2 Coût 14 8 16 14 ∞ ∞ ∞ ∞ D
Via A A C A 8
3 Coût 14 16 14 29 ∞ ∞ ∞ 14
Via A C A D B
4 Coût 16 14 29 ∞ 31 24 14
Via C A D B B F
5 Coût 16 29 17 31 24 16
Via C D F B B E
tab. 4.37 Cinquième pas
[ F ] nous permet uniquement de passer à [ H ] pour un coût local de 3 unités.
Toutefois, le trajet de coût minimal est encore celui qui permet d'arriver à [ E ] en
venant directement de [ C ].
H. Schyns 4.25
Introduction à la théorie des graphes 4 - Propriétés des graphes

De [ E ], nous pouvons accéder à [ G ] pour un coût local de 4 unités

Pas Nœuds A B C D E F G H I J Min


0 Coût ∞ ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 0
Via C
1 Coût 4 ∞ 10 16 ∞ ∞ ∞ ∞ ∞ 4
Via C C C A
2 Coût 14 8 16 14 ∞ ∞ ∞ ∞ D
Via A A C A 8
3 Coût 14 16 14 29 ∞ ∞ ∞ 14
Via A C A D B
4 Coût 16 14 29 ∞ 31 24 14
Via C A D B B F
5 Coût 16 29 17 31 24 16
Via C D F B B E
6 Coût 20 17 31 24 17
Via E F B B H
tab. 4.38 Sixième pas

Si on tient compte des 16 unités dépensées jusqu'ici, c'est mieux que les 29 unités
nécessaires à un passage par [ D ]. Toutefois, atteindre [ H ] en passant par [ F ] est
encore le trajet le plus intéressant à ce stade (tab. 4.38).

Pas Nœuds A B C D E F G H I J Min


0 Coût ∞ ∞ 0 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 0
Via C
1 Coût 4 ∞ 10 16 ∞ ∞ ∞ ∞ ∞ 4
Via C C C A
2 Coût 14 8 16 14 ∞ ∞ ∞ ∞ D
Via A A C A 8
3 Coût 14 16 14 29 ∞ ∞ ∞ 14
Via A C A D B
4 Coût 16 14 29 ∞ 31 24 14
Via C A D B B F
5 Coût 16 29 17 31 24 16
Via C D F B B E
6 Coût 20 17 31 24 17
Via E F B B H
7 Coût 20 31 22 20
Coût E B H G
8 Via 31 22 22
Coût B H J
9 Via 30 30
Coût J I
tab. 4.39 Trois derniers pas

De [ H ] nous allons en [ G ](3) et en [ J ](5).

Le coût total du trajet pour atteindre en [ G ] n'est pas amélioré (20); nous décidons
de le laisser inchangé car ce trajet déjà noté il implique moins d'étapes. Par contre,
la situation est améliorée quand il s'agit d'atteindre [ J ]. Néanmoins, le trajet
optimum à ce stade est celui qui permet d'atteindre [ G ] en passant par [ E ] (tab.
4.39, ligne 7).

H. Schyns 4.26
Introduction à la théorie des graphes 4 - Propriétés des graphes

De [ G ] nous allons en [ J ](3). Mais, compte tenu des 20 unités déjà dépensées,
cette solution est plus onéreuse que celle déjà notée. Le trajet optimum est celui qui
permet d'atteindre [ J ] en passant par [ H ] (tab. 4.39, ligne 8)

De [ J ] nous atteignons notre destination [ I ] pour un coût local de 8 unités.

Avec les 22 unités déjà dépensées ce trajet coûte moins que celui qui passait par
[ B ].

Nous atteignons donc [ I ] pour un coût total de 30 unités.

Il suffit de lire le bas des colonnes du tableau pour savoir le chemin parcouru :

- Nous arrivons à [ I ] à condition de passer par [ J ] (bas de la colonne [ I ])


- Nous arrivons à [ J ] à condition de passer par [ H ] (bas de la colonne [ J ])
- Nous arrivons à [ H ] à condition de passer par [ F ] (bas de la colonne [ H ])
- Nous arrivons à [ F ] à condition de passer par [ A ] (bas de la colonne [ F ])
- Nous arrivons à [ A ] à condition de passer par [ C ] (bas de la colonne [ A ])

La solution de coût minimum est donc :

[ C ]-( 4 )-[ A ]-( 10 )-[ F ]-( 3 )-[ H ]-( 5 )-[ J ]-( 8 )-[ I ]

soit 30 unités.

Cet algorithme est notamment utilisé dans tous les routeurs pour le routage optimum
des paquets internet ainsi que par les sites tels que fr.mappy.com qui recherchent la
meilleure route entre deux localités.

H. Schyns 4.27
Introduction à la théorie des graphes 5 - Autres propriétés

5. Autres propriétés

5.1. Planéité

5.1.1. Illustration

Un graphe est planaire s'il existe au moins une façon de le dessiner dans le plan
sans que deux arêtes se croisent. Un petit problème célèbre et amusant nous
permettra d'illustrer cette propriété :
W

A B C E

fig. 5.1 Le problème des trois maisons (A,B,C) et des trois fournisseurs (W,G,E)

Dans un lotissement, trois maisons A, B, C doivent être raccordées aux fournisseurs


d'eau (W), de gaz (G) et d'électricité (E). Est-il possible de procéder aux
raccordements en mettant tous les tuyaux et câbles dans le même plan sans que
ceux-ci se croisent (il est permis de déplacer les maisons et les fournisseurs) ?

5.1.2. Raisonnement

Quelle que soit la disposition, on arrive très facilement à alimenter les trois maisons
en eau et en gaz (ou électricité) sans que les conduites se croisent.

A B C E

fig. 5.2 Solution impossible dans le plan

Le problème survient avec le troisième fournisseur :

- si le troisième fournisseur est à l'extérieur du périmètre défini par les conduites,


il lui est impossible d'atteindre la maison centrale (B) sans couper l'une des
conduites.
- s'il est à l'intérieur du périmètre, il se trouve fatalement dans l'une des zones
limitées par les conduites des deux autres fournisseurs, auquel cas il lui est
impossible d'atteindre la troisième maison.

Il n'y a donc pas de solution dans le plan. Par contre, dans l'espace, la solution est
évidente.

H. Schyns 5.1
Introduction à la théorie des graphes 5 - Autres propriétés

5.1.3. Critère mathématique

La planéité est une propriété est importante pour la réalisation de circuits imprimés
mono couche. Dans la réalisation de bases de données, la non-planéité du
diagramme Entités-Relation est souvent l'indice d'une mauvaise organisation des
entités ou d'un manque d'abstraction dans l'analyse.

Existe-t-il un critère de planéité ?

Partons d'un graphe complet K3, Ce graphe est fatalement planaire puisque, par la
géométrie euclidienne, nous savons que trois points définissent un plan et un
triangle dans ce plan et que les côtés d'un triangle ne se croisent pas. Nous avons
donc un graphe complet planaire de 3 sommets et 3 arêtes (fig. 5.3).

fig. 5.3 Graphe complet K3

Si nous ajoutons un nœud, combien d'arêtes pouvons-nous tracer sans que deux
d'entre-elles se croisent ?

Deux cas sont à considérer :

- le nouveau nœud est à l'intérieur du triangle, auquel cas, on peut tracer trois
arêtes vers les sommets existants (fig. 5.4);
- le nouveau nœud est à l'extérieur du triangle, auquel cas, on peut aussi tracer
trois arêtes vers les sommets existants.

1 2 1 2

3
3

fig. 5.4 Ajout d'un quatrième nœud et ses arêtes

En fait, ces deux solutions sont identiques : trois sommets définissent un périmètre
et le quatrième est à l'intérieur du périmètre. Nous avons maintenant un graphe
complet de 4 nœuds et 6 arêtes.

Ajoutons un cinquième nœud et voyons combien d'arêtes nous pouvons ajouter


sans provoquer de croisement :

- soit le cinquième nœud est à l'intérieur d'un des triangles internes et nous ne
pouvons ajouter que trois arêtes pour le relier aux trois sommets du triangle en
question (fig. 5.5);
- soit le cinquième nœud est à l'extérieur de la figure et nous ne pouvons ajouter
que trois arêtes pour le relier aux trois sommets qui délimitent le périmètre.

H. Schyns 5.2
Introduction à la théorie des graphes 5 - Autres propriétés

1 2

fig. 5.5 Ajout d'un cinquième nœud et ses arêtes

Ce faisant, nous définissons deux nouveaux triangles internes et mais le périmètre


compte toujours trois sommets. Cette fois, le graphe n'est plus complet.

Nous voyons que nous pouvons répéter de raisonnement indéfiniment : chaque fois
que nous ajouterons un sommet, nous ne pourrons jamais tracer que trois arêtes
supplémentaires. Le raisonnement définit une progression arithmétique de raison 3.

Nœuds 3 4 5 6 … N
Arêtes 3 6 9 12 … 3·n-6

Nous définissons un premier critère :

Un graphe simple (1) est planaire si


a £ 3·n – 6

où [ a ] et le nombre d'arêtes et [ n ] est le nombre de nœuds.

Nous pouvons reprendre le raisonnement en imposant que le graphe ne présente


aucun triangle (fig. 5.6). Tout périmètre doit compter quatre sommets au moins.

A A

ð B E C ou B C E

D D

fig. 5.6 Graphe sans triangle

Nous définissons un second critère :

Un graphe simple sans triangles est planaire si


a £ 2·n – 4

5.1.4. Application

On démontre facilement que

1 Par graphe simple, on entend un graphe qui ne contient pas de boucles ou, dans le cas présent, un
graphe dans lequel les boucles ne sont pas comptées comme arêtes.

H. Schyns 5.3
Introduction à la théorie des graphes 5 - Autres propriétés

le schéma Entités-Relations d'une base de données ne peut jamais contenir


de triangle.

définit organise
Ingénieurs Projets Département Service

utilise emploie

travaille pour Develop- emploie


Employé
peurs

fig. 5.7 Schémas E-R incorrects

En effet :

- soit les trois relations 1 : n se succèdent dans le même sens et forment un cycle
inextricable (fig. 5.7 gauche). L'une des relations est certainement mal posée
ou redondante;
- soit l'une des trois relations 1 : n est en sens inverse (fig. 5.7 droite) ce qui
fournit deux chemins possibles d'une table à une autre. L'une des relations (le
chemin direct) est redondante;
- soit il manque une table pivot dans le circuit.

On en conclut que, dans une base de données bien conçue, le nombre maximum
de relations est déterminé par le nombre de tables selon le critère vu plus haut :

Relations £ 2·Tables – 4

Ceci dit, une base de données peut très bien fonctionner sans que ce critère soit
vérifié mais il y a fort à parier que l'objectif de non-redondance de l'information sera
violé dans certaines circonstances. D'autre part, ce n'est pas parce qu'un schéma
entités-relation vérifie ce critère qu'il est correct.

5.2. Chemin et circuit eulérien

La notion de chemin eulérien est souvent présentée sous la forme d'un petit
problème de réflexion. Par exemple, est-il possible de dessiner la fig. 5.8 en un seul
trait de crayon, sans lever la pointe et sans passer deux fois par le même trait ?

fig. 5.8 Dessiner cette figure d'un seul trait de crayon


En termes plus mathématiques, on dit qu'un graphe non orienté admet un chemin
eulérien s'il existe un chemin dans lequel chaque arête apparaît une et une seule
fois. Si le chemin est fermé (retour au point de départ), on parle de cycle eulérien
et le graphe est appelé graphe eulérien.

H. Schyns 5.4
Introduction à la théorie des graphes 5 - Autres propriétés

La solution passe par l'examen des nœuds : pour ne pas être bloqué à un nœud,
tout trait qui y arrive doit pouvoir en repartir. Il faut donc que chaque nœud soit le
point de rencontre d'un nombre pair d'arêtes; en d'autres mots, que tous les nœuds
soient de degré pair.

fig. 5.9 Deux sommets de degré impair : point de départ et d'arrivée

Toutefois, si on admet que le chemin puisse avoir un point de départ différent de


son point d'arrivée, alors le graphe peut admettre deux et seulement deux sommets
de degré impair (fig. 5.9). Le chemin partira obligatoirement de l'un pour aboutir
obligatoirement à l'autre. Malgré cette contrainte, le problème admet plusieurs
solutions (fig. 5.10) :

fig. 5.10 Deux solutions possibles parmi d'autres

Un graphe non orienté connexe possède un chemin eulérien si et seulement


si tous ses nœuds sont de degré pair à l'exception d'au plus 2 d'entre eux.

Si tous les sommets sont de degré pair, alors il existe au moins un cycle dans lequel
n'importe quel sommet peut être pris comme point de départ et d'arrivée :

fig. 5.11 Graphe eulérien et l'un des cycles possibles

L'histoire raconte qu'Euler s'est intéressé à cette question parce qu'on lui avait
soumis le problème suivant : la ville de Königsberg (aujourd'hui Kaliningrad) est
bâtie sur deux îles reliées par un pont. Trois ponts relient les îles à la rive droite du
fleuve, trois autres les relient à la rive gauche du fleuve (fig. 5.12) .

fig. 5.12 Schéma de Kaliningrad

H. Schyns 5.5
Introduction à la théorie des graphes 5 - Autres propriétés

Est-il possible d'imaginer un trajet qui, partant d'un point quelconque de la ville,
permette de traverser une et une seule fois chacun des ponts et de revenir à son
point de départ ?

Nous laisserons au lecteur le soin de répondre à cette question en se servant de ce


qui a été vu dans ce chapitre.

5.3. Chemin et circuit hamiltonien

Le chemin hamiltonien peut être vu comme un raffinement du chemin eulérien. Il


s'agit d'un parcours qui passe une et une seule fois par tous les nœuds d'un
graphe en ne parcourant qu'une seule fois les arêtes utilisées (sans
nécessairement parcourir toutes les arêtes). Si le chemin revient à son point de
départ, on parle de cycle hamiltonien (fig. 5.13).

fig. 5.13 Chemin et cycle hamiltonien

Alors qu'il existe un critère simple pour définir si un graphe est eulérien ou non, il
n'existe pas de critère simple - nécessaire et suffisant (1) – pour définir si un graphe
est hamiltonien ou non. Par contre, on dispose d'un ensemble de critères divers :

1 - Il suffit qu'un graphe possède un nœud de degré 1 pour pouvoir affirmer qu'il ne
contient pas de circuit hamiltonien. C'est évident puisqu'un circuit hamiltonien
doit revenir à son point de départ en utilisant une autre arête que l'arête initiale.
Toutefois, un tel graphe peut contenir un chemin hamiltonien (fig. 5.14).

fig. 5.14 Graphe non hamiltonien

2 - Si un graphe contient un nœud de degré 2, alors ses deux arêtes adjacentes


doivent être incluses dans le circuit hamiltonien. C'est également évident par un
raisonnement similaire à celui du point précédent.
3 - Si un circuit hamiltonien passe par un nœud de degré supérieur à 2, alors
toutes les arêtes autres que celle par lesquelles le circuit arrive au nœud et en
repart peuvent être éliminées du graphe pour la suite. C'est évident puisqu'un
point ne peut apparaître qu'une seule fois dans le circuit; une fois qu'il a été
visité, il est hors de question d'y arriver à nouveau par un autre chemin.
Cette propriété ouvre la voie à une recherche heuristique d'un circuit
hamiltonien dans un graphe donné (cf. infra).
4 - Un circuit hamiltonien ne peut pas contenir un plus petit circuit hamiltonien.
5 - Tout graphe complet contenant au moins trois nœuds contient un circuit
hamiltonien.

1 "Tous les Hommes sont mortels". Il suffit de savoir que je suis un Homme pour savoir que je suis mortel
mais il n'est pas nécessaire d'être un Homme pour être mortel car un chat aussi est mortel.
Réciproquement, il est nécessaire que je sois mortel pour être défini comme Homme, mais il ne suffit pas
que je sois mortel car un chat est mortel sans pourtant être un Homme.

H. Schyns 5.6
Introduction à la théorie des graphes 5 - Autres propriétés

C'est aussi évident puisque dans un graphe complet, chaque nœud est
connecté à tous les autres. Il suffit donc de déplacer virtuellement les points
vers la périphérie du graphe. Le périmètre de la figure ainsi générée est un
cycle hamiltonien (fig. 5.15)

fig. 5.15 Circuit hamiltonien dans un graphe complet K5

Un graphe simple contenant au moins 3 nœuds contient un circuit


hamiltonien si chaque nœud est connecté à plus de la moitié des autres
nœuds du graphe.

En termes plus mathématiques, il faut que le degré de chaque nœud soit au moins
égal à la moitié du nombre de nœuds du graphe.

Cette condition n'est cependant pas nécessaire (1) ainsi qu'en témoigne le problème
posé originellement par Hamilton : dans le dodécaèdre régulier de la fig. 5.16 (2),
est-il possible de trouver un circuit qui passe une et une seule fois par chacun des
20 sommets ?

fig. 5.16 Dodécaèdre régulier (3)

Le problème se simplifie quelque peu si on considère le dodécaèdre comme


"écrasé" dans le plan, sans rien changer à l'organisation des arêtes (on parle
d'isomorphisme)(fig. 5.17). Observons d'abord que tous les nœuds sont de degré 3.

fig. 5.17 Isomorphisme plan du dodécaèdre régulier

1 Il est parfois possible de trouver un chemin hamiltonien, même si cette condition n'est pas remplie.
2 Un dodécaèdre régulier est formé de 12 pentagones : un pentagone forme la base sur laquelle s'appuient
cinq autres pentagones formant les côtés d'une coupe. La coupe reçoit un "couvercle" formé de manière
similaire.
3 Source : serge.mehl.free.fr/anx/dodeca_tp.html

H. Schyns 5.7
Introduction à la théorie des graphes 5 - Autres propriétés

Commençons le chemin en parcourant le pentagone intérieur (fig. 5.18). Nous ne


pouvons toutefois pas sélectionner tout le périmètre car nous aurions déjà un circuit
fermé, ce qui serait en contradiction avec le critère 4 ci-dessus.

Ceci nous contraint à sélectionner les deux arêtes qui joignent les extrémités de
notre chemin au pentagone médian (en rouge).

fig. 5.18 Première partie du chemin

Appliquons le critère 3 et éliminons les quatre arêtes excédentaires qui aboutissent


aux nœuds internes du parcours déjà sélectionné (en gris).

Cette étape fait apparaître trois nœuds de degré 2 sur le pentagone médian. En
vertu du critère 2, les deux arêtes qui aboutissent à chacun de ces nœuds doivent
faire partie du parcours hamiltonien (fig. 5.19). Ceci nous amène à sélectionner
trois côtés (six arêtes) du pentagone médian.

fig. 5.19 Deuxième partie du chemin

Appliquons le critère 3 et éliminons les deux arêtes qui aboutissent aux nœuds
internes de cette partie du chemin.

Cette fois, nous faisons apparaître deux nœuds de degré 2 sur le pentagone
externe. Les arêtes qui y conduisent doivent faire partie du circuit. Nous
sélectionnons ainsi trois côtés du pentagone externe (fig. 5.20).

fig. 5.20 Troisième partie du chemin

H. Schyns 5.8
Introduction à la théorie des graphes 5 - Autres propriétés

Il nous reste à relier les trois segments du circuit entre eux. Il suffit de sélectionner
l'une quelconque des arêtes qui joint deux chemins pour que toutes les autres
sélections soient imposées en vertu des critères 2 et 3. Par exemple, relions le
chemin interne au chemin médian grâce à l'arête marquée d'une flèche. Dès lors,
l'arête opposée est interdite, ce qui fait apparaître un point de degré 2 dont les deux
arêtes doivent être incluses, etc. De proche en proche, nous arrivons à la solution
de la fig. 5.21 :

fig. 5.21 Circuit hamiltonien du dodécaèdre

Le concept de circuit hamiltonien est présent dans le célèbre problème du voyageur


de commerce : comment un voyageur de commerce doit-il agencer sa tournée pour
ne passer qu'une et une seule fois dans les villes où se trouvent ses clients et
revenir à son point de départ ?

Bien entendu, on peut compliquer le problème en donnant des poids différents aux
arêtes et en imposant en plus que le voyageur de commerce fasse un nombre
minimal de kilomètres, etc.

A ce jour, le problème n'a pas reçu de solution "simple" : il faut soit examiner tous
les cas, ce qui consomme du temps de calcul exponentiel, soit utiliser des
algorithmes heuristiques qui fournissent une solution "convenable" en un temps de
calcul "convenable" sans garantir que cette solution sera la meilleure possible.

H. Schyns 5.9
Introduction à la théorie des graphes 6 - Exercices du chapitre

6. Exercices du chapitre

6.1. Exercice 1

B C D

E F G H I J

K L M N

fig. 6.1 Une arborescence typique

A partir des différents algorithmes présentés dans ce cours, concevoir un algorithme


qui permette de vérifier si un graphe est une arborescence.

On rappelle qu'une arborescence est un graphe orienté :

- connexe
- acyclique
- ayant un seul sommet d'entrée (source)
- se terminant par des feuilles (qui ont un seul parent)

Comment mesurer la profondeur (diamètre) d'un arbre ou d'une arborescence ?


L'algorithme valable pour les graphes non orientés est-il valable ici ?

6.2. Exercice 2

Etant donné le graphe de la fig. 6.2, en appliquant les méthodes exposées dans le
cours :

- rechercher les éventuels sommets d'entrée (sources) et de sortie (puits),


- rechercher et identifier la présence éventuelle de cycles,
- déterminer le diamètre du graphe rendu non orienté (dans lequel toutes les
arêtes peuvent être parcourues dans les deux sens)
- déterminer le plus court chemin pour aller de [ B ] à [ L ]

H. Schyns 6.1
Introduction à la théorie des graphes 6 - Exercices du chapitre

E
13
12 6 9

10 5
C H K
5

A 4 10 3
4
3
D F
9
6 6
I L
4
15 17
B 8 5
J

10 5
G
fig. 6.2 Un graphe orienté à analyser

Représentation matricielle correspondante :

Origine

A B C D E F G H I J K L

A 6 1

B 0

C 5 4 2

D 4 1

E 12 6 2
Destination

F 15 3 8 3

G 10 5 2

H 10 9 2

I 9 17 2

J 4 1

K 13 10 5 3

L 6 5 3 3

3 3 2 2 2 2 2 1 2 2 1 0 22

6.3. Exercice 3

En prenant le graphe de la fig. 6.2, comme base de raisonnement, concevoir un


algorithme qui permet d'élaguer le graphe pour ne conserver que les arêtes

- qui permettent d'aller de [ A ] à [ J ]


- qui permettent d'aller de [ E ] à [ G ]

H. Schyns 6.2
Introduction à la théorie des graphes 6 - Exercices du chapitre

6.4. Exercice 4

Le graphe de la fig. 6.3 est un schéma Entités-Relations d'une base de données de


gestion d'hôpital.

Services

emploie Actes

active gère

Catégories définit possède


Soignants Aptitudes
Personnel

localise permet gère

héberge Code
Pays Soins Chambres
Postaux

localise nécessite abrite

assure remplit
Mutuelles Patients Inscriptions Lits
attribue

engendre

acquitte
Factures Paiements

fig. 6.3 Un schéma Entités-Relations à analyser


- est-il correct du point de vue de la théorie des graphes (connexité, planéité).
- déterminer le niveau hiérarchique de chacune des entités
- implémentez le projet en définissant les sous-modules constitutifs et leur
enchaînement.

6.5. Exercice 5

Joindre les dix sommets de ce volume par un circuit hamiltonien. Est-ce possible ?

Astuce : rechercher d'abord un parcours hamiltonien dans un cube simple.

H. Schyns 6.3
Introduction à la théorie des graphes 7 - Sources

7. Sources

- Discrete Mathematics and Its Applications


Kenneth H. Rosen
McGraw-Hill International Editions (4th edition)
ISBN 0-07-116756-0

- Théorie des graphes et articles connexes


Anonyme
Wikipedia
fr.wikipedia.org/wiki/Théorie_des_graphes

- Cours en Théorie des Graphes


Didier Maquin
Ecole Nationale Supérieure d'Electricité et de Mécanique
(ENSEM – Nancy)
cours.ensem.inpl-nancy.fr/cours-dm/graphes/graphe.html

- Organisation des tâches avec le graphique de PERT


Cédric Dekeyser
Blog
cdekeyser.com/tag/gestion-de-projet/

- Algorithme de Dijkstra
Bernard Langer
Aromath : Le goût des mathématiques
www.aromath.net/Page.php?IDP=624&IDD=0

- Parallel thinking
Creativity step by step
Edward de Bono
Harper Perennial
ISBN 0-06-090325-2

H. Schyns 7.1