You are on page 1of 59

Miage

Th eorie des graphes et algorithmes


Jo elle Cohen 8 septembre 2006

Introduction
Ce r esum e de cours ne pr etend pas etre exhaustif ni se substituer en aucune mani` ere aux ouvrages publi es sur ce sujet. Ce document na dautre but que de fournir aux etudiants un support de cours. Apr` es une pr esentation des notions de base sur les graphes seront abord es quelques probl` emes et des algorithmes les r esolvant : parcours de graphe arbre couvrant minimum plus court chemin d etection de circuit dans un graphe orient e , d etermination des composantes fortement connexes dun graphe orient e , tri topologique ordonnancement ots (en cours) couplage (` a venir) remarque : dans les algorithmes qui seront d ecrits, le terme FIN signie une sortie du programme en cours dex ecution.

Table des mati` eres


1 G en eralit es sur les graphes 1.1 D enitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 1.1.2 1.1.3 1.2 1.3 1.4 graphe non orient e (graph) . . . . . . . . . . . . . . . . . . . . . . . . . . graphe non orient e simple . . . . . . . . . . . . . . . . . . . . . . . . . . graphe orient e ni (digraph) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 6 6 7 8 8 8

Isomorphisme de graphes

Sous-graphes et graphes partiels . . . . . . . . . . . . . . . . . . . . . . . . . . . Degr es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.1 1.4.2 degr e dans un graphe non orient e . . . . . . . . . . . . . . . . . . . . . . degr e dans un graphe orient e

. . . . . . . . . . . . . . . . . . . . . . . . 10

1.5

Cha nes - Cycles - Connexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5.1 1.5.2 1.5.3 D enitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Composantes connexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Distance dans un graphe non orient e . . . . . . . . . . . . . . . . . . . . 11 D enitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 graphe orient e fortement connexe . . . . . . . . . . . . . . . . . . . . . . 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.6

Chemins - Circuits - Forte Connexit e . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6.1 1.6.2

1.7 1.8

Fermeture transitive dun graphe . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Repr esentation des graphes 1.8.1 1.8.2 1.8.3 Matrice dadjacence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Un premier algorithme : algorithme de Roy-Warshall . . . . . . . . . . . 14 Liste dadjacence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Les 7 ponts de K onigsberg . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Coloration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Graphe biparti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Graphe planaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.9

Quelques notions particuli` eres . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.9.1 1.9.2 1.9.3 1.9.4

2 Arbres et Parcours de graphe 2.1 2.1.1 2.1.2 2.2 2.3

19

D enitions - Caract erisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Arbre en th eorie des graphes . . . . . . . . . . . . . . . . . . . . . . . . . 19 Arborescence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Propri etes et caract erisations des arbres . . . . . . . . . . . . . . . . . . . . . . . 20 Arbre couvrant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.3.1 2.3.2 D enition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Propri et es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Parcours en profondeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Parcours en largeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Algorithme de Moore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 . . . . . . . . . . . . . . . . . 28

2.4

Parcours de graphes 2.4.1 2.4.2 2.4.3

2.5 2.6 2.7

Points darticulation dans un graphe non orient e

Isthme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 k -connexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 32

3 Probl` eme de lArbre Couvrant Minimum 3.1 3.1.1 3.1.2 3.1.3 3.2 3.2.1 3.2.2 3.2.3

Algorithme de Kruskal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Preuve de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Complexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Preuve de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Complexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 36

Algorithme de Prim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4 Probl` eme du plus court chemin 4.1 4.1.1 4.1.2 4.1.3 4.2 4.2.1 4.2.2 4.2.3 4.3 4.3.1

Algorithme de Dijkstra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Complexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Complexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Algorithme de Floyd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

Algorithme de Bellman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4.3.2 4.3.3 4.4 4.4.1 4.4.2 4.4.3

Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Complexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Complexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 45

Algorithme PAPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

5 Graphes orient es 5.1 5.2

Composantes fortement connexes . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Graphe sans circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.2.1 5.2.2 Algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Tri topologique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

5.3

Orientation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 52

6 Ordonnancement 6.1 6.2

Rang dun sommet dans un graphe orient e . . . . . . . . . . . . . . . . . . . . . 54 Dates au plus t ot et au plus tard . . . . . . . . . . . . . . . . . . . . . . . . . . 54 6.2.1 6.2.2 6.2.3 Dates au plus t ot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Dates au plus tard et marge totale . . . . . . . . . . . . . . . . . . . . . 56 marge libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

6.3

Algorithme de Bellman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

Chapitre 1 G en eralit es sur les graphes


1.1
1.1.1

D enitions
graphe non orient e (graph)

D enition 1.1 Un graphe non orient e G est un triplet (X, E, ) o` u X est un ensemble non vide de sommets (vertices) E est un ensemble dar etes (edges) est une fonction dincidence qui a ` chaque ar ete de E associe une paire d el ements de X non n ecessairement distincts. exemple : Soit G1 d eni par X = {a, b, c, d, f, g }, E = {e1 , e2 , e3 , e4 , e5 , e6 , e7 , e8 } et (e1 ) = {a, b}, (e2 ) = {b, c}, (e3 ) = {c}, (e4 ) = {c, d}, (e5 ) = {b, d}, (e6 ) = {d, g }, (e7 ) = {b, g }, (e8 ) = {b, c}.
a e1 b e2 e8 e4 e7 f d e6 g c e3

e5

Fig. 1.1 le graphe non orient e G1 On dit les sommets a et b sont adjacents, que lar ete e4 est incidente au sommet c et au sommet d. Les ar etes e2 et e8 sont parall` eles, lar ete e3 est une boucle, le sommet f est isol e et le sommet a est pendant. exemple : Soit H1 d eni par Y = {u, v, w, x, y, z }, F = {a, b, c, d, e, f, g, h} et 5

(a) = {x, y }, (b) = {y, w}, (c) = {u, w} (d) = {u, y }, (e) = {u, z }, (f ) = {z }, (g ) = {z, y }, (h) = {z, y }.
v u c e f z h y g d b x a w

Fig. 1.2 le graphe non orient e H1 Le cardinal de X , lorsque X est ni, est appel e lordre du graphe. Par la suite, on ne consid` erera que des graphes nis cest-` a-dire X et E seront nis.

1.1.2

graphe non orient e simple

Un graphe non orient e est simple sil na ni ar etes parall` eles ni boucle. On identie alors une ar ete e a ` (e), son image par . Propri et e 1.1 Si n est lordre dun graphe non orient e simple G et m est son nombre dar etes 2 alors m Cn . En eet, est alors une injection de X dans lensemble des parties a ` deux el ements de X . Or 2 il y a Cn paires d el ements de X .

1.1.3

graphe orient e ni (digraph)

D enition 1.2 Un graphe orient e ni G est un triplet (X, E, ) o` u X est un ensemble ni non vide de sommets (vertices) E est un ensemble ni darcs est une fonction dincidence qui a ` chaque arc e de E associe un couple (x, y ) d el ements de X non n ecessairement distincts. x est lorigine de e et y est le but de e. exemple : Soit G2 (voir gure 1.3) le graphe orient e d eni par X = {a, b, c}, E = {e1 , e2 , e3 , e4 , e5 , e6 } et (e1 ) = (a, b), (e2 ) = (b, c), (e3 ) = (a, b), (e4 ) = (c, b), (e5 ) = (c, c), (e6 ) = (a, c). Le sommet a est lorigine de e1 et le sommet b est le but de e1 . Les arcs e1 et e3 sont parall` eles, larc e5 est une boucle mais les arcs e2 et e4 ne sont pas parall` eles.

a e6 e1 e3 e4 c e 5

e 2

Fig. 1.3 graphe orient e G2

1.2

Isomorphisme de graphes

D enition 1.3 Soient G = (X, E, ) et H = (Y, F, ) deux graphes . G1 et H1 sont isomorphes sil existe deux bijections : X Y , : E F telles que pour tout e E , (e) = xy ( (e)) = (x)(y ) Les accolades - graphe non orient e - ou parenth` eses - graphe orient e - n ecessaires dans les fonctions dincidence ont et e volontairement omises puisque la d enition disomorphisme est la m eme pour les deux types de graphes . exemple : G1 et H1 sont isomorphes. En eet, les bijections suivantes et v erient l equivalence ci-dessus. a b c d f g x y z u v w e1 e2 e3 e4 e5 e6 e7 e8 a g f e d c b h

Par la suite on consid erera souvent des graphes a ` un isomorphisme pr` es : on parle alors de graphes non etiquet es. exemple : les deux graphes suivants ne sont pas isomorphes.

Fig. 1.4 deux graphes non isomorphes

remarque : comme le montre lexemple pr ec edent, deux graphes isomorphes ont le m eme ordre et le m eme nombre dar etes mais le contraire nest pas vrai. exercice : Trouver les 11 graphes simples non isomorphes dordre 4. D enition 1.4 un graphe est complet sil est simple et si deux sommets quelconques sont n(n 1) adjacents. On a alors exactement ar etes si lordre du graphe est n. 2 exemple : le graphe complet dordre 5 est not e K5 .

Fig. 1.5 le graphe complet dordre 5

1.3

Sous-graphes et graphes partiels

D enition 1.5 Soit G(X, E, ) un graphe et Y X . Le sous-graphe GY de G engendr e par Y est le graphe dont lensemble des sommets est Y lensemble des ar etes (arcs) sont les ar etes de G joignant 2 sommets de Y la fonction dincidence Y est la restriction de aux ar etes (arcs) de GY . D enition 1.6 Soit G(X, E, ) un graphe et F E . Le graphe partiel GF de G engendr e par F est le graphe dont lensemble des sommets est X lensemble des ar etes (arcs) est F la fonction dincidence F est la restriction de a ` F. exemple : cf gure 1.6

1.4
1.4.1

Degr es
degr e dans un graphe non orient e

D enition 1.7 le degr e d(x) dun sommet x de G est le nombre dar etes incidentes a ` x dans G (chaque boucle incidente a ` x compte deux fois).

c G

d sous-graphe G-e

d graphe partiel

Fig. 1.6 sous-graphe et graphe partiel Propri et e 1.2 dans un graphe non orient e,
xX

d(x) = 2m o` u m est le nombre dar etes.

ete est compt ee deux fois dans d(x) si cest un En eet, dans la somme xX d(x), chaque ar boucle sur x et et une fois dans d(x) plus une fois dans d(y ) si elle est incidente a ` x et y . cons equence : dans un graphe non orient e le nombre de sommets de degr e impair est pair. exemple :
2 5 5

Fig. 1.7 Degr es

D enition 1.8 on dit quun graphe non orient e est k r egulier si tous ses sommets sont de degr e k. Propri et e 1.3 soient le plus petit degr e et le plus grand degr e dun graphe non orient eG dordre n a ` m ar etes. On a n 2m n. D enition 1.9 On dit quune suite dentiers naturels k1 , , kn est graphique sil existe un graphe non orient e simple dordre n tel que ses sommets x1 , , xn ont respectivement les degr es k1 , , kn . Th eor` eme 1.4 (Havel-Hakimi) : une suite d ecroissante dentiers naturels k 1 kn avec n 2 et k1 1 est graphique ssi la suite k2 1, k3 1, , kk1 +1 1, kk1 +2 , kn est graphique. (on a supprim e k1 de la suite puis on a retranch e 1 aux k1 premiers termes) Ce th eor` eme fournit un algorithme pour d eterminer si une suite est graphique ou non.

1.4.2

degr e dans un graphe orient e

D enition 1.10 dans un graphe orient e on distingue le degr e entrant d (x) egal au nombre darcs de but x, le degr e sortant d+ (x) egal au nombre darcs dorigine x et le degr e d (x) egal a ` d (x) + d + (x). exemple :
(2,2) (1,2) (1,0)

