Vous êtes sur la page 1sur 44

Théorie et algorithmique des graphes

Guillaume Moreau Ecole Centrale de Nantes

EI1 - eLOGRA, mai 2006

2

Table des matières

1 Eléments de théorie des graphes

 

5

1.1 Introduction

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

5

1.2 Graphes

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

1.2.1 Définitions

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

1.2.2 Voisins - Degrés

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

8

1.2.3 Sous-graphes, graphes partiels

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

9

1.2.4 Graphes non-orientés

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

9

1.3 Chemins, chaînes, cycles

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

10

1.4 Composantes fortement connexes - fermeture transitive

 

13

1.4.1 Composantes fortement connexes

 

.

.

.

.

.

.

.

.

.

.

.

.

.

13

1.4.2 Fermeture transitive

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

13

1.4.3 Graphes fortement connexes

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

2 Ensembles particuliers dans les graphes

 

15

2.1 Nombre de stabilité

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

2.2 Nombre d’absorption

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

2.3 Noyau - fonctions de Grundy

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

2.3.1 Définitions

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

16

2.3.2 Exemple de calcul de fonction de Grundy

.

.

.

.

.

.

.

.

.

17

2.4 Nombre chromatique

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

17

3 Familles de graphes possédant des propriétés particulières

 

19

3.1 Graphes planaires

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

3.2 Graphes hamiltoniens et eulériens

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

20

3.2.1 Graphes hamiltoniens

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

20

3.2.2 Graphes eulériens .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

4 Algorithmique des graphes

 

23

4.1

Représentation en mémoire

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

4.1.1 Matrice d’adjacence

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

23

4.1.2 Tableaux d’arcs .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

4.1.3 Tableaux de successeurs

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

4.1.4 Listes chaînées

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

 

3

4

TABLE DES MATIÈRES

4.2 Parcours de graphes .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

 

4.2.1

Parcours des arbres .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

25

4.3 Algorithmes de plus court chemin

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

 

4.3.1 Algorithme de Ford-Bellman .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

26

4.3.2 Algorithme de Moore ou de Dijkstra

 

.

.

.

.

.

.

.

.

.

27

4.3.3 Algorithmes de Bellmann

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

28

4.4 Problème du flot maximal

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

31

 

4.4.1 Définitions

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

31

4.4.2 Résolution du problème de flot maximal .

.

.

.

.

.

.

.

.

.

32

4.4.3 Algorithme de Ford-Fulkerson et exemple

 

.

.

.

.

34

4.5 Flot maximal à coût minimal

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

 

4.5.1 Définitions

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

4.5.2 Algorithme de Roy

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

4.5.3 Exemple

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

39

5

Démonstrations

 

43

Chapitre 1

Eléments de théorie des graphes

1.1

Introduction

Les graphes constituent une des façons les plus naturelles de représenter bon nom- bre de problèmes de la vie courante comme de celle d’un ingénieur. Ils sont aussi représentatifs des résultats les plus fondamentaux de l’algorithmique. Prenons un exemple simple : nous devons nous déplacer de Nantes à Marseille en utilisant la route. Dans un premier temps, on ne prend en compte que quelques grandes villes comme le montre la figure 1.1. Les chiffres sont bien sûr assez loin de la réalité. Comme il n’existe pas sur ce graphe de route directe entre Nantes et Marseille, la première question qu’on peut se poser est bien sûr celle de l’existence d’un itinéraire entre Nantes et Marseille. On introduit ici la notion de fermeture transitive d’un graphe qui sera étudiée en 1.4.2.

Paris 500 Strasbourg 350 Nantes 350 800 800 Bordeaux 450 Marseille
Paris
500 Strasbourg
350
Nantes
350
800
800
Bordeaux
450
Marseille

Figure 1.1: Calculer un itinéraire de Nantes à Marseille

5

6

CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES

Intuitivement, on trouve assez facilement que sur ce graphe, le chemin le plus court entre Nantes et Marseille ne passe naturellement pas par Strasbourg. Ici, le chemin le plus court passe par Bordeaux et fait 800 kilomètres, comme le met en évidence la figure 1.2. Le problème est résoluble manuellement et intuitivement sur un petit nombre de villes et de routes. Pour construire les navigateurs GPS embarqués dans les voitures, ou pour calculer les itinéraires comme sur le site http://www.viamichelin.com en prenant en compte les quelques dizaines de milliers de communes de France, cette approche n’est évidemment plus tenable. On entre dans les algorithmes dits de plus courts chemins que l’on étudiera au chapitre 4 de ce document.

Paris

500

Strasbourg