(0,2)

Les degrs sont donns par les couples (degr entrant, degr sortant)

(2,1)

(1,2)

(1,1)

Fig. 1.8 Degr es entrants et degr es sortants On retrouve la propri et e 1.2 sous la forme suivante Propri et e 1.5 dans un graphe orient e, darcs.
xX

d (x) =

xX

d+ (x) = m o` u m est le nombre

1.5
1.5.1

Cha nes - Cycles - Connexit e


D enitions

D enition 1.11 Soit G = (X, E, ) un graphe non orient e. une cha ne est une suite x0 e1 x2 e2 x3 ek xk ave (ei ) = xi1 xi pour i = 1 k . On dit que cette cha ne est de longueur k et relie x0 a ` xk . une cha ne est simple si elle ne contient pas deux fois la m eme ar ete. un cycle est une cha ne simple ferm ee i.e. x0 = xk . une cha ne est el ementaire si elle ne contient pas deux fois le m eme sommet (sauf aux extr emit es si cest un cycle el ementaire). une cha ne est eul erienne si elle est simple et contient toutes les ar etes. une cha ne est hamiltonienne si elle est el ementaire et contient tous les sommets. exemple : dans le graphe G1 , la cha ne be2 ce4 de5 be8 ce4 de6 g nest pas simple. La cha ne ge7 be2 ce4 de6 g est un cycle. La cha ne ge7 be2 ce8 be5 d est simple mais elle nest pas el ementaire. G1 na pas de cha ne hamiltonienne puisque le sommet f est isol e. G1 na pas de cha ne eul erienne. remarque : une cha ne el ementaire est simple mais le contraire nest pas n ecessairement vrai. Propri et e 1.6 si x et y sont reli ees par une cha ne alors il existe une cha ne el ementaire qui relie x a ` y. exemple : dans le graphe de la gure suivante, la cha ne abde est el ementaire (les ar etes sont volontairement omises puisquen labsence dar etes parall` eles il ny a pas dambig uit e).

1.5.2

Composantes connexes