800 800 Marseille
800
800
Marseille
350 Nantes
350
Nantes
350
350

Bordeaux

450
450

Figure 1.2: Le chemin le plus court de Nantes à Marseille

On peut rendre ce problème un peu plus complexe en tenant compte de la nature des routes qui relient les différentes de villes. Il va de soi qu’on roulera en général plus vite sur une autoroute que sur une petite route de campagne. Encore que ceci

peut s’avérer faux au moment des départs en vacances les problèmes de flots dans les graphes.

Il existe encore un autre type de problème que nous n’avons pas abordé. Il ne fait pas partie des problèmes de graphes a priori mais peut s’exprimer aussi sous forme de graphe. C’est un des problèmes fondamentaux de l’algorithmique théorique, il est usuellement utilisé en théorie de la complexité pour introduire la classe des problèmes NP-complets. On l’appelle le problème du voyageur de commerce : il s’agit, toujours dans le même graphe, de déterminer l’itinéraire idéal d’un voyageur de commerce qui doit passer une et une seule fois par chaque ville, tout en minimisant le nombre de kilomètres parcourus. On montre qu’il n’existe

On introduira donc aussi

1.1. INTRODUCTION

7

pas d’algorithme en temps polynomial 1 pour résoudre le problème. D’autres types de problèmes utilisent les graphes, en informatique comme dans d’autres disciplines des sciences de l’ingénieur. Par exemple, si on con- sidère une carte de France comme celle de la figure 1.3 coloriée de façon à ce que deux départements adjacents aient une couleur différente, quel est le nombre de couleurs minimal à utiliser ? On montrera dans la section 3.1 consacrée aux graphes planaires qu’il faut au minimum 4 couleurs.

aux graphes planaires qu’il faut au minimum 4 couleurs. Figure 1.3: Colorier une carte de France

Figure 1.3: Colorier une carte de France

Le dernier exemple de cette introduction concerne la gestion de projet. Dans un projet, un certain nombre de tâches peuvent s’effectuer en même temps que d’autres tandis qu’au contraire, il est indispensable que certaines tâches aient été complétées avant que d’autres ne commencent. Cette fois encore, ces dépendances entre tâches peuvent exprimées sous forme de graphes. Cette approche est valable pour une recette de cuisine comme pour un planning de PEI mais aussi pour la pro- grammation parallèle : en effet, pour calculer une moyenne générale, on a besoin que toutes les moyennes aient été calculées, mais a contrario, pour calculer un pro- duit matriciel certaines parties peuvent se dérouler en parallèle : dans l’expression

(c ij ) 1i,j n =

n

k =1

a ik b kj

(1.1)

le calcul de c ij est indépendant de celui de c i j ; ils peuvent donc être calculés

1 c’est-à-dire que le temps d’exécution du programme ne peut pas être une fonction polynomiale du nombre de sommets du graphe

8

CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES

indépendamment les uns des autres. Par contre, le calcul d’un c ij nécessite que les calculs de tous les a ik b kj aient été effectués pour tous les valeurs de k . On appelle ces graphes des graphes de dépendance.

1.2

Graphes

1.2.1 Définitions

Définition 1.2.1 Un graphe G = (X, U ) est le couple constitué d’un ensemble dénombrable de sommets X et d’une famille U d’éléments de X 2 appelés arcs.

Dans ce cours, nous n’aborderons que les cas où X est fini. On représente les sommets par des points et les arcs correspondant à un couple de sommets (x, y ) par une ligne joignant x à y , portant une flèche de x vers y . On dit alors que x est l’origine de l’arc, tandis que y est son extrémité. Un exemple de graphe est représenté figure 1.4.

B A E D C F Figure 1.4: Exemple de graphe
B
A
E
D C
F
Figure 1.4: Exemple de graphe

S’il existe deux arcs reliant les mêmes sommets, on parle de graphes multiples ou multigraphes comme celui représenté sur la figure 1.5. Dans ce cours, nous nous intéresserons essentiellement aux graphes simples et souvent sans boucles.

1.2.2 Voisins - Degrés

Soient un graphe G = (X, u ) et un couple (x, y ) U . y est alors appelé un successeur de x, et x un prédécesseur de y . On note :

Γ + (x) l’ensemble des successeurs de x

Γ (y ) l’ensemble des prédécesseurs de y

Γ(x) = Γ + (x) Γ (x) représente les voisins de x, ou encore les sommets adjacents à x. Dans le graphe de la figure précédente, Γ + (A) = {E, D, B } et Γ + (A) = 0.

1.2. GRAPHES

9

B A E D C F Figure 1.5: Exemple de multigraphe
B
A
E
D C
F
Figure 1.5: Exemple de multigraphe

Remarque : (X, Γ + ) suffit à définir complètement le graphe

Γ + = x X Γ + (x)

Le demi-degré extérieur d’un sommet x, noté d + (x), est le nombre d’arcs issus de x, c’est-à-dire que d + (x) = |Γ + (x)|. De la même façon, on définit le demi- degré intérieur, noté d (x), comme étant le nombre d’arcs incidents à x, c’est- à-dire que d (x) = |Γ (x)|. Le degré d’un sommet est alors la somme de ses demi-degrés intérieur et extérieur. On dit qu’un graphe est complet si et seulement si x, y X alors (x, y ) U , c’est-à-dire si et seulement si tous les sommets sont reliés deux à deux (dans les deux sens). Dans le cas d’un graphe complet à n sommets, tous les demi-degrés intérieurs et extérieurs sont égaux à n 1.

1.2.3 Sous-graphes, graphes partiels

Définition 1.2.2 On appelle sous-graphe de G = (X, U ) le graphe G = (X , U X ) engendré par un ensemble de sommets X X U X représente les arcs de U ayant leur origine et leur extrémité dans X .

Définition 1.2.3 De la même manière on appelle graphe partiel de G = (X, U ) engendré par U , le graphe G = (X, U ) U U , c’est-à-dire qu’on conserve tous les sommets mais qu’on supprime certains arcs.

Les deux graphes de la figure 1.6 représentent respectivement le graphe partiel de l’exemple de la figure 1.4 engendré par les sommets {A, D, E, F } et le sous- graphe de ce même exemple dans lequel on a supprimé les arcs (E, D ) et (D, E ) et (E, F ).

1.2.4 Graphes non-orientés

Pour étudier certaines propriétés d’un graphe, on n’a pas toujours besoin de faire référence à l’orientation, par exemple si on veut seulement savoir si deux sommets

10

CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES

A E D F
A
E
D
F
B A E D C F
B
A
E
D C
F

Figure 1.6: Exemple de sous-graphe et de graphe partiel

sont reliés ou non. Dans ce cas, on considère des arêtes (x, y ) et non plus des arcs (x, y ). Les notions de voisins et de degrés subsistent bien entendu. La figure 1.7 présente un exemple de graphe non-orienté.

Théorème 1.2.1 Soit G = (X, E ) un graphe non-orienté. Le nombre de sommets de degré impair est pair. Démonstration

B A E D C F Figure 1.7: Exemple de graphe non orienté
B
A
E
D C
F
Figure 1.7: Exemple de graphe non orienté

Définition 1.2.4 G 1 = (X 1 , U 1 ) et G 2 = (X 2 , U 2 ) sont dits isomorphes si et

seulement si il existe une bijection f :

(f (x), f (y )) U 2 .

X 1 −→ X 2 telle que (x, y ) U 1 ⇐⇒

Le problème de décider si deux graphes sont isomorphes est un problème al- gorithmiquement difficile.

1.3 Chemins, chaînes, cycles

Définition 1.3.1 On appelle chemin d’un graphe G = (X, U ) toute suite d’arcs

µ = (u 1 ,

, u p ) vérifiant i < p , l’extrémité de u i est l’origine de u i+1 . Si, en

plus, l’extrémité de u p est égale à l’origine de u 1 , µ est un circuit.

1.3.

CHEMINS, CHAÎNES, CYCLES

11

Dans le graphe de la figure 1.8, ((A, E ), (E, D )) est un chemin et (E, F ), (F, D )(D, E ) est un circuit. Naturellement, (E, F ), (F, D )(D, E ) est aussi un chemin. Dans les graphes non-orientés, on définit de manière analogue les chaînes et les cycles.

B A E D C F Figure 1.8: Exemple de chemin et de circuit
B
A
E
D C
F
Figure 1.8: Exemple de chemin et de circuit

Le nombre d’arcs constitue la longueur de la chaîne ou du chemin. Si le chemin passe une seule fois par chaque arc, il est dit simple, s’il passe une seule fois par chaque sommet, il est dit élémentaire.

Définition 1.3.2 G = (X, U ) est connexe si et seulement si x, y X il existe une chaîne de x à y .

Propriété 1.3.0.1 La relation R définie par xRy si et seulement si il existe une chaîne de x à y est :

réflexive

symétrique

transitive

Démonstration

C’est donc une relation d’équivalence dont les classes sont appelées les com- posantes connexes de G.

Définition 1.3.3 G = (X, U ) est dit fortement connexe si et seulement si x, y X il existe un chemin de x à y et un chemin de y à x.