D enition 1.12 La relation etre reli es par une cha ne est une relation d equivalence sur lensemble des sommets de G. Les sous-graphes engendr es par cette relation sont les composantes connexes de G (ce sont les sous-graphes maximaux par rapport a ` cette relation). La composante connexe CC (x) du sommet x est alors lensemble des sommets de G reli es a ` x par une cha ne sachant que x est reli ea ` lui- m eme par une cha ne de longueur nulle. On dit que G est un graphe connexe sil na quune composante connexe i.e. si deux sommets quelconques sont reli es par une cha ne. exemple : le graphe G1 a deux composantes connexes. Propri et e 1.7 Soit G un graphe non orient e dordre n, a ` m ar etes et a ` p composantes connexes. On a lin egalit e suivante : m n + p 0.

1.5.3

Distance dans un graphe non orient e

D enition 1.13 On d enit la distance d(x, y ) entre deux sommets x, y dun graphe non orient e G par : d(x, y ) = 0 si x = y . d(x, y ) est la longueur dune plus courte cha ne reliant x a ` y sil existe une telle cha ne d(x, y ) = sinon Propri et e 1.8 Pour tous sommets x, y, z d(x, x) = 0 d(x, y ) = d(y, x) d(x, y ) d(x, z ) + d(y, z ) Cest une distance au sens m etrique du terme. D enition 1.14 la diam` etre dun graphe non orient e est le maximum des distances entre deux sommets de ce graphe. remarque : dans un graphe non connexe, le diam` etre est inni. exemple : le diam` etre du graphe de la gure 1.9 est 2.

Fig. 1.9 Un graphe de diam` etre 2

1.6
1.6.1

Chemins - Circuits - Forte Connexit e


D enitions

Les d enitions sont les m emes que pour les graphes non orient es en rempla cant cha ne par chemin et cycle par circuit. exemple : dans le graphe G2 , le chemin ce4 be2 c est un circuit. Le chemin ae1 be2 c est hamiltonien mais G2 na pas de chemin eul erien.

1.6.2

graphe orient e fortement connexe

Pour un graphe orient e G, la relation etre reli es par un chemin nest pas une relation d equivalence puisquelle nest pas n ecessairement sym etrique. Les composantes fortement connexes de G sont les sous-graphes maximaux pour cette relation etre reli es par un chemin et on a la notion suivante : D enition 1.15 un graphe orient e G est fortement connexe si pour tout couple de sommets (x, y ), il existe un chemin de x a ` y. exemple : G2 nest clairement pas fortement connexe. Ses composantes fortement connexes de G2 sont {a}, {b, c}. exemple : le graphe de la gure 1.10 est fortement connexe.
a

Fig. 1.10 un graphe fortement connexe

1.7

Fermeture transitive dun graphe

D enition 1.16 La fermeture (ou cl oture) transitive dun graphe simple G est le graphe ayant les m emes sommets que G et dont les ar etes (arcs) relient x a ` y sil existe dans G une cha ne (chemin) de x a ` y. exemple : cf gure 1.11

fermeture transirive de G

fermeture transirive de G

Fig. 1.11 fermeture transitive

1.8

Repr esentation des graphes

On ne parlera que de deux fa cons de repr esenter les graphes selon que lon consid` ere ce graphe comme ensemble dar etes ou comme ensemble de sommets.

1.8.1

Matrice dadjacence

Soit G un graphe dordre n dont lensemble des sommets est {x1 , , xn }. La matrice dadjacence Ma de G est la matrice carr ee n n d enie comme suit : mij est le nombre dar etes (arcs) de xi a ` xj . remarque : si G est non orient e alors Ma est sym etrique si G est simple, Ma est une matrice de bool eens Une consultation compl` ete de Ma prend un temps (n2 ). Si G a peu dar etes (arcs) alors cette repr esentation est co uteuse en m emoire. exemple : 0 1 0 0 0 0 exemple : 0 0 0 le graphe G1 est repr esent e par la matrice suivante 1 0 0 0 0 0 2 1 0 1 2 1 1 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 le graphe G2 est repr esent e par la matrice suivante 2 1 0 1 1 1

1.8.2

Un premier algorithme : algorithme de Roy-Warshall

Cet algorithme utilise la matrice dadjacence pour calculer la matrice dadjacence de la fermeture transitive dun graphe simple et d eterminer ainsi la relation daccessibilit e dans le graphe initial. Lalgorithme de Roy-Warshall est bas e sur la propri et e du paragraphe 1.5.1 : ainsi pour d eterminer quels sommets sont reli es par une cha ne il sut de calculer toutes les cha nes el ementaires de longueur au plus n si n est lordre de G. dure Roy-Warshall (Ma : matrice de bool proce eens) A Ma {A sera la matrice de la fermeture transitive} pour i de 1 a ` n faire Ai,i 1 finpour pour k de 1 a ` n faire pour i de 1 a ` n faire pour j de 1 a ` n faire Ai,j Ai,j (Ai,k Ak,j ) finpour finpour finpour dure finproce Complexit e : (n3 ). Justication : a ` la k -i` eme it eration, Ai,j = 1 si et seulement si il existe une cha ne de xi a ` xj ne passant que par x1 , xk .

1.8.3

Liste dadjacence

A chaque sommet de G on associe la liste de ses successeurs dans G. Lespace m emoire occup e est alors de lordre de n + 2m (pour un graphe non orient e) exemple : le graphe G1 est repr esent e par la liste suivante a b b a c c d g c b b c d d b c g f g b d exemple : le graphe G2 est repr esent e par les listes suivantes a b b c b c c b c

Fig. 1.12 les sept ponts de K onigsberg

1.9
1.9.1

Quelques notions particuli` eres


Les 7 ponts de K onigsberg

Cet exemple historique est important puisque sa r esolution par L.Euler initia la th eorie des graphes. Le probl` eme pos e etait le suivant : peut-on visiter toute la ville en emprutant chaque pont une et une seule fois ? La r eponse est non et L.Euler montra pourquoi en etablissant le th eor` eme suivant : Th eor` eme 1.9 Soit G un graphe non orient e sans sommet isol e. G a une cha ne eul erienne si et seulement si G est connexe et G a 0 ou 2 sommets de degr e impair. Ce th eor` eme explique pourquoi on peut dessiner dun seul trait sans repasser la maison avec un toit mais quil est impossible de le faire pour la maison sans toit (cf gure 1.13).
2

3 maison avec un toit

3 maison sans toit

deux sommets de degr 3

quatre sommets de degr 3

Fig. 1.13 les deux maisons

1.9.2

Coloration

D enition 1.17 Soit G un graphe non orient e sans boucle. Une coloration de G est une application : X C de lensemble des sommets de G dans un ensemble ni C de couleurs, telle que si une ar ete e est incidente a ` x et y alors (x) = (y ).

Le nombre chromatique de G est le nombre minimal de couleurs permettant de colorier G. exercice : Cinq etudiants A, B, C, D, E doivent passer les examens suivants. A Ada, Anglais, Logique B Probabilit es, Compilation C R eseau, Logique D Anglais, Probabilit es, R eseau E Ada, Compilation Sachant que chaque etudiant ne peut se pr esenter qu` a une epreuve par jour, quel est le nombre minimal de jours n ecessaire a ` lorganisation de toutes les epreuves ? (R eponse 3)

1.9.3

Graphe biparti

Les graphes non orient es dont le nombre chromatique est 2 peuvent aussi se d enir ainsi D enition 1.18 Un graphe non orient e G est biparti sil existe une partition de lensemble de ses sommets en deux classes disjointes telle que toute ar ete a une extr emit e dans chaque classe. Ces graphes ont une caract erisation : Th eor` eme 1.10 un graphe est biparti si et seulement si il na pas de cycle impair. Preuve : Supposons que G soit biparti et ait un cycle impair x0 e1 x2 e2 x3 x2k e2k+1 x2k+1 avec x2k+1 = x0 . Soit Y Z la bipartition des sommets de G. Si x0 Y alors x1 Z et donc x2 Y . On obtient x0 , x2 , x2k Y et x1 , x2k+1 Z . Mais x2k+1 = x0 : contradiction. R eciproquement soit G sans cycle impair. On supposera dans un premier temps que G est connexe et on choisit un sommet x. On d enit alors les deux ensembles suivants : Xp = {y X | une plus courte cha ne el ementaire reliant x a ` y est de longueur paire} et Xi = {y X | une plus courte cha ne el ementaire reliant x a ` y est de longueur impaire}. On a bien Xp Xi = X puisque G est connexe. Supposons quil existe une ar ete e incidente a ` deux sommets y et z de Xp . On a alors une cha ne el ementaire reliant x a ` y de de longueur paire et une cha ne el ementaire reliant x a ` z de de longueur paire. On a donc un cycle x yez x de longueur impaire (pair + pair + 1) : contradiction. On montre de m eme quil nexiste pas dar ete incidente a ` deux sommets de Xi . Donc G est biparti. Si G nest pas connexe, on applique le raisonnement pr ec edent a ` ses composantes connexes pour obtenir une bipartition des sommets de G. D enition 1.19 G est biparti complet si G est biparti et si tout sommet dune partie est adjacent a ` tout sommet de lautre partie. On note Kp,q le graphe biparti complet dont les deux parties ont respectivement p et q sommets. exemple : le graphe de la gure 1.14 est biparti. exemple : le graphe de la gure 1.15 est biparti complet.

a e f

les deux classes sont {a,c,f,h} et {b,d,e,g}

h d

g c

Fig. 1.14 Un graphe biparti

Fig. 1.15 Le graphe biparti complet K3,4

1.9.4

Graphe planaire

D enition 1.20 un graphe est planaire sil peut etre dessin e dans le plan sans quaucune paire dar etes ne sintersecte. exemple : K5 , K3,3 ne sont pas planaires. exemple : le graphe de la gure 1.16 est planaire et sa repr esentation plane est donn ee par le graphe a ` c ot e.

Un graphe planaire

et

le graphe plan qui le reprsente

Fig. 1.16 Un graphe planaire et sa repr esentation plane On peut se poser le probl` eme de la planarit e lors de la construction dun r eseau de voies ferr ees an de minimiser le nombre daiguillages. Si G est plan alors G d elimite dans le plan un certain nombre de r egions. exemple : le graphe plan de la gure 1.16 d elimite 7 r egions.

Propri et e 1.11 Soit G un graphe plan connexe dordre n a ` m ar etes d elimitant r r egions. On a alors la formule dEuler : n m + r = 2. On peut remarquer que si G est un graphe plan a ` m ar etes d elimitant r r egions alors le fait dajouter une ar ete a ` G en conservant sa propri et e d etre plan coupe une des r r egions en deux et le nombre de r egions augmente dun comme le nombre dar etes. Comme on le verra dans le chapitre 2, un graphe non orient e connexe dordre n a au moins n 1 ar etes. Un tel graphe connexe (dordre n ayant n 1 ar etes ) est appel e un arbre et il na pas de cycle ; par cons equent sa repr esentation plane d elimite une unique r egion.

Chapitre 2 Arbres et Parcours de graphe


2.1
2.1.1

D enitions - Caract erisations


Arbre en th eorie des graphes

D enition 2.1 Un arbre est un graphe non orient e connexe sans cycle (acyclique). exemple :

Fig. 2.1 Un arbre

exercice : trouver les 6 arbres dordre 6 (non isomorphes).

2.1.2

Arborescence

D enition 2.2 Une arborescence est un graphe orient e poss edant un sommet priviligi e, la racine, tel quil existe un et un seul chemin depuis la racine a ` tout autre sommet. exemple : cf gure 2.2 Propri et e 2.1 On peut orienter les ar etes dun arbre a ` partir de nimporte quel sommet de fa con a ` obtenir une arborescence. exemple : dans la gure 2.3, larbre de la gure 2.1 devient une arborescence de racine r.

19

Fig. 2.2 Une arborescence de racine x

Fig. 2.3 Une arborescence de racine r

2.2

Propri etes et caract erisations des arbres

Th eor` eme 2.2 Soit G un graphe non orient e dordre n. Les propositions suivantes sont equivalentes : 1. G est un arbre 2. G est connexe et a n 1 ar etes 3. G est sans cycle et a n 1 ar etes 4. G est sans boucle et pour tous sommets x, y , x = y , il existe une unique cha ne reliant x a `y Preuve : elle repose en partie sur les deux lemmes et la propri et e suivants Lemme 2.1 un graphe non orient e connexe dordre n a au moins n-1 ar etes. Lemme 2.2 un graphe non orient e dordre n qui a au moins n ar etes poss` ede un cycle. Propri et e 2.3 Soit G un graphe non orient e dordre n, a ` m ar etes et p composantes connexes. G est sans cycle si et seulement si m n + p = 0. Preuve des lemmes : On remarquera tout dabord que si G est un graphe connexe dordre sup erieur ou egal a ` 2 tel quil existe un graphe partiel G e de G qui ne soit pas connexe alors G e a deux composantes connexes. En eet, soit e = {x, y }. On peut alors partitionner lensemble des sommets de G en deux parties : les sommets reli es a ` x par une cha ne ne passant pas par e et les sommets reli es a ` y par une cha ne ne passant pas par e. Ce sont les deux composantes connexes de G e. Soit G un graphe non orient e connexe dordre n. Montrons par r ecurrence sur n que G a au moins n 1 ar etes. Pour n = 1, le r esultat est clair. Soit G connexe dordre n + 1, n 1. Supposons quil existe un graphe partiel G e de G qui ne soit pas connexe. Soient alors C1 , C2 les deux composantes connexes de G e. Lordre ni de

Ci est au plus egal a ` n pour i = 1, 2 et n1 + n2 = n + 1. Par hypoth` ese de r ecurrence, Ci a donc au moins ni 1 ar etes. Donc G e a au moins (n1 1) + (n2 1) = n + 1 2 = n 1 ar etes. Do` u G a au moins n ar etes. Soit G un graphe dordre n ayant au moins n ar etes. Montrons par r ecurrence sur n que G poss` ede un cycle. Pour n = 1, cest clair (cest une boucle). Soit G dordre n + 1 ayant au moins n + 1 ar etes, n 1. Alors G a au moins une composante connexe Cj dordre nj ayant au moins nj ar etes. En eet, si toutes les composantes connexes
i=p

Ci de G dordre ni ont mi ar etes avec mi < ni alors, puisque


i=1 i=p i=p

ni = n + 1, G aurait m =

mi <
i=1 i=1

ni ar etes do` u m < n + 1 : contradiction.

Dans la composante connexe Cj dordre nj n, par hypoth` ese de r ecurrence il y a un cycle. Montrons maintenant la propri et e. Soit G un graphe sans cycle. Montrons par r ecurrence sur n que m n + p = 0. Pour n = 1, on a n ecessairement m = 0 et p = 1, l egalit e est v eri ee. Soit G dordre n + 1, n 1 sans cycle. Alors ses p composantes connexes sont sans cycle. Lordre ni de chacune dentre elles est inf erieur ou egal a ` n. Donc par hypoth` ese de r ecurrence,
i=p i=p i=p

on a mi ni + 1 = 0. Do` u mn+p =
i=1

mi
i=1

ni + p =
i=1

(mi ni ) + p = p + p = 0.

R eciproquement, on montre par r ecurrence sur n que si G a un cycle alors m n + p > 0. Pour n = 1, lexistence dun cycle implique lexistence dau moins une ar ete et comme n = p = 1, lin egalit e est v eri ee. Soit G dordre n + 1, n 1 ayant un cycle. Soient alors Cij , 1 j k , ses k composantes connexes Cj ayant un cycle. Par hypoth` ese de r ecurrence, mij nij + 1 > 0 pour 1 j k . Pour les p k autres, on a n ecessairement mij nij + 1 = 0 puisquelles sont sans cycle. Do` u
i=p

mn+p=
i=1

(mi ni + 1) > 0.

On peut maintenant montrer le th eor` eme : 1 2 et 1 3 par d enition et dapr` es les lemmes. 2 1 et 3 1 dapr` es la propri et e. Donc 2 3. 4 1 : sous lhypoth` ese 4, G est connexe et lexistence dun cycle de longueur sup erieure ou egale a ` 2 entrainant lexistence de deux cha nes simples distinctes reliant deux sommets distincts du cycle, G est sans cycle. 1 4 : lexistence provient de la connexit e et lunicit e provient de labsence de cycle. remarque : attention, les r eciproques des deux lemmes pr ec edents ne sont pas vraies. remarque : la propri et e peut s enoncer de fa con plus g en erale : m n + p 0 pour tout graphe dordre n, ayant m ar etes et p composantes connexes. On peut aussi caract eriser un arbre par le r esultat suivant :

Propri et e 2.4 G est un arbre si et seulement si G est connexe et si on lui retire une ar ete, il nest plus connexe si et seulement si G est sans cycle et si on lui rajoute une ar ete, on forme un cycle. D enition 2.3 On appelle isthme une ar ete e telle que le nombre de composantes connexes de G e est strictement sup erieur au nombre de composantes connexes de G. Toute ar ete dun arbre est un isthme et sa suppression engendre deux composantes connexes.

2.3
2.3.1

Arbre couvrant
D enition

Soit G un graphe. Un arbre couvrant de G est un graphe partiel de G qui est un arbre. exemple : dans la gure 2.4, un arbre couvrant dun graphe dordre 7 est dessin e en gras.

Fig. 2.4 Un graphe et un de ses arbres couvrants

2.3.2

Propri et es

Propri et e 2.5 tout graphe connexe a un arbre couvrant. remarque : pour un graphe connexe, il peut y avoir plusieurs arbres couvrants non isomorphes. Pour un graphe non connexe, on parle de for et couvrante. Les arbres couvrants peuvent etre caract eris es de plusieurs fa cons Propri et e 2.6 Un graphe partiel dun graphe connexe G est un arbre couvrant de G si et seulement si il est connexe et minimal avec cette propri et e relativement a ` la suppression dar etes. Propri et e 2.7 Un graphe partiel dun graphe connexe G est un arbre couvrant de G si et seulement si il est acyclique et maximal avec cette propri et e relativement ` lajout dar etes. Les deux propri et es suivantes permettent de pr eciser la cons equence dun ajout dar ete a ` un arbre couvrant.

Propri et e 2.8 Soit T un arbre couvrant de G et e une ar ete de G nappartenant pas a ` T . Le graphe partiel T + e contient un unique cycle el ementaire. Propri et e 2.9 Soit T un arbre couvrant de Get e une ar ete de G nappartenant pas a ` T . Soit e une ar ete du cycle de T + e. Alors T + e e est un arbre couvrant de G non n ecessairement isomorphe a ` T . (cf gure 2.5)

e e T T+e e T+e-e

Fig. 2.5 deux arbres couvrants T et T + e e non isomorphes

2.4
2.4.1

Parcours de graphes
Parcours en profondeur

Le principe du parcours en profondeur dun graphe (orient e ou non) est celui du parcours dun labyrinthe : on va de sommet en sommet en marquant au fur et a ` mesure les sommets visit es. La visite se poursuit le plus loin possible tant quil reste des sommets accessibles non encore marqu es. Quand on atteint un sommet z dont tous les voisins ont et e d ej` a marqu es alors on revient au sommet pr ec edant z dans la visite. Algorithme Cest une proc edure essentiellement r ecursive. Pour la mettre en oeuvre on utilisera un tableau de bool eens marque index e par les sommets du graphe. Ce tableau est initialis ea ` f alse. Un parcours de G a ` partir dun sommet x de G est r ealis e par la proc edure suivante : dure P prof (G : graphe ; x : sommet) proce marque[x] true pour chaque sommet y adjacent a ` x faire si marque[y ] = f alse alors P prof(G ; y )finsi finpour dure finproce Cette proc edure appel ee sur le sommet x marquera tous les sommets de la composante connexe de x. Pour eectuer un parcours complet du graphe il faudra relancer la proc edure a ` partir dun sommet non marqu e de G jusqu` a de que tous les sommets soient marqu es. On peut ainsi d eterminer les composantes connexes dun graphe non orient e mais attention on ne d etermine pas ainsi les composantes fortement connexes dun graphe orient e (cf gure 2.6 : on peut voir en gras les arcs emprunt es par un parcours en profondeur depuis le sommet a en suivant lordre alphab etique pour la boucle pour).

{a,d,e} et {b,c,f} sont les deux composantes fortement connexes de ce graphe pourtant le parcours en profondeur depuis a marque tous les sommets

Fig. 2.6 un parcours en profondeur dun graphe orient e On peut modier la proc edure an de num eroter les sommets dans lordre de visite. Pour cela, on initialise une variable globale num a ` 0 et on met a ` jour la variable i prof [z ] dun tableau i prof index e par les sommets de G a ` chaque nouveau sommet visit e z. dure P prof2 (x : sommet) proce marque[x] true num num + 1 i prof [x] num pour chaque sommet y adjacent a ` x faire si marque[y ] = f alse alors P prof2(y ) finpour dure finproce Arbre couvrant issu dun parcours en profondeur En eectuant le parcours en profondeur dun graphe a ` partir dun sommet, on note que lon engendre un arbre couvrant de la composante connexe de x. Il sut de recueillir lar ete reliant le sommet visit e (param` etre de lappel courant de la proc edure) au sommet adjacent que lon va visiter (param` etre du prochain appel de la proc edure). Cet arbre peut etre orienter an dobtenir une arborescence de racine x On obtiendra une for et couvrante si lon visite compl` etement le graphe. Les ar etes de G nappartenant pas a ` la for et couvrante de G issu dun parcours complet sont appel ees ar etes de retour. remarque : les ar etes de retour ont la propri et e suivante : si lar ete xy est une ar ete de retour et si x est visit e avant y (i prof [x] < i prof [y ]) alors y est un descendant de x dans larbre couvrant de parcours en profondeur. En eet, lappel r ecursif x induit un sous-graphe de la for et couvrante qui est un arbre que lon peut orienter an dobtenir une arborescence de racine x. Dans cet arbre gurent n ecessairement tous les sommets adjacents a ` x et visit es apr` es x : donc y est dans cet arbre et est un descendant de x. exemple :

en gras, larbre couvrant et en pointills les aretes de retour

Fig. 2.7 un parcours en profondeur Complexit e Soit G dordre n a ` m ar etes. On suppose que G est repr esent e par listes dadjacence. Chaque sommet est param` etre de la proc edure une et une seule fois donc il y a n appels r ecursifs. A chaque sommet visit e, tous les sommets adjacents a ` x sont test es pour le tableau marque ce qui se fait globalement en un temps proportionnel a ` m. Lalgorithme demande donc un temps O(n) pour les appels et un temps O(m) pour les marques. Donc le temps de calcul est de lordre de O(max(n, m)).

2.4.2

Parcours en largeur

Le principe est de visiter tous les voisins dun sommet avant de visiter le sommet suivant qui sera le premier voisin a ` avoir et e visit e auparavent. Pour conserver les voisins dun sommet en cours de visite que lon visitera ult erieurement, on utilisera une le. Algorithme Pour mettre en oeuvre un parcours en largeur on utilisera un tableau de bool eens marque index e par les sommets du graphe et une le de sommets. Le tableau marque est initialis ea ` f alse et la le est initialis ee a ` vide. Un parcours en largeur de G a ` partir dun sommet x de G est r ealis e par la proc edure suivante : dure P larg (G : graphe ; x : sommet) proce marque[x] true enf iler(x, ) tant que = faire y premier() pour tout sommet z adjacent a ` y faire si marque[z ] = f alse alors enf iler(z, ) ; marque[z ] true finsi finpour def iler() fintant que

dure finproce Cette proc edure appel ee sur le sommet x marquera tous les sommets de la composante connexe de x. Pour eectuer un parcours complet du graphe il faudra relancer la proc edure a ` partir dun sommet non marqu e de G jusqu` a de que tous les sommets soient marqu es. On peut ainsi d eterminer les composantes connexes dun graphe non orient e mais attention, comme dans le cas du parcours en profondeur, on ne d etermine pas ainsi les composantes fortement connexes dun graphe orient e (cf 2.9). exemple : dans la gure 2.8 la boucle pour suit lordre dindexation des sommets. Les ar etes en gras sont celles de larbre couvrant issu de ce parcours en largeur depuis le sommet x1 .
x1 x8 x4

x2

x6

x5

x7

x3

Fig. 2.8 un parcours en largeur dun graphe non orient e exemple : dans la gure 2.9 la boucle pour suit lordre alphab etique des sommets. Les arcs en gras sont ceux de larborescence couvrante issue de ce parcours en largeur depuis le sommet a.
a b c

Fig. 2.9 un parcours en largeur dun graphe orient e On peut modier la proc edure an de num eroter les sommets dans lordre de visite. Pour cela, on initialise une variable globale num a ` 0 et on met a ` jour la variable i prof lar[z ] dun tableau i prof lar index e par les sommets de G a ` chaque nouveau sommet visit e z. On obtient ainsi une num erotation di erente que celle du parcours en profondeur ; cette num erotation correspond a ` lordre hi erarchique.

exemple : dans la gure 2.8, les sommets x1 , , x8 ont respectivement comme indice de parcours en largeur : 1, 2, 5, 7, 6, 3, 8, 4. Complexit e Soit G dordre n a ` m ar etes. On suppose que G est repr esent e par listes dadjacence. Chaque sommet est enl e au plus une fois. A chaque sommet visit e, tous les sommets adjacents sont test es pour le tableau marque ce qui se fait globalement en un temps proportionnel a ` m. Lalgorithme demande donc un temps O(n) pour la boucle tant que et un temps O(m) pour les marques. Donc le temps de calcul est de lordre de O(max(n, m)).

2.4.3

Algorithme de Moore

Cet algorithme repose sur un parcours en largeur et permet de d eterminer une plus courte cha ne, et donc la distance, entre deux sommets x es dun graphe non orient e. Soient x, y les sommets du graphe dont on veut d eterminer la distance. On associe initialement a ` x lindex 0 et a ` tous les autres sommets lindex . Puis tous les voisins de x sont index es par 1 (ce qui correspond a ` la distance de x a ` chacun de ses voisins). Puis a ` chaque sommet dindex adjacent a ` un sommet dindex 1 on associe lindex 2 et on continue ainsi jusqu` a ce que y ait un index ni ou bien jusqu` a ce que tous les sommets dindex ni soient adjacents seulement a ` des sommets dindex ni. On utilisera une le dont les el ements seront des sommets de G. un tableau parent index e par les sommets de G et dont les el ements seront des sommets de G. un tableau dentiers (plus l el ement ) index index e par les sommets de G. un tableau plus court de sommets de G. dure Moore(G : graphe ; x, y : sommet) proce index[x] 0 pour tout sommet z = x faire index[z ] finpour enf iler(x, ) tant que = faire t premier() pour tout sommet z adjacent a ` t faire si index[z ] = alors enf iler(z, ) ; index[z ] index[t] + 1 ; parent[z ] t finsi finpour def iler() fintant que si index[y ] = alors k index[y ]; plus court[k ] y finsi tant que k = 0 faire plus court[k 1] parent[plus court[k ]]

k k1 fintant que ne reliant x a ` y} {plus court[0] plus court[k ] est une plus courte cha dure finproce Complexit e : la complexit e est la m eme que pour le parcours en largeur O(max(n, m)).

2.5

Points darticulation dans un graphe non orient e

Soit G un graphe non orient e. D enition 2.4 un sommet x est un point darticulation de G si le nombre de composantes connexes de G x est strictement sup erieur au nombre de composantes connexes de G. exemple : dans la gure 2.10, b, c et g sont les points darticulation du graphe.
a b c d

Fig. 2.10 points darticulation

D enition 2.5 un graphe connexe sans point darticulation est dit non s eparable ou inarticul e. D enition 2.6 Soit G un graphe non orient e connexe. Un bloc de G est un sous-graphe qui est un graphe non s eparable et maximal vis a ` vis de cette propri et e. exemple : dans le graphe de la gure 2.10, les blocs sont {a, b, e, f }, {g } et {c, d, h, i}. Les blocs dun graphe induisent une partition de lensemble des ar etes de G et deux blocs distincts ont au plus un sommet en commun qui est alors n ecessairement un point darticulation. Si G repr esente un r eseau de communication, le fait que G soit non s eparable nous assure que le r eseau fonctionnera malgr e une panne de l equipement de lun de ses noeuds. Pour d eterminer les points darticulation dun graphe connexe G, on proc` ede a ` un parcours en profondeur qui fournit un arbre couvrant T de G et au cours duquel on calcule lindice de parcours en profondeur. Cet indice permet alors de calculer une autre valeur pour chaque sommet de G, lindice plus-pas d eni comme suit : Soit x un sommet. plus bas[x] est le minimum de

i prof [x] i prof [y ] pour tout sommet y tel que {xy } est une ar ete dans G mais pas dans T . plus bas[t] pour tout sommet t qui est un ls de x dans T (i.e. i prof [x] < i prof [t] et {xt} est une ar ete dans T . remarque : cette d enition est r ecursive et le calcul de lindice plus bas se fait par un parcours en profondeur de T dans lordre postxe. Soit x0 le sommet de d epart du parcours en profondeur. x0 est donc la racine de T et on a la propri et e suivante : Propri et e 2.10 les points darticulation sont caract eris es par x0 est un point darticulation si et seulement si x0 a au moins deux ls dans T . Soit x di erent de x0 . x est un point darticulation si et seulement si x a un ls t dans T tel que plus bas[t] i prof [x]. Preuve : soit x0 la racine de T . Supposons que x0 soit un point darticulation de G et soit y le premier sommet visit e apr` es x0 . Alors G x0 a au moins deux composantes connexes et y appartient a ` lune delles, soit C1 . Soit C2 un composante connexe distincte de C1 . Avant de visiter C2 , on doit visiter de nouveau x0 puisquil nexiste aucune ar ete de C1 a ` C2 dans G. Donc x0 a au moins deux ls dans T soit y et un sommet de C2 . R eciproquement, supposons que x0 a au moins deux ls dans T et soit y le premier sommet visit e apr` es x0 (y est donc un ls de x0 dans T ). Soit Ty le sous-arbre de T engendr e par lappel r ecursif du parcours en profondeur sur y ; y est la racine de Ty et Ty contient tous les descendants de y dans T . Supposons que uv soit une ar ete de G telle que u soit un sommet de Ty et v un sommet de T x0 Ty . Alors v est visit e apr` es u et uv nest pas une ar ete de Ty . Donc cette ar ete est une ar ete de retour et dapr` es la remarque du paragraphe 2.4.1 v doit etre un descendant de u donc un sommet de Ty : contradiction. Donc G ne contient pas de telle ar ete donc toute cha ne reliant un sommet de Ty a ` un sommet de T x0 Ty passe par x0 et x0 est un point darticulation de G. Soit x = x0 un sommet de G. Supposons que x soit un point darticulation de G. Alors x0 appartient a ` lune de composantes connexes de G x soit C1 . Puisque x est un point darticulation, le parcours en profondeur doit visiter x une premi` ere fois alors quil reste encore des sommets non visit es. Soit y le premier sommet adjacent a ` x qui nappartient pas a ` C1 . y appartient a ` une composante connexe C2 de G x et y est visit e apr` es x do` u i prof [x] < i prof [y ]. Puisquaucun sommet de C2 nest adjacent a ` un sommet de G C2 x y est visit e directement apr es x, donc xy est une ar ete de T ; de plus, ip rof [z ] > ip rof [y ] pour toute ar ete yz telle que z soit visit e apr` es y . Donc plus bas[y ] i prof [x]. R eciproquement, supposons que y est un ls de x dans T tel que plus bas[y ] i prof [x]. Soit S lensemble des sommets de la cha ne el ementaire reliant x0 a ` x dans T en excluant x. Soit S lensemble des sommets du sous-arbre maximal de T de racine y . Par la remarque du

paragraphe 2.4.1, il nexiste pas dar ete reliant un sommet de S a ` un sommet de G (S S x). Supposons quil existe une ar ete ss de G telle s S et s S . alors ss doit etre une ar ete de ne el ementaire reliant y a ` s dans retour et on doit avoir i prof [s] < i prof [x]. En prenet la cha T suivie de lar ete ss , on remarque que plus bas[y ] i prof [s]. Donc plus bas[y ] < i prof [x] ce qui contredit lhypoth` ese. Donc toute cha ne reliant un sommet de S a ` un sommet de S passe par x et x est un point darticulation de G. exemple : dans le graphe de la gure 2.10, si le parcours en profondeur depuis a suit lordre alphab etique, on obtient les valeurs suivantes : sommet i prof plus bas a b c 1 2 6 1 1 6 d e 7 9 6 1 f g 3 5 1 5 h i 8 9 6 7

2.6

Isthme

On a vu la d enition des isthmes (bridges) comme etant une ar ete indispensable a ` la connexit e du graphe. Le th eor` eme suivant permet de d eterminer les isthmes apr` es un parcours en profondeur. Th eor` eme 2.11 si T est larbre couvrant issu dun parcours en profondeur dun graphe connexe G alors lar ete {xy } avec i prof [x] < i prof [y ] est un isthme si et seulement si {xy } est une ar ete de T et plus bas[y ] > i prof [x]. exemple : dans le graphe de la gure 2.10, si le parcours en profondeur depuis a suit lordre alphab etique, les isthmes sont bien les ar etes {gc} et {bg } avec plus bas[c] > i prof [g ] et plus bas[g ] > i prof [b].

2.7

k -connexit e

La perte dun sommet pour un graphe non s eparable ne provoque pas la perte de la connexit e. De fa con plus g en erale, on se pose la question pour un graphe connexe du nombre minimum de sommets a ` retirer pour perdre la connexit e de ce graphe. Plus ce nombre est important, plus un r eseau repr esent e par un tel graphe est robuste vis a ` vis des pannes. Plus pr ecisement, on d enit la notion de k -connexit e D enition 2.7 soit G un graphe non orient e ayant au moins une paire de sommets non adjacents. On appelle (G), le nombre de connexit e de G, le plus petit entier k tel quil existe des sommets x1 , xk de G tels que G {x1 , xk } soit non connexe. On dira que G est k -connexe si (G) k . Dans le cas o` u G na pas de paire de sommets non adjacents (i.e. G est complet si de plus G est simple), on posera (G) = n 1 o` u n est lordre de G.

exemple : pour le graphe complet Kn , (Kn ) = n 1. exemple : pour le graphe de la gure 2.10, (G) = 1. pour le graphe de la gure 2.8, (G) = 2. On peut d enir la notion equivalente pour les ar etes et d enir ainsi le nombre dar ete -conexit e (G) dun graphe connexe dordre sup erieur ou egal a ` 2. On a alors les r esultats suivants : Th eor` eme 2.12 (G) (G) o` u est le degr e minimum des sommets du graphe. exemple : pour le graphe de la gure 2.8, (G) = (G) = 2 et = 2. exercice : chercher un exemple de graphe pour lequel les in egalit es ci-dessus sont strictes. Th eor` eme 2.13 si n+k2 alors G est k -connexe. 2

exemple : dans la gure 2.11 le graphe a un nombre de connexit e egale a ` 4.

Fig. 2.11 nombre de connexit e dun graphe

remarque : tout graphe non s eparable dordre sup erieur a ` 3 (en particulier un bloc dau moins 3 sommets ) est 2-connexe. Deux r esultats importants (dont on ne donnera pas la preuve) fournissent une caract erisation de graphe k -connexe. Th eor` eme 2.14 (Menger) Un graphe dordre n k + 1 est k -connexe si et seulement si deux sommets distincts quelconques sont reli es par k cha nes qui nont aucun sommet commun (hormis leurs extr emit es). Un graphe est k -ar ete-connexe si et seulement si deux sommets distincts quelconques sont reli es par k cha nes el ementaires qui nont aucune ar ete commune.

Chapitre 3 Probl` eme de lArbre Couvrant Minimum


Le probl` eme abord e ici correspond a ` la minimisation du co ut de construction dun r eseau minimal de communications connaissant le co ut de chaque liaison possible entre les noeuds du r eseau a ` construire. Puisquon souhaite un r eseau minimal, on recherche un arbre couvrant (i.e. le graphe induit connexe qui a le minimum dar etes). On doit de plus tenir compte du co ut de construction : chaque ar ete sera aect ee dun poids par une fonction p a ` valeurs dans R + et le co ut total sera egal a ` la somme des co uts des ar etes de larbre. On dit que lon recherche un arbre couvrant minimal. exemple :
6 3 3 6 6 7 4 8 5 6 2 3

Fig. 3.1 un r eseau a ` construire et une solution minimale en gras

remarque : par la suite, on utilisera la m eme notation pour un ensemble dar etes et le graphe engendr e par cet ensemble. Trouver un arbre couvrant minimal en examinant tous les arbres couvrants est en pratique irr ealisable : pour un graphe complet dordre 20, il faudrait plus de 83000 si` ecles pour d eterminer larbre couvrant minimal a ` raison dun million darbres couvrants calcul es par milliseconde.

32

On etudiera deux algorithmes de complexit e raisonnable qui r esolvent le probl` eme de larbre couvrant minimal.

3.1

Algorithme de Kruskal

Lalgorithme de Kruskal est un algorithme glouton qui repose sur le fait quun arbre couvrant dun graphe dordre n a n 1 ar etes et est acyclique. Le choix des ar etes se fera donc sur deux crit` eres : la conservation de lacyclicit e et un co ut minimal.

3.1.1

Algorithme

Soit E lensemble des sommets de G. On utilisera un ensemble dar etes T qui sera en sortie larbre couvrant minimal et un ensemble dar etes F qui repr esentera les ar etes qui peuvent etre choisies. dure Kruskal( G : graphe ). proce T F E tant que |T | < n 1 faire trouver une ar ete e F de poids minimal F F e si T + e est acyclique alors T T e finsi fintant que dure finproce exemple :
y y 2 x y 2 x z v y 2 x z

5 3

2 x 4 6 z 2 2

2 v u

3 1

2 v

le graphe pondr

les diffrentes tapes de construction de T

Fig. 3.2 lalgorithme de Kruskal

3.1.2

Preuve de lalgorithme

Soit n est lordre de G. Lalgorithme produit bien un arbre couvrant de G puisquil termine lorsque n 1 ar etes sont choisies et T est acyclique.

Supposons que T ne soit pas minimal. Si e1 , , en1 sont les ar etes de T dans lordre de choix de lalgorithme, alors p(e1 ) p(en1 ) par construction. Soit alors A un arbre couvrant minimal tel que lindice de la premi` ere ar ete de T qui ne soit pas une ar ete de A soit maximum. Soit donc k cet indice, on a alors e1 ek T , e1 ek1 A et ek A. Alors A + ek contient un unique cycle C . C ne peut pas etre constitu e uniquement dar ete de T (hormis ek ) car sinon T contiendrait un cycle.Soit alors e une ar ete de C qui appartient a ` A mais qui nappartient pas a ` T . A + ek e est donc un arbre couvrant de G et p(A + ek e ) = p(A) + p(ek ) p(e ). Dans lex ecution de lalgorihtme de Kruskal, ek a et e choisie de poids minimal tel que G[e1 ek ] soit acyclique. Mais G[e1 ek1 , e ] est aussi acyclique puisque sous-graphe de A. Donc p(e ) p(ek ) et p(A + ek e ) p(A). On en d eduit que A + ek e est optimal et di` ere de T par un ar ete dindice strictement sup erieur a ` k : contradiction.

3.1.3

Complexit e

Si les ar etes sont class ees par ordre de co ut croissant, ce qui peut se faire en O(m log m) par un tri rapide, il reste a ` evaluer la complexit e du test dacyclicit e. Si les composantes connexes du graphe T sont connues, ce test se r eduit a ` v erier que les extr emit es de lar ete choisie appartiennent a ` deux composantes connexes distinctes. Il reste alors a ` g erer ces composantes connexes de fa con a ` fusionner les deux composantes connexes reli ees par lar ete choisie. Cela peut se faire par la technique de fusion rapide en O(m log n). Lalgorithme de Kruskal a une complexit e de lordre O(m max(log n, log m)). remarque : elle peut etre am elior ee par un algorithme de fusion encore plus ecace.

3.2

Algorithme de Prim

Lalgorithme de Kruskal veille a ` maintenir la propri et e dacyclicit e dun arbre alors que lalgorithme de Prim se base sur la connexit e dun arbre. Lalgorithme de Prim fait pousser un arbre couvrant minimal en ajoutant au sous-arbre T d ej` a construit une nouvelle branche parmi les ar etes de poids minimal joignant un sommet de T a ` un sommet nappartenant pas a ` ce dernier. Lalgorithme sarr ete lorsque tous les sommets du graphe appartiennent a ` T.

3.2.1

Algorithme

Soit X lensemble des sommets de G. On utilisera un ensemble dar etes T qui sera en sortie larbre couvrant minimal et un ensemble de sommets S qui contiendra les sommets de T . dure Prim( G : graphe ) proce choisir un sommet x de G. S Sx T tant que S = X faire trouver une ar ete {ys} de poids minimal tel que y X S et s S

T T {ys} S Sy fintant que dure finproce exemple : dans la gure 3.3, en partant du sommet u, T contient successivement les ar etes {uv }, {uz }, {ux}, {xy }.
y 2 x 3 2 v u u 1 v u 1 z v u 2 1 z v u 3 2 1 z v x y 5 4 2

5 3 2 u

2 x 6 z 1

le graphe pondr

les diffrentes tapes de construction de T

Fig. 3.3 lalgorithme de Prim

3.2.2

Preuve de lalgorithme

Soit n est lordre de G. Lalgorithme produit bien un arbre couvrantde G puisquil termine lorsque tous les sommets de X sont dans S et a ` chaque it eration une ar ete est choisie. Donc T contient tous les sommets de G et a exactement n 1 ar etes. Supposons que T ne soit pas minimal. Soit alors A un arbre couvrant minimal qui a le maximum dar etes en commun avec T . Si e1 , , en1 sont les ar etes de T dans lordre de choix de lalgorithme, le poids de T est i=n1 p(T ) = i=1 p(ei ). Soit j tel que j = inf {i, 1 i n; ei A} (ej est la premi` ere ar ete de T qui nappartient pas a ` A). On notera Si lensemble des sommets du sous-graphe induit par e1 , , ei . Le graphe A + ej nest pas un arbre donc contient un unique cycle C . Or, par construction, ej relie n ecessairement un sommet de Sj 1 a ` un sommet de X Sj 1 . Donc C doit contenir une ar ete e = ej qui elle aussi relie un sommet de Sj 1 a ` un sommet de X Sj 1 . Le graphe A + ej e est alors un arbre couvrant de G. Mais par construction de T , p(ej ) p(e), do` u p(A + ej e) p(A) : A + ej e est alors un arbre couvrant minimal qui a plus dar ete en commun avec T que A ce qui contredit lhypoth` ese sur A.

3.2.3

Complexit e

Soit n est lordre de G. Si S a k sommets, pour choisir une ar ete de poids minimal relient un sommet de S a ` un sommet de X S , on doit trouver le poids minimum parmi au plus k (n k ) ar etes puisque chaque sommet de S est adjacent a ` au plus (n k ) sommets de X S . Or k 2 varie de 1 a ` n, donc k (n k ) < (n 1) . Ce choix est eectu e n fois dans la boucle tant que. Donc la complexit e est de lordre O(n3 ).

Chapitre 4 Probl` eme du plus court chemin


Le probl` eme pos e dans ce chapitre est de d eterminer dans un graphe valu e (orient e ou non orient e) le plus court chemin entre deux sommets. Les ar etes (arcs) du graphe seront donc aect ees dune valeur par une fonction v a ` valeurs dans R et on calculera la longueur dun chemin (cha ne) par la somme des valeurs de ses ar etes (arcs). exemple :
a
15

b
20

10

20

j
20

10

d
20

20

e
15

15

f
11

40

30

Fig. 4.1 Trouver un plus court chemin Selon la fonction v , on peut etre amen ea ` des solutions di erentes. Plus pr ecisement, il est ais e de remarquer quil ny a pas de solution lorsque le graphe contient un circuit (ou un cycle) absorbant i.e. un circuit pour lequel la somme des valeurs de ses arcs est n egative (cf gure 4.2). On etudiera quatre solutions principales : les algorithmes de Dijkstra, Floyd et Bellman et une variante lalgorithme PAPS. Lalgorithme de Dijkstra fournit une solution pour une fonction v a ` valeurs dans R + . Lalgorithme de Floyd fonctionne pour toute fonction v en labsence de circuit absorbant. Une l eg` ere modication permet de corriger ce probl` eme. Lalgorithme de Bellman permet de trouver une solution et de d etecter la pr esence dun circuit absorbant. Lalgorithme PAPS lui aussi d etecte d eventuel circuit absorbant mais il di` ere du pr ec edent par lutilisation dune le pour un parcours en largeur.

36

-4

a
1 3

b
-5

On peut diminuer la valeur du chemin de a vers b


1 2

c en empruntant le circuit bec qui "vaut" -2

Fig. 4.2 un circuit absorbant

4.1

Algorithme de Dijkstra

Un sommet x etant x e, cet algorithme est un algorithme glouton qui construit progressivement un ensemble de sommets pour lesquels on conna t un plus court chemin depuis x. A chaque etape on choisit un sommet dont la distance a ` x est minimale parmi ceux qui nont pas encore et e choisis.

4.1.1

Algorithme

On utilisera un ensemble C de sommets et deux tableaux D et P index es par les sommets du graphe : D tableau de r eels et P tableau de sommets. dure Dijkstra( G : graphe , x : sommet ) proce C {x} ; D[x] 0 pour tout sommet s = x faire D[s] v (x, s) ou + si s nest pas adjacent a `x P [s] x finpour tant que |C | < n faire choisir y tel que D[y ] = min{D[z ]; z C } si D[y ] = + alors n finsi C C {y } pour chaque sommet z C faire si D[z ] > D[y ] + v (yz ) alors D[z ] D[y ] + v (yz ) ; P [z ] y finsi finpour fintant que dure finproce exemple : pour le graphe de la gure 4.1, a ` partir du sommet a on a le tableau suivant :

sommet

a 0 0 0 0 0 0 0 0 0 0

b c 15 + 15 25 15 25 15 25 15 25 15 25 15 25 15 25 15 25 15 25

d e 20 + 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30 20 30

f g h i j + + + + + + + + + 35 + 40 + + 35 35 40 + + 35 35 40 45 + 35 35 40 45 46 35 35 40 45 46 35 35 40 45 46 35 35 40 45 46 35 35 40 45 46 35

sommets choisis a a, b a, b, d a, b, d, c a, b, d, c, e a, b, d, c, e, f a, b, d, c, e, f, j a, b, d, c, e, f, j, g a, b, d, c, e, f, j, g, h a, b, d, c, e, f, j, g, h, i

Le tableau P contient les p` eres des sommets dans un plus court chemin depuis le sommet x. remarque : attention, cet algorithme nest valable que pour une valuation positive i.e. une fonctin v a ` valeurs dans R+ , comme le montre lexemple suivant exemple : dans la gure 4.3, le tableau D evolue de la fa con suivante : sommet D D D a 0 0 0 b 1 1 1 c 2 2 1 sommets choisis a a, b a, c, b

Pour relier a a ` b, le plus court chemin passe par c et vaut 0. Mais lalgorithme ne le d etecte pas.
b 1 a 2 -2 c

Fig. 4.3 une valuation n egative

4.1.2

Preuve

Lalgorithme termine puisquon augmente le nombre de sommets choisis a ` chaque it eration. Avant la boucle tant que, C ne contient que x et D[x] = 0 est la longueur dun plus court chemin depuis x. Au bout de k it erations, supposons que pour chaque sommet z de C , D[z ] est la longueur dun plus court chemin depuis x. Soit y le sommet choisi dans X C a ` la k + 1 it eration. Soit x = x0 , x1 , x2 , , xl1 , xl = y un chemin quelconque de x a ` y sil existe. Soit i le plus grand entier tel que x, x1 , x2 , , xi soient des sommets de C . Par hypoth` ese de j =i1 ` valeurs positives, la r ecurrence, D[xi ] j =0 p(xj , xj +1 ). Donc, puisque la fonction p est a j =l1 longueur l( ) du chemin est sup erieure a ` D[xi ] + j =i+1 p(xj , xj +1 ). Le sommet xi a et e choisi au cours des k it erations pr ec edentes donc on a n ecessairement D[xi ] + p(xi , xi+1 ) D[xi+1 ].

Mais par choix de y , D[y ] D[xi+1 ]. Il reste donc D[y ] D[xi ] + p(xi , xi+1 ) l( ) i.e. D[y ] est inf erieur a ` la longueur dun chemin quelconque depuis x.

4.1.3

Complexit e

Dans lalgorithme on utilise implicitement lensemble X C que lon notera CC . Cest lensemble des sommets parmi lesquels on choisira le prochain y . La boucle tant que a au plus (n 1) it erations car on choisit un sommet a ` chaque it eration. Le choix du sommet y se fera en temps (|CC |) et puisque |CC | diminue dune unit ea ` chaque
i=n

it eration, on aura alors


i=1

(i 1) comparaisons au total soit (n2 ).

Supprimer y de CC prend un temps au maximum (n) op erations. La boucle pour chaque sommet z de CC faire la comparaison D[z ] > D[y ] + v (yz ) se fera au plus d(y ) fois donc au plus (m) fois au total. On peut am eliorer le choix et la suppression du sommet y en repr esentant CC par un tas ordonn e selon les valeurs en cours du tableau D. Dans ce cas la complexit e est au pire (max(m, n log n)).

4.2

Algorithme de Floyd

Cet algorithme est une adaptation de lalgorithme de Roy-Warshall(cf 1.8.2).

4.2.1

Algorithme

On utilise une matrice carr ee M dordre n initialis ee par les valeurs v (i, j ). On utilise une matrice carr ee P dordre n dans laquelle Pi,j sera le p` ere de j dans un plus court chemin depuis i. dure Floyd (M, P : matrice) proce pour i de 1 a ` n faire pour j de 1 a ` n faire Mi,j v (i, j ) Pi,j i finpour finpour pour k de 1 a ` n faire pour i de 1 a ` n faire pour j de 1 a ` n faire si Mi,k + Mk,j < Mi,j alors Mi,j Mi,k + Mk,j ; Pi,j Pk,j finsi finpour finpour finpour dure finproce exemple :

6 -4

-1

-2 5

Fig. 4.4 Un graphe sans circuit absorbant On a 0 2 + 6 1 1 + 0 2 + 2 2 M = et P = + 5 0 5 3 3 4 1 + 0 4 4 puis pour k = 1 0 2 + 6 + 0 2 + M = + 5 0 5 4 2 + 0 puis pour k = 2 0 2 0 6 + 0 2 + M = + 5 0 5 4 2 4 0 puis pour k = 3 0 2 0 5 + 0 2 3 M = + 5 0 5 4 2 4 0 puis pour k = 4 0 2 0 5 1 0 2 3 M = 1 3 0 5 4 2 4 0 1 2 3 4 1 2 3 4

1 2 et P = 3 4

1 2 3 1

1 2 3 4

1 2 3 4

1 2 et P = 3 4

1 2 3 1

2 2 3 2

1 2 3 4

1 2 et P = 3 4

1 2 3 1

2 2 3 2

3 3 3 4

1 4 et P = 4 4

1 2 1 1

2 2 3 2

3 3 3 4

On peut modier lalgorithme de Floyd an quil d etecte la pr esence dun circuit de longueur n egative de la fa con suivante :

dure Floyd 2 (M, P : matrice) proce pour i de 1 a ` n faire pour j de 1 a ` n faire Mi,j v (i, j ) ; Pi,j i finpour finpour pour k de 1 a ` n faire pour i de 1 a ` n faire si Mi,j = + alors si Mi,k + Mk,i < 0 alors FIN ; circuit absorbant sinon pour j de 1 a ` n faire Mi,j min{Mi,j , Mi,k + Mk,j } si Mi,j < Mi,k + Mk,j alors Pi,j Pk,j finsi finpour finsi finsi finpour finpour dure finproce

4.2.2

Preuve

La matrice M initiale contient les plus courts chemins de i a ` j ne passant par aucun autre sommet. On peut montrer par r ecurrence qu` a l etape k , Mi,j est egal a ` un plus court chemin de i a ` j passant uniquement par les sommets 1, , k . Cela constitue linvariant de la boucle pour.

4.2.3

Complexit e

Elle est clairement en (n3 ).

4.3

Algorithme de Bellman

Cet algorithme recherche un plus court chemin depuis un sommet x e x dans un graphe quelconque ou bien d etecte la pr esence dun circuit absorbant.

4.3.1

Algorithme

On utilise un tableau de distance D index e par les sommets du graphe et la liste des voisins (pour un graphe non orient e) ou bien la liste des pr ed ecesseurs (dans la cas dun graphe orient e). dure Bellman (G : graphe ; x : sommet) proce

{initialisation} D 0 [x] 0, pour tout sommet y = x faire D 0 [y ] + finpour k0 tant que k < n faire Dk [x] 0 pour tout sommet y faire Dk+1 [y ] min(D k [y ], min{D k [z ] + w(zy )) ; zy E } finpour si Dk+1 = Dk alors FIN finsi k k+1 fintant que si k = n alors il existe un circuit de longueur n egative. dure finproce exemple : dans la gure 4.5, si on choisit x = a, le tableau D evolue ainsi sommet D0 D1 D2 D3 D4 D5 a 0 0 0 0 0 0 b c + + 3 1 3 1 3 1 3 2 3 2 d e + + + + 4 0 4 0 4 0 5 1

Lalgorithme sarr ete avec k = 5 et le circuit absorbant a et e detect e.


a 3 b 1 -1 c -3 d 1

Fig. 4.5 Un graphe avec un circuit absorbant

4.3.2

Preuve

D0 [y ] repr esente la valeur dun chemin de x a ` y de longueur minimum et contenant 0 ar ete (arc). On peut montrer par r ecurrence sur k que, a ` la k -i` eme it eration de la boucle tant que, Dk [y ] repr esente la valeur dun chemin de x a ` y de longueur minimum et ne contenant pas plus que k ar etes (arcs). Sil nexiste pas de circuit absorbant, il existe un plus court chemin ( el ementaire) de x a ` y de moins de n 1 ar etes (arcs) et le tableau D se stabilise en moins de n 1 it erations a ` la valeur dun plus court chemin de x a ` y , pour chaque sommet y . Sil ny a pas de stabilisation alors il existe un circuit absorbant.

4.3.3

Complexit e

La boucle tant que demande chaque fois m additions et m comparaisons donc la complexit e est en O(m n).

4.4

Algorithme PAPS

Cet algorithme est une variante du pr ec edent.

4.4.1

Algorithme

On utilisera un tableau de distance D index e par les sommets du graphe, un tableau de sommets P index e par les sommets du graphe une le de sommets , une variable enti` ere l qui sera egale a ` la longueur de la le et un compteur k qui permet darr eter lalgorithme en pr esence dun circuit absorbant. dure PAPS (G : graphe ; x : sommet) proce pour tout sommet y faire D[y ] + ; P [y ] x finpour k 0 ; ; enf iler(, x) ;l 1 tant que k < n et = faire c 0; pour i de 1 a ` l faire y premier() ; def iler() ; l l 1 pour tout successeur z de y faire si D[y ] + v (yz ) < D[z ] alors D[z ] D[y ] + v (yz ) ; P [z ] y ; enf iler(, z ) ; c c + 1 finsi finpour finpour

k k + 1; l c fintant que si = alors il existe un circuit absorbant. dure finproce

4.4.2

Preuve

Elle est laiss ee au lecteur.

4.4.3

Complexit e

Elle est identique a ` la complexit e de algorithme de Bellman. En eet, la boucle pour i de 1a ` l a au maximum m it erations et la boucle tant que n it erations. Donc la complexit e de lalgorithme PAPS est en (m n).

Chapitre 5 Graphes orient es


Dans ce chapitre on sint eressera a ` certains probl` emes sp eciques aux graphes orient es comme la d etermination des composantes fortement connexes dun graphe orient e, la d etection de circuits, le tri topologique etc.

5.1

Composantes fortement connexes

Contrairement au cas dun graphe non orient e, un parcours de graphe (en largeur ou en profondeur) ne permet pas de d eterminer les composantes fortement connexes dun graphe orient e. Un parcours dun graphe orient e depuis un sommet x permet de visiter les sommets accessibles depuis x. Lid ee est dalors inverser les arcs du graphe orient e et de recommencer le parcours. Il est alors n ecessaire de choisir les sommets a ` partir desquels on eectue ces parcours. Pour cela, on num erote les sommets en ordre de post-visite au cours du premier parcours en profondeur en suivant lalgorithme suivant dans lequel c est une variable globale enti` ere initialis ee a ` 0 et i post[x] est lindice de post-visite. dure P prof or(G : graphe ; x : sommet) proce marque[x] true pour chaque successeur y de x faire si marque[y ] = f alse alors P prof or(G ; y )finsi finpour cc+1 i post[x] c dure finproce On peut alors d eterminer les composantes fortement connexes en suivant les instructions suivantes : 1. eectuer un parcours en profondeur a ` partir dun sommet quelconque (relancer le parcours jusqu` a ce que tous les sommets soient marqu es) 2. construire le graphe Gr qui a les m emes sommets que G mais dont les arcs ont lorientation inverse.

45

3. eectuer un parcours en profondeur de Gr a ` partir du sommet qui a lindice de post-visite le plus elev e. Larborescence obtenue est la composante fortement connexe de ce sommet. 4. sil reste des sommets non marqu ees par cette deuxi` eme visite, il faut choisir celui qui a lindice de post-visite le plus elev e pour relancer linstruction 3. exemple : sur les gures 5.1 et 5.2 suivantes, on peut voir les parcours des graphes G et G r ainsi que les arborescences obtenues (le parcours suit lordre alphab etique). Dans le cas de G r , ce sont les composantes fortement connexes de G.
a(6) a

b b(2) c(1) d(5) c

e(8)

f(7)

g(3)

h(4)

larborescence du parcours en profondeur depuis a

Fig. 5.1 Un parcours de graphe orient e


a

b e f g h

les composantes fortement connexes de G

Fig. 5.2 Le parcours du graphe renvers e Les arcs nappartenant a ` aucune composante fortement connexe sont des arcs inter-composantes. On peut alors obtenir le graphe r eduit dont les sommets sont les composantes fortement connexes de G et les arcs sont les arcs inter-composantes (cf gure 5.3). Ce graphe r eduit na evidemment pas de circuit.

5.2

Graphe sans circuit

Ces graphes sont notamment importants dans le probl` eme de lordonnancement.

a e f c

Fig. 5.3 Le graphe r eduit

5.2.1

Algorithmes

Un graphe orient e comporte un circuit si et seulement si lors dun parcours initi e depuis le sommet x, on retombe sur ce sommet. On peut donc adapter lalgorithme de parcours en profondeur pour d etecter le pr esence dun circuit. On verra deux variantes : lune utilise une liste des sommets en cours de visite et lautre un double marquage des sommets. avec une liste La proc edure de parcours suivante maintient a ` jour une liste L de sommets dont lappel sur cette proc edure nest encore ni. Cette liste est initialis ee a ` . On utilise de plus un tableau de bool eens visite initialis ea ` f alse et index e par les sommets du graphe. dure visite liste(G : graphe ; x : sommet) proce si x L alors r epondre non ; FIN sinon visite[x] true L L {x} pour chaque successeur y de x faire visite liste(G ; y )finpour L L {x} finsi dure finproce ee dans la proc edure suivante Cette proc edure visite liste est utilis dure sans circuit(G : graphe ) proce pour chaque sommet x faire si visite[x] = f alse alors visite liste(G ; x)finsi finpour r epondre oui dure finproce

double marquage La proc edure de parcours suivante marque de deux fa cons les sommets : marque[x] est true edure sur x nest lorsque x est ou a et e visit e et en cours[x] est true lorsque lappel de la proc pas termin e. Les tableaux de bool eens marque et en cours sont initialis es a ` f alse et index es par les sommets du graphe. dure visite marque(G : graphe ; x : sommet) proce marque[x] true en cours[x] true pour chaque successeur y de x faire si en cours[y ] = true alors r epondre non ; FIN sinon si marque[y ] = f alse alors visite marque(G ; y ) finsi finsi finpour en cours[x] f alse dure finproce Cette proc edure est alors utilis e dans la proc edure suivante : dure sans circuit 2(G : graphe orient proce e) pour chaque sommet x faire si marque[x] = f alse alors visite marque(G ; x)finsi finpour r epondre oui dure finproce Dans un graphe sans circuit, il y a n ecessairement parmi les sommets des sommets qui nont pas de successeur et des sommets qui nont pas de pr ed ecesseur : les premiers sont appel es sommet puits et les seconds sommet source. Comment consid erer les autres sommets ? On peut eectuer une sorte de classement appel e tri topologique.

5.2.2

Tri topologique

D enition 5.1 Soit G un graphe orient e dordre n. On appelle tri topologique des sommets de G une bijection de X dans {1 n} telle que si (x, y ) est un arc alors (x) < (y ). Il est clair que si G a un circuit, un tel tri est impossible. La r eciproque est vraie : Propri et e 5.1 Un graphe orient e est sans circuit si et seulement si G admet un tri topologique de ses sommets. remarque : un graphe orient e sans circuit peut avoir plusieurs tris topologiques. exemple : dans la gure 5.4, on peut classer ainsi les sommets

Fig. 5.4 Un graphe sans circuit e, c, a, b, d, h, g, f c, e, a, b, f, d, h, g e, c, a, b, f, d, h, g c est un sommet source et g est un sommet puits. Pour eectuer un tri topologique, on peut utiliser un parcours en profondeur dans lequel les sommets sont empil es apr` es avoir et e visit es. Soit une pile de sommets initialis ee a ` . dure P prof 3(G : graphe ; x : sommet) proce marque[x] true pour chaque sommet y successeur de x faire si marque[y ] = f alse alors P prof 3(G ; y )finsi finpour empiler(x, ) dure finproce Le d epilement de permet alors le tri topologique : dure tri topologique(G : graphe ; x : sommet) proce pour chaque sommet x faire marque[x] f alse finpour c1 pour chaque sommet x faire si marque[x] = f alse alors P prof 3(G ; x)finsi finpour tant que = faire [(premier( ))] c depiler( ) cc+1 fintant que dure finproce

La fonction r ealise un tri topologique. exemple : dans la gure 5.4, si la proc edure tri topologique(G ; a) suit lordre alphab etique la fonction a les valeurs suivantes sommet a b 3 7 c d 2 4 e 1 f g h 8 6 5

5.3

Orientation

Le probl` eme abord e dans ce paragraphe peut etre illustr e cd la fa con suivante : Dans une ville, un quartier form e de rues etroites a ` double sens est perp etuellement encombr e. An de d esengorger ce quartier, la mairie d ecide de rendre toutes ses rues a ` sens unique : est-ce possible ? Comment r ealiser ce projet ? La question de la possibilit e dune telle d emarche sous-entend le probl` eme suivant : peut-on orienter les voies de ce quartier tel quaucune rue ne devienne inaccessible depuis une autre ? Les rues seront repr esent ees par des ar etes et les croisements seront les sommets du graphe qui repr esentera le quartier. Dans le graphe de la gure 5.5, cest possible alors que dans le graphe de la gure 5.6, cest impossible.

le graphe non orient

sa version oriente

Fig. 5.5 On peut orienter Le r esultat suivant fournit une caract erisation et un algorithme pour lorientation de tels graphes. D enition 5.2 Un graphe non orient e connexe est fortement orientable sil existe une orientation de ses ar etes qui le transforme en graphe orient e fortement connexe. Th eor` eme 5.2 Un graphe non orient e connexe est fortement orientable si et seulement si il na pas disthme.

Fig. 5.6 On ne peut pas orienter Preuve : La condition n ecessaire est claire. R eciproquement, soit G un graphe non orient e sans isthme. Alors chaque ar ete de G appartient a ` un cycle. Soit C = x1 , xk , x1 un cycle de G. On oriente alors lar ete {xk , x1 } en arc (xk , x1 ) puis chaque ar ete {xi , xi+1 } en arc (xi , xi+1 ) pour i = 1, k 1. Sil existe des ar etes reliant deux sommets du cycle C qui nont pas encore et e orient ees, on les oriente indi eremment. Le sous-graphe orient e G0 = G(x1 , xk ) est fortement connexe puisquil a un circuit hamiltonien. Si tous les sommets de G sont dans C , le probl` eme est r esolu. Sinon, puisque G est connexe, il existe un sommet y1 nappartenant pas a ` C adjacent a ` un sommet xj de C . Lar ete {y1 , xj } nest pas un isthme donc appartient a ` un cycle C1 = y1 , y2 = xj , , yl , y1 . On oriente alors lar ete {y1 , xj } en arc (y1 , xj ), lar ete {yl , y1 } en arc (yl , y1 ), puis pour tout i = 2, , l 1 on oriente les ar etes {yi , yi+1 } non encore orient ees en arc (yi , yi+1 ). Remarquons que si les sommets etaient d ej` a reli es par un arc, alors ces deux sommets appartiennent a ` G0 . Apr` es ces orientations, si une ar ete reliant deux sommets de C1 ou un sommet de C a ` un sommet de C1 na pas encore re cu dorientation, on loriente indi eremment. On montre alors que le sous-graphe orient e G1 engendr e par x1 , , xk , y1 , , yl est fortement connexe. En eet, on construit le circuit suivant : on part de y1 vers y2 puis pour i = 2, , l 1 on ajoute larc (yi , yi+1 ) sil existe sinon le chemin reliant yi a ` yi+1 dans G0 . Puis on revient a ` y1 et a ` y2 par les arcs (yl , y1 ) et (y1 , y2 ). On peut alors continuer par le circuit y2 , x2 , , xk , x1 , x2 . Si tous les sommets de G ne sont pas dans G1 on poursuit cette proc edure jusqu` a ce que ce soit le cas.

Chapitre 6 Ordonnancement
Dans ce chapitre, on etudiera le probl` eme de coordination de travaux : un ensemble de t aches doit etre accompli en respectant certaines contraintes. Ces contraintes peuvent etre de plusieurs natures, par exemple : contraintes de pr ec edence : une t ache ne peut etre ex ecut ee que si une ou plusieurs autres sont achev ees contraintes absolues : une t ache doit etre achev ee avant une date pr ecise etc. contraintes dincompatibilit e : deux t aches ne peuvent sex ecuter simultan ement. On ne verra que les contraintes de pr ec edence simples pour lesquelles les t aches ont une dur ee x ee. exemple : la r efection dun amphith ea tre n ecessite les travaux suivants : pose de haut-parleur pose dun micro pose dune moquette peinture pose dun tableau pose de si` eges La pose de haut-parleur demande une journ ee de travail ; la pose du micro demande une demi-journ ee de travail ; la pose de la moquette demande deux jours de travail ; la pose du tableau demande une demi-journ ee de travail ; la pose des si` eges demande deux jours de travail et enn la peinture n ecessite quatre jours de travail. Evidemment, la peinture doit pr ec eder tout autre travail et les si` eges ne peuvent etre install es quapr` es la moquette. De plus le micro doit etre reli e au haut-parleur et x e devant le tableau. On peut r esumer ces donn ees dans le tableau suivant : t ache haut-parleur HP moquette M si` eges S tableau T peinture P micro Mic dur ee contraintes de pr ec edence 2 Mic 4 S 4 1 Mic 8 HP, M, T, S, Mic 1

52

Dans la m ethode potentielst aches (MPM pour Method of Project Management), la mod elisation se fait par un graphe orient e dont les sommets sont les t aches, un arc indique que la t ache origine doit pr ec eder la t ache but et chaque arc est valu e par la dur ee de son origine. On compl` ete alors le graphe avec deux sommets et : repr esente la t ache ctive de d ebut des travaux et pr ec` ede chaque sommet sans pr ed ecesseur par un arc de valeur nulle ; repr esente la t ache ctive de n des travaux et succ` ede a ` chaque sommet sans successeur par un arc valu e par la dur ee de la t ache origine (cf gure 6.1).
M 8 0 P 8 8 HP 2 Mic T 1 1 4 S 4

Fig. 6.1 Le graphe orient e repr esentant les contraintes dex ecution Le probl` eme est d etablir un calendrier des travaux respectant les contraintes et minimisant la dur ee totale. Par exemple, pour la r efection dun amphith ea tre d ecrite par le graphe 6.1, la dur ee minimale des travaux est de 16 demi-journ ees. On peut noter les deux remarques suivantes : il est clair que ce calendrier ne peut etre etabli si le graphe a un circuit (ce quon appellerait un cercle vicieux) le graphe peut etre bien plus important que celui de lexemple pr ecedent et un bon sch ema permet une r esolution plus ais ee. Bon signie en particulier que la lecture du graphe depuis le sommet jusquau sommet permet de voir les t aches pouvant etre ex ecut ees simultan ement et lordre de ces groupes de t aches. Par exemple, pour la r efection dun amphith ea tre d ecrite par le graphe 6.1, la peinture doit etre faite en premier puis parall` element moquette, tableau et haut-parleur peuvent etre pos es et enn les si` eges apr` es la moquette. Cela nous am` ene a ` d enir la notion de rang dans un graphe orient e acyclique.

6.1

Rang dun sommet dans un graphe orient e

D enition 6.1 Dans un graphe orient e sans circuit, pour un sommet x, rang (x) est la longueur maximale dun chemin de but x. exemple : dans le graphe de la gure 5.4, on a rang (c) = rang (e) = 0 rang (a) = 1 rang (b) = rang (d) = 2

rang (f ) = rang (h) = 3 rang (g ) = 4 Pour calculer cette fonction rang , il sut donc de r esoudre le probl` eme du plus long chemin par opposition au probl` eme du plus court chemin (cf chapitre 4). Une solution possible consiste a ` utiliser les degr es entrants des sommets : fonction rang(G : graphe ) : entier naturel k 0 ; S0 pour chaque sommet x faire d[x] d (x) ; si d (x) = 0 alors S0 S0 {x} finsi finpour tant que Sk = faire Sk+1 pour chaque sommet y Sk faire rang [y ] k pour chaque sommet z successeur de y faire d[z ] d[z ] 1 ; si d[z ] = 0 alors Sk+1 Sk+1 {z } finsi finpour finpour k k+1 fintant que finfonction La complexit e de cet algorithme est O(max(m, n)) puisque chaque sommet est vu une fois dans Sk pour une valeur de k correspondant a ` son rang et chaque arc est vu une fois pour les successeurs de chaque sommet.

6.2
6.2.1

Dates au plus t ot et au plus tard


Dates au plus t ot

On utilise la m ethode MPM. Soit G le graphe orient e valu e par une fonction d a ` valeurs dans R+ ; G repr esente les contraintes de pr ec edence dun probl` eme dordonnancement. G a un unique sommet de degr e entrant nul et un unique sommet de degr e sortant nul qui repr esentent respectivement les t aches ctives de d ebut de travaux et de n de travaux. On cherche donc un ordonnancement des travaux qui minimise la dur ee totale des travaux donc la date de n des travaux. Pour quune t ache puisse commencer, il est n ecessaire que toutes les t aches qui la pr ec` edent soient termin ees : on va donc calculer la longueur dun plus long chemin depuis le sommet pour d eterminer cette date que lon appellera date au plus t ot.

Pour une t ache x, la date au plus t ot de x est dtot [x] = max(zx)E (dtot [z ] + d(z )). La dur ee minimale des travaux sera alors la date au plus t ot de la t ache soit la longueur dun plus long chemin depuis jusqu` a . On envisagera deux solutions pour d eterminer cette dur ee minimale : parcourir larborescence des chemins acycliques au moyen dun parcours en profondeur utiliser la fonction rang Cela donne dans le premier cas la proc edure suivante dans laquelle D est un tableau de r eels index e par les sommets de G, P un tableau de sommets index e par les sommets de G et L est une liste de sommets. On initialise D et P par pour chaque sommet z = faire D[z ] ; P [z ] finpour D[] 0 dure Dur proce ee minimale(G : graphe , x : sommet) LL+x pour tout successeur y de x tel que y L faire si D[y ] = ou D[y ] < D[x] + v (x, y ) alors D[y ] D[x] + v (x, y ) ; P [y ] x finsi Dur ee minimale(G , y ) finpour LLx dure finproce Lappel de Dur ee minimale(G, ) donne les valeurs des dates au plus t ot pour chaque t ache ainsi que la dur ee minimale du projet. remarque : la liste L a pour r ole d eviter les circuits mais dans le cas de lordonnancement on peut supposer quelle est inutile. exemple : pour lexemple de la r efection dun amphith ea tre, on a alors t ache D 0 D 0 D 0 D 0 D 0 D 0 D 0 D 0 D 0 P M 0 0 8 0 8 0 8 0 8 0 8 0 8 0 8 T HP 8 8 8 8 8 8 S Mic 12 12 12 12 9 12 9 12 10 16 16 16 16 16

Dans lautre solution, la fonction rang permet d ecrire ecacement la fonction suivante : fonction date au plus t ot(G : graphe ) : entier naturel

dtot [] 0 ; pour chaque sommet x par ordre de rang croissant faire dtot [x] max(zx)E (dtot [z ] + d(z )) ; finpour finfonction

6.2.2

Dates au plus tard et marge totale

Une fois d etermin ee la dur ee minimale du projet, on peut remarquer ques le retard de certaines t aches entra ne un retard global des travaux : ce sont des t aches critiques. Il existe au moins un chemin dit critique dont tous les sommets sont des t aches critiques : cest un plus long chemin de a ` . Au contraire, certaines autres t aches peuvent etre di er ees, dans une certaine limite appel ee marge totale, sans pour autant retarder la n des travaux. Pour calculer cette marge, on va d eterminer la date au plus tard dtard pour chaque t ache en posant dtard [ ] dtot [ ]. On cherche donc le dernier moment auquel ex ecuter une t ache sans provoquer de retard. Pour une t ache x, on d etermine la premi` ere t ache (dans le temps) qui doit lui succ eder et on tient compte alors de la dur ee de x : dtard [x] = min(xy)E (dtard [y ]) d(x)). Cela correspond a ` dtard [x] = dtot [ ] l(x, ) o` u l(x, ) est la longueur dun plus long chemin de x a ` . Le graphe est donc parcouru depuis le sommet et les sommets pour lesquels les dates au plus t ot et au plus tard sont egales correspondent aux t aches critiques. Pour les autres sommets, leur marge totale est obtenue par la di erence entre leurs date au plus tard et date au plus t ot. fonction date au plus tard(G : graphe ) : entier naturel dtard [ ] dtot [ ] ; pour chaque sommet x par ordre de rang d ecroissant faire dtard [x] min(xy)E (dtard [y ]) d(x) ; finpour finfonction exemple : pour le probl` eme de la gure 6.1, on a le tableau des valeurs suivantes : t ache dtot dtard marge P M 0 8 0 8 0 0 T HP 8 8 15 14 7 6 S Mic 12 10 12 15 0 5 16 16 0

Le chemin critique est ici ,P,M,S, .

6.2.3

marge libre

On remarque facilement que lorsquune t ache d ebute a ` sa date au plus tard, elle oblige les t aches suivantes a ` commencer elles aussi a ` leur dates au plus tard.

On peut alors etre int eress e au calcul dune marge dite marge libre qui ne modie en rien le comportement des t aches suivantes ; pour cela, il sut pour chaque t ache de consid erer sa dur ee et sa date au plus t ot pour calculer la date de n de cette t ache puis de comparer cette date de n a ` la date au plus t ot de ses suivantes pour pouvoir envisager de la terminer plus tard dans pour autant retarder le d emarrage de ses suivantes. Cela donne donc fonction marge libre(G : graphe ) : entier naturel marge libre[ ] 0 ; pour chaque sommet x par ordre de rang d ecroissant faire marge libre[x] min(xy)E (dtot [y ]) d(x) dtot [x] ; finpour finfonction exemple : Pour notre exemple on a alors t ache dtot marge libre P M T 0 8 8 0 0 1 HP 8 0 S Mic 12 10 0 5 16 0

remarque : une autre m ethode potentiels etapes (PERT pour Project Evaluation and Review Technique) que lon ne d etaillera pas ici, mod elise chaque t ache par un arc valu e par sa dur ee et dont lorigine repr esente le d ebut de la t ache et le but sa n.

6.3

Algorithme de Bellman

Lalgorithme de Bellman modi e permet de calculer les trois fonctions lorsque le graphe ne contient pas de circuit ce qui est le cas pour ces probl` emes. On utilise un ensemble S de sommets initialis ea ` . Cet ensemble permet de choisir les sommets par ordre de rang croissant sans calculer ce rang. dure Bellman modi proce e (G : graphe ) S S {} ; dtot [] 0 tant que il existe un sommet x S dont tous les pr ed ecesseurs sont dans S faire dtot [x] max(zx)E (dtot [z ] + d(z )) ; S S {x} fintantque S S S { } ; dtard [ ] dtot [ ] tant que il existe un sommet x S dont tous les successeurs sont dans S faire dtard [x] min(xz)E (dtard [z ]) d(x) ; S S {x} fintantque pour chaque sommet x faire marge(x) dtard [x] dtot [x] finpour finfonction

Index
Algorithme Algorithme Algorithme Algorithme Algorithme Algorithme Algorithme Algorithme Algorithme Algorithme Algorithme Algorithme Algorithme PAPS, 41 dEdmonds-Karp, 58 de Bellman, 40 de Dijkstra, 36 de Floyd, 38 de Kruskal, 32 de Moore, 26 de Parcours en largeur, 24 de Parcours en profondeur, 22 de Prim, 33 de Roy-Warshall, 13 de d etection de circuit, 45, 46 de tri topologique, 47 graphe orient e, 6 graphe partiel, 8 graphe planaire, 16 isomorphisme de graphe , 7 isthme, 20, 28 liste dadjacence, 14 matrice dadjacence, 13 ordonnancement, 52 point darticulation, 26, 27 r eseau, 54 rang, 51 sous-graphe, 8 tri topologique, 46

arborescence, 18 arbre, 18, 19 arbre couvrant, 21 bloc, 26 cha ne, 10 chemin, 12 circuit, 12 coloration, 15 composantes connexes, 11 composantes fortement connexes, 43 cycle, 10 degr e, 8 degr e entrant, 9 degr e sortant, 9 diam` etre, 11 distance, 11 ot, 55 graphe graphe graphe graphe biparti, 15 fortement connexe, 12 fortement orientable, 49 non orient e, 5

58

You might also like