Propriété 1.3.0.2 La relation R définie par xR y si et seulement si il existe un chemin de x à y et un chemin de y à x est :

réflexive

symétrique

12

CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES

transitive

Démonstration

C’est donc une relation d’équivalence dont les classes sont appelées les com- posantes fortement connexes de G. La figure 1.9 propose un exemple de graphe sur lequel sont représentées ses composantes fortement connexes. Sur ce graphe, il n’y a par contre qu’une seule composante connexe, composée de tous les sommets.

Propriété 1.3.0.3 Un graphe fortement connexe est connexe, mais la réciproque est fausse (voir figure 1.9).

B A C D Figure 1.9: Exemple de graphe connexe mais pas fortement connexe
B
A
C
D
Figure 1.9: Exemple de graphe connexe mais pas fortement connexe

Définition 1.3.4 G = (X, U ) est un graphe k -connexe si et seulement si A X avec |A| < k , le sous-graphe engendré par X \ A est connexe. La connectivité de G est alors le plus grand k tel que G soit k -connexe, noté K (G).

On peut voir la k-connectivité comme le nombre minimum de sommets qu’il faut enlever pour disconnecter le graphe. On remarque que K (G) min x X |Γ(x)| = δ . En effet, si on enlève les δ voisins du x qui réalise δ , x n’est plus connecté au reste du graphe.

Théorème 1.3.1 (Menger) G est k -connexe si et seulement si (x, y ) X 2 il

existe k chaînes élémentaires disjointes 2 à 2 intérieurement (sommets) qui relient

x et y .

Corollaire 1.3.0.1 Si G k -connexe, x X , A X avec |A| ≥ k , alors il existe k chaînes élémentaires disjointes 2 à 2 de x à A.

1.4.

COMPOSANTES FORTEMENT CONNEXES - FERMETURE TRANSITIVE13

1.4 Composantes fortement connexes - fermeture transi- tive

1.4.1 Composantes fortement connexes

Soit G = (X, U ) un graphe. L’algorithme suivant calcule la composante fortement connexe associée au sommet x 0 X .

marquer le sommet x 0 avec et Répéter marquer avec tout successeur non marqué d’un sommet marquer avec tout prédécesseur non marqué d’un sommet jusqu’à ce qu’il n’y ait plus de marquage possible

Les sommets marqués et forment la composante fortement connexe de x 0 . On peut trouver toutes les composantes fortement connexes en réappliquant l’algorithme à tous les sommets n’appartenant pas encore à une composante forte- ment connexe.

1.4.2 Fermeture transitive

Définition 1.4.1 La fermeture transitive du graphe G = (X, U ) est le graphe

τ (G) = (X,

τ (U )) (x, y ) τ (U ) si et seulement si il existe un chemin de

x vers y dans G.

Si G est fortement connexe, sa fermeture transitive est le graphe complet.

connexe, sa fermeture transitive est le graphe complet. Figure 1.10: Exemple de graphe avec sa fermeture
connexe, sa fermeture transitive est le graphe complet. Figure 1.10: Exemple de graphe avec sa fermeture

Figure 1.10: Exemple de graphe avec sa fermeture transitive

Définition 1.4.2 Deux graphes G 1 et G 2 sont dits τ -équivalents si et seulement si ils ont même fermeture transitive.

On vérifie facilement que la relation de τ -équivalence est une relation d’équivalence.

14

CHAPITRE 1. ELÉMENTS DE THÉORIE DES GRAPHES

Définition 1.4.3 On dit que G = (X, U ) est τ -minimal si et seulement si u U , τ (G) = τ (G \ {u}).

Pour un graphe donné, il n’existe pas a priori de graphe τ -minimal unique.

Théorème 1.4.1 Si G est un graphe sans circuits, alors le graphe τ -minimal est unique.

1.4.3 Graphes fortement connexes

Lorsque qu’un graphe G est fortement connexe, la matrice d’adjacence de sa fer- meture transitive ne comporte que des 1, en dehors de la diagonale.

Théorème 1.4.2 G = ( X, U ) fortement connexe ⇐⇒ ∀ A X , A

Γ + (A) = A. Démonstration

= 0 et A = X ,

Chapitre 2

Ensembles particuliers dans les graphes

2.1 Nombre de stabilité

Définition 2.1.1 Soit G = (X, U ) un graphe non orienté. Un sous-ensemble S X est dit stable si et seulement si 2 sommets distincts de S ne sont jamais reliés (adjacents), c’est-à-dire si x S , Γ(x) S = 0.

c’est-à-dire si ∀ x ∈ S , Γ( x ) S = 0 . Figure 2.1:

Figure 2.1: Exemple de stables dans un graphe

Soit S la famille des ensembles stables de G. On a évidemment 0 ∈ S et pour tout S ∈ S avec A S , alors A ∈ S .

Définition 2.1.2 S 0 est un stable maximal si et seulement si S 1 ∈ S et S 1 alors S 0 S 1 .

=

S 0

Définition 2.1.3 On appelle nombre de stabilité de G = (X, U ), l’entier défini par α(G) = max S S |S |.

Un ensemble stable S X qui vérifie |S | = α(G) sera dit stable maximum. Il n’y a pas forcément unicité

15

16

CHAPITRE 2. ENSEMBLES PARTICULIERS DANS LES GRAPHES

Les ensembles stables trouvent leur application dans le problème des huit reines. Il s’agit de placer huit reines sur un échiquier sans qu’elles puissent être deux à deux en prise (même rangée, même colonne ou même diagonale). On construit alors un graphe à 64 sommets correspondant aux 64 cases de l’échiquier et on relie les cases qui se trouvent sur la même ligne, la même colonne ou la même diag- onale. Le problème des huit reines se ramène alors à l’existence d’un stable à 8 sommets. Celui-ci n’est d’ailleurs pas unique. Il n’existe pas d’algorithme polynomial pour résoudre les problèmes de con- struction d’ensemble stable (le nombre d’étapes ne peut pas être borné par O (n p )).

2.2 Nombre d’absorption

Définition 2.2.1 Soit un graphe G = (X, U ). Un ensemble A X est absorbant

si et seulement si x / A, Γ + (x) A

= 0.

On appelle A la famille des ensembles absorbants de A. Si A ∈ A et A A , alors A ∈ A . Symétriquement à la notion de stable maximal et maximum, on peut définir un absorbant minimal et un absorbant minimum (non unique). Le nombre d’absorption, noté β (G) est bien sûr le cardinal du plus petit absorbant.

2.3 Noyau - fonctions de Grundy

2.3.1

Définitions

Définition 2.3.1 Soit un graphe G = (X, U ). Un ensemble A X est un noyau si il est à la fois stable et absorbant.

Il existe des graphes sans noyaux, ainsi que des graphes à plusieurs noyaux.

Théorème 2.3.1 Un noyau est un stable maximal et un absorbant minimal.

Théorème 2.3.2 Un graphe simple, sans circuits, admet un noyau. Ce noyau est unique.

Définition 2.3.2 Soit un graphe G = (X, U ) un graphe simple sans boucles. Une fonction f : X −→ N est une fonction de Grundy si et seulement si pour tout sommet x, g (x) est le plus petit entier positif ou nul qui n’apparaît pas dans {g (y ), y Γ + (x)}.

Là encore, il n’y a pas forcément existence ou unicité. Si G admet une fonction de Grundy, il admet un noyau dont les sommets sont les 0 de la fonction de Grundy.

2.4.

NOMBRE CHROMATIQUE

17

x 1 x 2 x 3 x 4 x 5 x 6 x 7 x
x 1
x 2
x 3
x 4
x 5
x 6
x 7
x 8
x
0
0
1
0
0
0
0
0
1
x
1
0
1
1
1
1
1
1
2
x
0
0
0
1
1
0
0
0
3
x
0
0
0
0
1
0
1
0
4
x
0
0
0
0
0
0
1
1
5
x
1
0
1
0
0
0
0
0
6
x
0
0
0
0
0
0
0
1
7
x
0
0
0
0
0
0
0
0
8

2.3.2 Exemple de calcul de fonction de Grundy

On cherche à calculer la fonction de Grundy du graphe défini par la matrice d’adjacence suivante :

On commence par choisir g (x 8 ), x 8 est le seul sommet qui n’ait pas de suc- cesseur. il n’y a donc pas de contraintes sur g (x 8 ). On lui donne alors la valeur 0. De la même façon, x 7 a un seul successeur, x 8 . Pour construire la fonction de Grundy, on construit le tableau suivant qui contient les successeurs de chacun des sommets et la valeur de la fonction de Grundy pour ceux-ci et la valeur de la fonction de Grundy de chacun des sommets. Dès que la valeur de la fonction de Grundy est définie pour tous les successeurs d’un sommet, on peut définir celle du sommet considéré.

g (Γ(x i )) g (x i ) x 1 0 1 3 x 3
g (Γ(x i ))
g (x i )
x
1
0
1
3
x
3
2
x
1
3
x
0
4
x
0, 1, 2
0, 2
2, 1
0, 1
1, 0
2
5
x
2
6
x
Γ(x i )
x
x 1 , x 3 , x 4 , x 5 , x 6 , x 7 , x 8
x 4 , x 5
x 5 , x 7
x 7 , x 8
x 4 , x 3
x 8
0
1
7
x
0
8

Table 2.1: Calcul de la fonction de Grundy

2.4 Nombre chromatique

Définition 2.4.1 Une k-coloration des sommets est une partition en k stables (S 1 , de l’ensemble X des sommets (à un stable correspond une couleur).

, S k )

Définition 2.4.2 Le nombre chromatique de G = (X, U ) est le plus petit nombre

18

CHAPITRE 2. ENSEMBLES PARTICULIERS DANS LES GRAPHES

de couleurs nécessaire pour colorier G de sorte que 2 sommets adjacents soient de couleur différente. On le note χ (G).

Le problème le plus courant est celui dit des 4 couleurs: peut-on colorier toute carte de géographie avec 4 couleurs seulement de sorte que deux régions de la carte qui ont une frontière commune soient de couleur différente ? chaque région est représentée par un sommet, les arcs rendant compte de l’existence d’une fron- tière commune. On a alors un graphe planaire (les arêtes ne se coupent pas), et la réponse est oui.

Théorème 2.4.1 G planaire =χ (G) 4

Chapitre 3

Familles de graphes possédant des propriétés particulières

3.1 Graphes planaires

Définition 3.1.1 Un graphe est planaire s’il est possible de le représenter sur un plan sans que deux de ses arcs ne se rencontrent en dehors de leurs extrémités.

ses arcs ne se rencontrent en dehors de leurs extrémités. Figure 3.1: Exemple de graphes planaires
ses arcs ne se rencontrent en dehors de leurs extrémités. Figure 3.1: Exemple de graphes planaires

Figure 3.1: Exemple de graphes planaires

Définition 3.1.2 On appelle face toute région du plan limitée par des arêtes telle que deux points arbitraires peuvent être reliés par un trait continu ne rencontrant ni sommet ni arêtes. On appelle alors frontière de la face l’ensemble des arêtes incidentes à celle-ci. Deux faces sont adjacentes si et seulement si elles ont une arête commune.

Il y a toujours une face illimitée

Théorème 3.1.1 (formule d’Euler) G planaire connexe possédant n sommets, m arcs et f faces. Alors f = m n + 2.

On rappelle qu’un graphe planaire est 4-colorable.

19

20CHAPITRE 3. FAMILLES DE GRAPHES POSSÉDANT DES PROPRIÉTÉS PARTICULIÈRES

3.2 Graphes hamiltoniens et eulériens

3.2.1 Graphes hamiltoniens

Définition 3.2.1 Soit G = (X, U ) un graphe simple, connexe, sans boucles à n sommets. On appelle cycle hamiltonien de G un cycle élémentaire à n sommets (passant une et une seule fois par chaque sommet).

Définition 3.2.2 Un graphe qui admet au moins un cycle hamiltonien est appelé graphe hamiltonien.

Le graphe complet est hamiltonien.

Théorème 3.2.1 Si G est hamiltonien, G est 2-connexe.

La réciproque est fausse. Il est algorithmiquement difficile de déterminer un cycle hamiltonien dans un graphe. On dispose par contre d’un certain nombre de conditions suffisantes.

Théorème 3.2.2 (Dirac) Soit G = (X, U ) un graphe à n sommets. Si x X d(x) n , alors G admet un cycle hamiltonien.

2

C’est un cas particulier du théorème suivant.

Théorème 3.2.3 (Ore) Soit G = (X, U ) un graphe à n sommets. Si x, y tels que (x, y ) / U , d(x) + d(y ) n , alors G est hamiltonien.

X

Ce sont deux corollaires d’un théorème plus général, le théorème de Bondy- Chùatal.

Définition 3.2.3 Soit G un graphe à n sommets, k n un entier, on appelle k- fermeture de G le plus petit graphe H à n sommets contenant G tel que si x et y ne sont pas adjacents dans H , d H (x) + d H (y ) < k .

On obtient cette k-fermeture en reliant récursivement les paires de sommets dont la somme des degrés est supérieure ou égale à k .

Théorème 3.2.4 (Bondy-Chùatal) Soit G = (X, U ) un graphe à n sommets, G la n-fermeture de G. G est hamiltonien si et seulement si G est hamiltonien.

On peut définir la notion de chaîne hamiltonienne dans un graphe non-orienté.

3.2.

GRAPHES HAMILTONIENS ET EULÉRIENS

21

3.2.2 Graphes eulériens

Définition 3.2.4 On appelle cycle (resp. chaîne) eulérien un cycle (resp. chaîne) qui passe par toutes les arêtes une et une seule fois.

Définition 3.2.5 On appelle graphe eulérien, un graphe qui admet au moins un cycle eulérien.

Ce cycle n’est pas forcément élémentaire. L’exemple courant est celui dit des «7 ponts du Königsberg» représenté figure 3.2. La question est de déterminer si un piéton peut faire une promenade en traversant une et une seule fois tous les ponts. Ce problème revient à déterminer si il existe un cycle eulérien dans le graphe dont les sommets sont les îlots et les arcs les ponts.

a b c d Figure 3.2: Le problème des 7 ponts du Königsberg
a
b
c
d
Figure 3.2: Le problème des 7 ponts du Königsberg

Théorème 3.2.5 Un multigraphe connexe G admet un cycle eulérien si et seule- ment si ses sommets sont de degré pair.

On peut donc répondre par la négative au problème des 7 ponts du Königsberg.

22CHAPITRE 3. FAMILLES DE GRAPHES POSSÉDANT DES PROPRIÉTÉS PARTICULIÈRES

Chapitre 4

Algorithmique des graphes

L’objectif de ce chapitre est d’introduire l’algorithmique des graphes, c’est-à-dire les principaux algorithmes que l’on utilise avec es graphes en pratique : le plus

court chemin, les flots dans les graphes

lèmes de représentation des graphes en mémoire.

On commencera par aborder les prob-

4.1 Représentation en mémoire

4.1.1 Matrice d’adjacence

, x n . Ces sommets

vont nous servir à composer une matrice booléenne carrée A = (a ij ) 1 i,j n définie

par

Soit un graphe G = (X, U ), composé de n sommets x 1 ,

1 si (x i , x j ) ∈ U ∀ 1 ≤ i, j
1 si
(x i , x j )
∈ U
∀ 1 ≤ i, j ≤ n, a ij =
0
sinon
B
A
E
D C
F

(4.1)

Figure 4.1: Exemple de graphe

23

24

CHAPITRE 4. ALGORITHMIQUE DES GRAPHES

Dans le graphe de la figure 4.1, la matrice d’adjacence s’écrit donc ainsi :

A =

0

0

0

0

0

0

1

0

1

0

0

0

0

1

0

0

0

0

1

0

1

0

1

1

1

0

0

1

0

0

0

0

0

0

1

0

(4.2)

Si le graphe considéré est non-orienté (ou symétrique), on se contentera d’une matrice triangulaire supérieure. On remarque par ailleurs que la complexité spa- tiale de cette représentation est en O (n 2 ).

4.1.2 Tableaux d’arcs

Une alternative à cette représentation lorsque le nombre de sommets est impor- tant par rapport au nombre d’arcs consiste à créer deux vecteurs contenant chacun l’origine et l’extrémité des arcs. Ainsi la matrice précédente se réécrirait ainsi :

T A =

A

B

A

D E C

A B C

C

B D F

D E E

D F

F

D

(4.3)

La complexité spatiale est cette fois en O (m ) m est le nombre d’arcs. A moins de choisir une convention d’ordre, cette représentation n’est pas unique

4.1.3 Tableaux de successeurs

Il s’agit cette fois de construire deux tableaux :

Le premier tableau contient successivement les successeurs du premier som- met, du second sommet

Le second tableau contient la place dans la liste ci-dessus du premier suc- cesseur de chaque sommet.

T 1 = B D E C

B D F

D F

D

(4.4)

T 2 = 1

4

5

7

8

10

(4.5)

La complexité spatiale de cette représentation est alors de O (n + m ).

4.1.4 Listes chaînées

Les représentations précédentes sont faciles à mettre en œuvre mais sont mal adap- tées aux transformations élémentaires des graphes comme ajouter ou supprimer des sommets et des arcs. On utilise souvent des listes chaînées de pointeurs associées à chaque sommet.

4.2.

PARCOURS DE GRAPHES

25

4.2 Parcours de graphes

La plupart des algortithmes de graphes utilisent des notions de parcours de graphes c’est-à-dire qu’ils vont effectuer un traitement sur l’ensemble des sommets ou des arcs d’un graphe. Evidemment dans un certain nombre de cas, l’ordre de parcours des sommets ou des arcs n’est pas innocent sur le résultat. Les algorithmes de parcours dépendront aussi naturellement de la structure de données adoptée. Dans les paragraphes qui suivent, nous nous intéresserons d’abord au parcours des arbres que nous généraliserons ensuite aux algorithmes de parcours d’abres.

4.2.1 Parcours des arbres

Il existe deux idées principales pour le parcours des sommets d’un arbre : le par- cours en largeur d’abord (breadth-first)et le parcours en profondeur d’abord (depth- first). Dans le cas du parcours en largeur d’abord, le principe est de visiter les som- mets dans l’ordre de gauche à droite puis de haut en bas comme le montre la fig- ure 4.2 ; les sommets sont visités dans l’ordre suivant : A, B, C, D, E, F, G, H,

I.

A B C D E F G H I Figure 4.2: Parcours en largeur d’abord
A
B
C
D
E
F
G
H
I
Figure 4.2: Parcours en largeur d’abord
Inversement, dans le parcours en profondeur d’abord, on visite la racine, puis son premier fils,
Inversement, dans le parcours en profondeur d’abord, on visite la racine, puis
son premier fils, puis le fils de ce fils etc. La visite est terminée lorsqu’on a visité
tous les successeurs d’un sommet. La figure 4.3 illustre ce mécanisme.
A
B
C
D
E
F
G
H
I

Figure 4.3: Parcours en largeur d’abord

26

CHAPITRE 4. ALGORITHMIQUE DES GRAPHES

4.3 Algorithmes de plus court chemin

Les algorithmes de plus court chemin ont un objectif assez explicite : étant don- née une fonction de coût (une distance pour commencer) associé à chaque arc, déterminer le plus court chemin entre deux sommets. Etant donné un graphe

G = (X, U ), on associe à chaque arc (x, y ) U une fonction de coût c(x, y )

à valeurs réelles. Le problème de plus court chemin entre deux sommets a et b de

X consiste donc à déterminer le chemin C =

qui minimise la somme des c(x i , x i+1 ) pour 0 i < k . Il existe trois algorithmes à vocation assez générale, même si ce domaine fait toujours l’objet de recherches actives dans la communauté informatique. En ef- fet, la complexité des algorithmes les rend peu utilisables si l’on s’intéresse à des calculs de plus courts chemins prenant en compte l’ensemble des routes françaises

pour déterminer le meilleur chemin entre Landivisiau et Aubagne !

, x k ) avec x 1 = a et x k = b

(x 1 ,

4.3.1 Algorithme de Ford-Bellman

L’algorithme, qui calcule l’ensemble des plus courts chemins d’un sommet s au reste du graphe, comprend une étape d’initialisation et une boucle. La première étape d’initialisation établit un ensemble S = {s } des sommets déjà traités, une fonction de distance π et un ensemble A du meilleur prédécesseur pour venir de l’origine.

S = {s }, π (s ) = 0, A(s ) = ǫ TantQue x / S avec Γ 1 (x) S Faire π (x) = min y Γ 1 (x ) [π (x) + c(x, y )] Soit y˜ un sommet tel que π (x) = π y ) + cy, x ) A(x) = y˜ et S = S ∪ {x} finTantQue

3 -1 2 2 2 6 2 1 4 7 -2 5 3 2 Figure
3
-1
2
2
2
6
2
1
4
7
-2
5
3
2
Figure 4.4: Exemple de graphe
3
3
4
5
2

Nous allons calculer le plus court chemin entre 1 et 7. Le tableau 4.1 représente les différentes itérations de l’algorithme de Ford-Bellman.

4.3.

ALGORITHMES DE PLUS COURT CHEMIN

27

ǫ

1

2

2

3

2,5

5

1

2

3

4

5

6

7

0

0

3

0

3

1

0

3

1

5

0

3

1

5

3

0

3

1

5

3

5

0

3

1

5

3

5

7

Table 4.1: Tableau des itérations de l’algorithme

Une fois l’algorithme arrivé à son terme, on retrouve le chemin optimal dans

A en partant de la fin.

même comme prédécesseur 3 de longueur 7.

Le sommet 7 a pour meilleur prédécesseur 5, qui a lui-

Le chemin optimal est donc le chemin 1-2-3-5-7

4.3.2 Algorithme de Moore ou de Dijkstra

L’algorithme suivant dû à Moore (1957), a été redémontré par Dijkstra en 1959. Il est basé sur une hypothèse restrictive par rapport à l’algorithme précédent : la fonction de coût est positive.

π (s )

P = {s },

TantQue T = 0 Faire

= 0, x = s, π (s, x) = c(s, x) si l’arc (s, x) existe et + sinon

T = X − {s }, A(s ) = ǫ

Soit x 0 T tel que π (x 0 ) = min x T π (x)

T

=

T − {x 0 }

P

= P ∪ {x 0 }

PourTout x T Faire

Si π (x) >

π (x 0 ) + c(x 0 , x) Alors

π (x) =