You are on page 1of 28

211

Chapitre 7

Graphes valus e
Ce chapitre traite deux probl`mes fondamentaux de loptimisation combinatoire. e La premi`re section est consacre a la recherche dun arbre couvrant de co t e e ` u minimum dans un graphe valu non orient. Nous prsentons un algorithme e e e tr`s gnral fond sur une r`gle des cycles et une r`gle des cocycles puis nous e e e e e e dveloppons deux implmentations particuli`res conduisant aux algorithmes de e e e Kruskal et de Prim. La seconde section dcrit la recherche des chemins de co t e u minimum issus dun sommet dans un graphe orient valu. Nous exposons litrae e e tion fondamentale de Ford, lalgorithme de Dijkstra pour des co ts positifs et u sa variante A, lalgorithme de Bellman pour un graphe sans circuit et enn lalgorithme Paps lorsque aucune hypoth`se particuli`re nest faite sur le graphe e e valu. e

Introduction
La notion darbre de co t minimum intervient chaque fois que lon doit relier au u moindre co t des objets entre eux de telle sorte que tous les objets soient connects u e directement ou non. La notion de chemin de co t minimum intervient chaque fois u que lon doit trouver un cheminement orient dun point a un autre au moindre e ` co t. Ces deux probl`mes sont bien rsolus par des algorithmes polynomiaux u e e ecaces qui utilisent des proprits structurelles fortes des solutions optimales. ee Ces proprits concernent les cycles et les cocycles pour le probl`me de larbre ee e couvrant de co t minimum, les arborescences partielles pour le probl`me des u e chemins de co t minimum. u

Version 6 fvrier 2005 e

212

Chapitre 7. Graphes valus e

7.1
7.1.1

Arbre couvrant de co t minimum u


Dnition du probl`me e e

Soit G = (S, A) un graphe non orient connexe et c : A R une valuation de ses e artes. Si H = (S, F ) est un arbre couvrant de G, son cot not c(H) est dni e u e e par f F c(f ). Le probl`me est de dterminer dans lensemble non vide (car G e e est connexe) des arbres couvrants de G un arbre couvrant de co t minimum. u La gure 1.1 reprsente un nonc du probl`me qui nous servira a illustrer les e e e e ` proprits et les algorithmes qui vont suivre. ee Pour simplier lcriture, nous identierons dans ce chapitre un graphe partiel e (S, U ) de G avec lensemble U de ses artes, on parlera alors du graphe partiel U . e
b 2 2 a 1 h 3 c 2 1 1 1 g 1 i 2 2 2 d 1 1 1 e 2 f

Figure 1.1: Un graphe valu. e

7.1.2

Proprits des arbres optimaux e e

On appelle approximant dun arbre optimal un couple (X, Y ) form par deux e sous-ensembles dartes X et Y tels quil existe un arbre couvrant de co t minie u mum H contenant X et disjoint de Y . Lensemble X contient les artes admises, e lensemble Y contient les artes cartes et lensemble Z = A (X Y ) contient e e e les artes libres. Etant donn un approximant (X, Y ), nous allons montrer que : e e a) lexistence dans G dun cycle candidat ne contenant aucune arte de Y pere met dcarter une arte supplmentaire appartenant au cycle, cest-`-dire de e e e a dterminer un meilleur approximant (X, Y ) o` Y contient une arte de plus e u e que Y . b) lexistence dans G dun cocycle candidat ne contenant aucune arte de X e permet dadmettre une arte supplmentaire appartenant au cocycle, cest-`-dire e e a de dterminer un meilleur approximant (X , Y ) o` X contient une arte de plus e u e que X. Une fois ces proprits tablies, la construction dun arbre couvrant de co t miniee e u mum sera ralise en maintenant un approximant et en lamliorant a chaque e e e ` itration. La gure 1.2 illustre les notions de cycle et de cocycle candidats pour un e Version 6 fvrier 2005 e

7.1. Arbre couvrant de co t minimum u

213

approximant (X, Y ) o` les artes de X sont paisses et les artes de Y en pointill. u e e e e Le cocycle ({e}) est candidat, donc X = X {{e, d}}. Le cycle (h, b, c, h) est candidat, donc Y = Y {{b, c}}.
b 2 a 1 2 h 3 2 1 1 1 g 1 2 2 c 2 d 1 i 1 2 f 1 e

Figure 1.2: Cycle et cocycle candidats.

Lemme 1.1. Soient (X, Y ) un approximant, un cocycle de G ne contenant aucune arte de X et e une arte libre de co t minimal dans ; le couple (X e e u {e}, Y ) est un approximant. Preuve. Soit H un arbre couvrant minimal contenant X et disjoint de Y . Soit T tel que = (T ). Si ne contient aucune arte de X, il contient au moins une e arte libre de Z car dans le cas contraire, larbre H ne serait pas connexe puisque e ne contenant aucune arte incidente a T . Si H contient larte e, alors larbre e ` e H lui-mme rpond aux conditions. Sinon larte e ferme une cha lmentaire e e e ne e e de H qui contient ncessairement une arte e de distincte de e. Le graphe K e e obtenu a partir de H en substituant e a e est un arbre couvrant de G de co t ` ` u infrieur ou gal a c(H) et donc gal a c(H) puisque H est optimal. De plus K e e ` e ` contient les artes de X {e} et est disjoint de Y . e Lemme 1.2. Soient (X, Y ) un approximant, un cycle lmentaire de G ne ee contenant pas darte de Y et f une arte libre de co t maximal dans ; le e e u couple (X, Y {f }) est un approximant. Preuve. Soit H un arbre couvrant minimal contenant X et disjoint de Y . Le cycle ne contenant aucune arte de Y contient au moins une arte libre de Z e e car dans le cas contraire, larbre H contiendrait un cycle. Soit f larte libre de e co t maximal de ce cycle. Si H ne passe pas par f , larbre H lui-mme rpond a u e e ` la question. Sinon le graphe H {f } contient deux composantes connexes dont les graphes induits sont des arbres. La cha lmentaire obtenue a partir de ne e e ` apr`s suppression de f contient une arte f non contenue dans H et incidente a e e ` chacune des deux composantes connexes. Le graphe K obtenu a partir de H par ` substitution de f a f est un arbre couvrant de G de co t infrieur ou gal a c(H) ` u e e ` et donc de co t gal c(H) puisque H est un arbre optimal. De plus K contient u e X et est disjoint de Y {f }. Version 6 fvrier 2005 e

214

Chapitre 7. Graphes valus e

7.1.3

Algorithme gnral e e

Les deux lemmes prcdents nous permettent dnoncer deux r`gles, la r`gle e e e e e des cycles et la r`gle des cocycles, et de construire un algorithme glouton qui e dtermine un arbre couvrant de co t minimum en admettant ou en rejetant un e u arte supplmentaire a chaque itration. Comme dans le paragraphe prcdent, e e ` e e e (X, Y ) est un approximant dun arbre optimal H. R`gle des Cycles : Soit un cocycle candidat ; choisir dans une arte libre e e e de co t minimal ; Z := Z {e} ; X := X {e} . u R`gle des Cocycles : Soit un cycle candidat ; choisir dans une arte libre e e e de co t maximal ; Z := Z {e} ; Y := Y {e}. u Lalgorithme Arbremin(G, c) induit par ces deux r`gles est alors le suivant : e procdure Arbremin(G, c) ; e (X, Y ) := (, ) ; Z := A ; tantque G poss`de un cocycle ou un cycle candidat e appliquer la r`gle correspondante e ntantque. La terminaison de lalgorithme est assure puisqu` chaque itration lensemble e a e X Y contient un lment de plus. Nous montrons qu` lissue de la derni`re ee a e itration le graphe partiel X est un arbre couvrant de co t minimum. e u Thor`me 1.3. Lalgorithme Arbremin(G, c) dtermine un arbre couvrant de e e e co t minimum du graphe G pour la valuation c. u Preuve. (Induction sur le numro ditration) Notons Xk et Yk les sous-ensembles e e X et Y a lissue de litration k. En utilisant les deux lemmes prcdents, il est ` e e e ais de montrer par induction sur k que (Xk , Yk ) est un approximant. Notons e maintenant K le numro de la derni`re itration. Si K = m, le graphe partiel XK e e e est un arbre couvrant de co t minimum car aucune arte nest libre. Si K < m, u e il subsiste dans ZK une arte libre e. Larte e ne peut fermer une cha dune e e ne composante connexe du graphe partiel XK car la r`gle des cycles aurait pu tre e e applique une fois de plus ; larte e ne peut non plus lier deux composantes e e connexes du graphe partiel XK car la r`gle des cocycles aurait pu tre applique e e e une fois de plus. Do` la contradiction. u

7.1.4

Algorithmes spciques e

Nous avons choisi de prsenter, parmi les nombreux algorithmes de recherche dun e arbre couvrant de co t minimum, lalgorithme de Kruskal et lalgorithme de Prim. u Version 6 fvrier 2005 e

7.1. Arbre couvrant de co t minimum u

215

Ces deux algorithmes rel`vent de lalgorithme gnral prsent au paragraphe e e e e e prcdent mais utilisent chacun une stratgie spcique pour lordre dapplication e e e e de la r`gle des cocycles ou de la r`gle des cycles. Nous constaterons galement e e e que moyennant lutilisation de structures de donnes adquates, leur complexit e e e dans le plus mauvais cas est assez faible. Comme dans le paragraphe prcdent, le couple (X, Y ) est un approximant. e e Pour chacun des deux algorithmes, une itration consiste a introduire une arte e ` e supplmentaire dans X ou dans Y . Nous noterons a cet eet Xk , Yk et Zk les e ` e valeurs de X, Y et Z a lissue de la k i`me itration. Par convention nous aurons : ` e X0 = Y0 = et Z0 = A. Algorithme de Kruskal Le principe gnral de lalgorithme de Kruskal est dtablir une liste des artes e e e e ordonne par co t croissant au sens large et dintroduire successivement chaque e u arte de la liste dans lensemble X ou dans lensemble Y en appliquant soit la e r`gle des cocycles soit la r`gle des cycles. e e

procdure Kruskal(G, c) ; e dterminer une liste (e1 , . . . , em ) des artes ordonne par co t croissant ; e e e u (X, Y ) := (, ) ; pour i de 1 a m faire ` si ei lie deux composantes connexes du graphe partiel X alors X := X {ei } sinon Y := Y {ei } nsi npour.

Nous prouvons maintenant que la procdure Kruskal(G, c) dtermine eectivee e ment un arbre couvrant de co t minimum de G. u Thor`me 1.4. Soit G = (S, A) un graphe connexe et c : E R une valuation e e de ses artes, la procdure Kruskal(G, c) dtermine un arbre couvrant de co t e e e u minimum de G pour la valuation c. Preuve. Nous montrons par induction sur le numro ditration k que chaque e e itration consiste a appliquer soit la r`gle des cocycles soit la r`gle des cycles e ` e e si lune des deux est appliquable. A lissue de la premi`re itration, e1 = {a, b} e e lie deux composantes connexes du graphe partiel vide dartes et est une arte e e libre de co t minimal du cocycle ({a}). La premi`re itration applique donc la u e e r`gle des cocycles. Supposons que (Xk1 , Yk1 ) soit un approximant. Si ek lie deux e composantes connexes C et C du graphe partiel Xk1 , larte ek est libre et de e Version 6 fvrier 2005 e

216

Chapitre 7. Graphes valus e

co t minimal dans le cocycle candidat (C ) puisque Xk1 Yk1 = {e1 , . . . , ek1 }, u litration k applique donc la r`gle des cocycles. Sinon, larte ek lie deux sommets e e e dune mme composante connexe C du graphe partiel Xk1 et le graphe induit e par C est un arbre. Larte ek ferme donc une cha du graphe partiel Xk1 et e ne est la seule arte libre (donc de co t maximal) du cycle ainsi cr ; litration k e u ee e applique alors la r`gle des cycles. Puisque Xm Ym = A et Zm = , le graphe e partiel Xm est un arbre couvrant de co t minimum de G pour la valuation c. u La gure 1.3 montre larbre couvrant (artes paisses) de co t minimum calcul e e u e par lalgorithme de Kruskal.
b 2 2 a 1 h 3 c 2 1 1 1 g 1 i 2 d 1 1 2 2 1 e 2 f

Figure 1.3: Arbre couvrant de cot minimum. u

Implmentation de lalgorithme de Kruskal e Lalgorithme de Kruskal manipule essentiellement les composantes connexes du graphe partiel X a travers les oprations de recherche de la composante con` e nexe a laquelle appartient un sommet (chaque extrmit de larte ei ) et dunion ` e e e de deux composantes connexes (si larte ei lie ces deux composantes). Il sagit e donc de grer ces deux oprations sur une collection densembles disjoints. Une e e structure de donnes adapte consiste a reprsenter chaque ensemble par une antie e ` e arborescence dont les sommets reprsentent les lments de lensemble et dont la e ee racine est le reprsentant de lensemble. Si lon note V cette collection, loprateur e e er(v, V) ajoute le nouvel ensemble {v} a V ; loprateur Trouver(v, V) Cre ` e dtermine le reprsentant de lensemble de V auquel appartient v ; enn si u et e e v sont les reprsentants de deux ensembles distincts, loprateur Unir(u, v, V) e e remplace lensemble reprsent par u par lunion des ensembles reprsents par u e e e e et par v, et dtruit lensemble reprsent par v. La derni`re section du chapitre 3 e e e e traite de limplmentation ecace de ces oprateurs et montre en particulier e e que la complexit amortie dune suite de m oprations comportant n oprations e e e Crer est O(m(m, n)) o` (m, n) est une fonction rciproque de la fonction e u e dAckermann. En utilisant cette structure de donnes, une implmentation de lalgorithme de e e Kruskal est la suivante : Version 6 fvrier 2005 e

7.1. Arbre couvrant de co t minimum u

217

procdure Kruskal(G, c) ; e dterminer une liste (e1 , . . . , em ) des artes ordonne par co t croissant ; e e e u {On note ai et bi les extrmits de ei } e e V := ; X := ; pour tout s de S faire Crer(s, V) npour ; e pour i de 1 a m faire ` u :=Trouver(ai , V) ; v :=Trouver(bi , V) ; si (u = v) alors Unir(u, v, V) ; X := X {ei } nsi npour.

La complexit du tri initial est O(m log n). Suivent alors m oprations Creer et e e au plus 2m Trouver et m Unir. Il rsulte des proprits de la fonction (m, n) e ee que la complexit globale est celle du tri des artes, soit O(m log n). e e Lalgorithme de Prim Le principe de lalgorithme de Prim est dappliquer n 1 fois la r`gle des cocycles e a une suite de n 1 cocycles candidats associs a des sous-ensembles embo es de ` e ` t sommets. Le graphe partiel X ainsi obtenu, qui est sans cycles par construction et poss`de n 1 artes, est un arbre couvrant de co t minimum. e e u procdure Prim (G, c) ; e T := {a} ; X := ; Z := A ; {a est un sommet quelconque de S} pour i de 1 a n 1 faire ` choisir une arte {x, y} de co t minimal dans (T ) ; e u {on suppose : x T et y S T } X := X {{x, y}} ; T := T {y} npour ; retourner(X).

Thor`me 1.5. Soit G = (S, A) un graphe connexe et c : A R une valuae e tion de ses artes, la procdure Prim(G, c) dtermine un arbre couvrant de co t e e e u minimum de G pour la valuation c. Preuve. Durant son excution, lalgorithme ncarte aucune arte. Donc, lors de e e e chaque itration, le cocycle (T ) est candidat pour la r`gle des cocycles puisque G e e est connexe et X est inclus dans lensemble des artes du sous-graphe induit par e T ; larte {x, y} est alors larte libre de co t minimal du cocycle (T ). Chaque e e u itration applique donc la r`gle des cocycles. e e Version 6 fvrier 2005 e

218

Chapitre 7. Graphes valus e

La gure 1.4 montre larbre couvrant de co t minimum (artes paisses) calcul u e e e par lalgorithme de Prim.
b 2 2 a 1 h 3 c 2 1 1 1 g 1 i 2 d 1 1 2 2 1 e 2 f

Figure 1.4: Arbre couvrant de cot minimum. u

Implmentation de lalgorithme de Prim e Lopration fondamentale de lalgorithme de Prim est la recherche dune arte de e e co t minimal dun cocycle. Cette opration est applique a une suite de cocycles u e e ` pour laquelle chaque sous-ensemble contient un sommet de plus que le prcdent. e e Une implmentation ecace de ces oprations utilise un tas (voir chapitre 3, e e section 3.4) pour grer les sommets de la bordure B(T ) de T o` chaque sommet e u y de B(T ) est aect dune priorit note p(y) gale au co t minimal dune arte e e e e u e de (T ) dextrmit y. Un sommet de B(T ) est promouvable sil est de priorit e e e minimale. Nous utilisons les oprateurs suivants : Creer, Insrer, Extrairemin, Prie e , Est-lment qui sont respectivement les oprateurs de cration dun orite e e e e tas, dinsertion dun lment, de suppression dun lment de priorit minimum, ee ee e daectation dune nouvelle priorit a un lment et de test dappartenance dun e` ee lment. ee Soit (T ) le cocycle courant a lissue dune itration de lalgorithme de Prim et ` e T le tas associ a B(T ). Nous supposons que le nud de T associ a un sommet e` e` y de B(T ) contient outre la priorit p(y) de y une arte de (T ) dextrmit y et e e e e de co t p(y). Une arte de co t minimal de (T ) est ainsi stocke a la racine de u e u e ` T.

Soit {x, y} larte slectionne lors de litration suivante (x T, y B(T )), la e e e e mise a jour de T et de B(T ) lors de la promotion du sommet y est ralise par la ` e e procdure Promotion ci-dessous : e

Version 6 fvrier 2005 e

7.2. Chemins de co t minimum u

219

procdure Promotion(y, T ) ; e pour tout voisin z de y dans S T faire si Est-lment(z, T ) alors e e si p(z) > c({y, z}) alors Priorit(z, c({y, z}, T )) nsi e sinon Insrer(z, c({z, y}), T ) e nsi npour ; T := T {y}. Lutlisation dun tableau boolen permet de raliser lopration Est-lment en e e e e e temps constant. Lopration Priorit se ralise facilement si la le de priorit est e e e e implmente par un tas. Elle prend alors un temps O(log n) o` n est le nombre e e u dlments du tas. Il est alors possible dimplmenter lalgorithme de Prim en ee e utilisant la promotion comme suit :

procdure Prim-avec-promotion(G, c) ; e Crer(T ) ; e choisir un sommet a de S ; T := {a} ; pour tout voisin v de a faire Insrer(v, c({a, v}), T ) npour ; e pour i de 1 a n 1 faire ` y :=Extrairemin(T ) ; soit {x, y} larte range au nud de T contenant y ; e e X := X {{x, y}} ; Promotion(y, T ) npour.

Chaque itration sur i supprime la racine (complexit O(log n)), met X a jour e e ` (complexit O(1)) et ralise la promotion dun sommet. Pour cette derni`re, et e e e dans le plus mauvais cas, il faudra excuter pour chaque voisin le test dappare tenance au tas et soit une insertion soit une aectation de priorit. Donc le nombre e total de mises a jour du tas T dues aux promotions est en O(m). Il en rsulte ` e que la complexit globale de la procdure Prim(G, c) est O(m log n). e e

7.2

Chemins de co t minimum u

Lorsque les arcs dun graphe orient sont tiquets par des nombres rels qui e e e e peuvent reprsenter des co ts, des distances, des dures . . ., on dnit de mani`re e u e e e naturelle le co t dun chemin comme la somme des tiquettes des arcs successiveu e ment emprunts par ce chemin. Un probl`me important est le calcul ecace dun e e Version 6 fvrier 2005 e

220

Chapitre 7. Graphes valus e

chemin de co t minimum entre deux sommets donns. Comme on peut limaginer u e aisment, ce probl`me intervient dans de tr`s nombreuses applications et joue de e e e plus un rle central dans la rsolution de certains probl`mes plus diciles tels que o e e les ots, les ordonnancements, la programmation dynamique. Dans cette section, nous montrerons, suivant en cela la dmarche unicatrice de Tarjan, que les prine cipaux algorithmes de rsolution sont issus dune mme itration fondamentale, e e e que leur ecacit est lie a lordre dans lequel ces itrations sont excutes et e e ` e e e que pour obtenir une complexit faible, cet ordre doit dpendre des hypoth`ses e e e faites sur les donnes. La plupart des algorithmes de rsolution dterminent en e e e fait pour tout sommet accessible a partir de lorigine un chemin de co t minimum ` u de lorigine a ce sommet. Nous spcierons donc le probl`me sous cette forme. ` e e Dans cette section, le seul algorithme prsent spcique a un sommet origine e e e ` et un sommet destination est lalgorithme appel A . Il sagit dune variante de e lalgorithme de Dijkstra qui utilise une valuation par dfaut suppose connue a e e e priori du co t minimum dun chemin de tout sommet au sommet destination. Cet u algorithme est tr`s utilis pour des graphes de grande taille dnis de mani`re e e e e implicite (probl`mes de recherche en intelligence articielle, programmation dye namique), car il permet dobtenir la solution sans pour autant dvelopper tous e les sommets accessibles a partir de lorigine. `

7.2.1

Dnition du probl`me e e

Soient G = (S, A) un graphe orient, c : A R une valuation des arcs de G e et s un sommet du graphe G appel origine. On suppose que tout sommet est e accessible a partir de s. On appelle co t de larc (x, y) la valeur c(x, y). Le cot ` u u q du chemin = (z0 , . . . , zq ) est la somme c() = k=1 c(zk1 , zk ). Lobjet du probl`me est de dterminer, pour chaque sommet x, le co t minimum not l(s, x) e e u e de s a x. La gure 2.1 reprsente un graphe valu muni dun sommet origine (en ` e e gris). Etant donns deux chemins = (x0 , . . . , xp ) et = (y0 , . . . , yq ) tels que e e
-2
1 1

2
1
3

2 1 3
1

-1

-3

-1

Figure 2.1: Un graphe valu. e y0 = xp , nous appelons concatnation des deux chemins et le chemin not e e =(x0 , . . . , xp1 , y0 , . . . , yq ). Version 6 fvrier 2005 e

7.2. Chemins de co t minimum u

221

7.2.2

Existence dune solution

La question de lexistence dune solution repose sur la notion de circuit absorbant, cest-`-dire ici de circuit de co t strictement ngatif. Si un tel circuit existe, alors a u e pour tout sommet x accessible a partir dun sommet du circuit, il existe un chemin ` de s a x de co t arbitrairement petit obtenu en parcourant le circuit autant de ` u fois que ncessaire. Le circuit (1, 2, 3, 1) est absorbant pour le graphe de la gure e 2.2. La proposition suivante prcise la condition dexistence dune solution. e
1 1 s=0 2 2 1 1 3 -3 2 1 5 1 1 -1 4

Figure 2.2: Un circuit absorbant. Proposition 2.1. Il existe un chemin de co t minimum de lorigine a tout autre u ` sommet si et seulement si le graphe ne poss`de pas de circuit de co t strictement e u ngatif. e Preuve. La condition est bien s r ncessaire. Rciproquement, soit x un sommet u e e quelconque. Lensemble des chemins lmentaires de s a x est dominant pour le ee ` probl`me car le co t dun chemin lmentaire extrait dun chemin de s a x est e u ee ` au plus gal au co t de . Les chemins lmentaires de s a x tant en nombre e u ee ` e ni, il existe un chemin lmentaire de co t minimum. ee u La proposition prcdente nest pas constructive et ne met pas en lumi`re la e e e proprit structurelle fondamentale dun chemin de co t minimum. ee u Proposition 2.2. Soit = (z0 , . . . , zq ) un chemin de co t minimum de x = z0 u a y = zq , tout chemin (zk , zk+1 , . . . , zl ), 0 k l q, est un chemin de co t ` u minimum de zk a zl . ` Preuve. Notons le chemin (zk , zk+1 , . . . , zl ) et soit un chemin de zk a zl tel ` que c() < c(). Le chemin obtenu a partir de en remplaant par est de ` c co t strictement infrieur au co t de . Contradiction. u e u La proprit prcdente qui est lmentaire pour les chemins de co t minimum, ee e e ee u est la base de la programmation dynamique , une technique fondamentale pour rsoudre certains probl`mes doptimisation combinatoire et de contrle optimal. e e o Ici, cette proprit induit une seconde condition ncessaire et susante fonde sur ee e e lexistence dune arborescence partielle constitue de chemins de co t minimum. e u A cet eet, nous appellerons arborescence de chemins minimaux une arborescence partielle de G dont la racine est s et dont chaque chemin de s a x est un chemin ` de co t minimum de s a x dans G. u ` Version 6 fvrier 2005 e

222

Chapitre 7. Graphes valus e

Proposition 2.3. Si G na pas de circuits absorbants, G poss`de une arborese cence des chemins minimaux. Preuve. Appelons pr-arborescence des chemins minimaux un sous-graphe A = e (T, B) de G qui est une arborescence de racine s telle que pour tout sommet t de T , le chemin dans A de s a t est de co t minimum dans G. Nous montrons la ` u condition par construction itrative dune arborescence des chemins minimaux, a e ` partir de la pr-arborescence des chemins minimaux A0 = ({s}, ). On dtermine e e a ltape k une pr-arborescence des chemins minimaux Ak qui couvre au moins ` e e un sommet de plus que Ak1 . Soient donc (voir gure 2.3)
s=z 0 Arborescence A

z1

y=zp

Arborescence B

x=z q

Figure 2.3: Construction dune arborescence des chemins minimaux. A = (T, B) une pr-arborescence des chemins minimaux telle que S T = e , x un sommet de S T , = (z0 , . . . , zq ) un chemin (lmentaire) de co t minimum de s = z0 a ee u ` x = zq dans G, y = zp le dernier sommet de appartenant a T , ` le sous-chemin (z0 , . . . , zp ), le sous-chemin (zp , . . . , zr ) (r {p + 1, .., q}), le chemin de s a y dans A. ` Les deux chemins et ont le mme co t dapr`s la proposition 2.2. Donc, e u e pour tout r {p + 1, .., q}, le chemin est de co t minimum dans G. De plus u si T = T {zp+1 , . . . , zq } et B = B {(zj , zj+1 ) | j = p, .., (q 1)}, alors le sous-graphe A = (T , B ) est une pr-arborescence des chemins minimaux qui e couvre au moins un sommet de plus que A. Il en rsulte quapr`s au plus n 1 e e itrations, on obtient une arborescence des chemins minimaux. e La plupart des algorithmes de recherche dun chemin de co t minimum cherchent u a construire par ajustements successifs une arborescence des chemins minimaux. ` Version 6 fvrier 2005 e

7.2. Chemins de co t minimum u

223

En chaque sommet x, ils font dcro une valuation par exc`s (x) du co t e tre e e u minimum dun chemin de s a x qui est gale a la valeur dun chemin de s ` e ` a x. Le prdcesseur de x sur ce chemin, appel p`re de x et not p(x), est ` e e e e e galement maintenu. Lors de la terminaison de lalgorithme, les arcs de lensemble e {(p(x), x) | x S {s}} constituent une arborescence des chemins minimaux de G. Ces algorithmes utilisent comme test darrt la caractrisation suivante dune e e arborescence des chemins minimaux : Proposition 2.4. Soit A une arborescence partielle de racine s et soit (x) le co t du chemin de s a x dans A. Larborescence A est une arborescence des u ` chemins minimaux si et seulement si pour tout arc (x, y) de G on a : (x) + c(x, y) (y). Preuve. La condition ncessaire est immdiate. Rciproquement, soit un chemin e e e de s a y. En sommant les ingalits (de la proposition) vries par pour tous les ` e e e e arcs de , il vient : (y) (s) c() ou encore, puisque (s) = 0 : (y) c(). Le chemin de s a y dans A est donc de co t minimum dans G. ` u

7.2.3

Itration fondamentale e

Soit : S R {+} une fonction telle que si (x) R, (x) soit la valeur dun chemin lmentaire de s a x. Un sommet x est dit valu si (x) R. ee ` e e Un arc (x, y) est dit candidatsi (x) + c(x, y) < (y) et lon note C lensemble des arcs candidats. Litration fondamentale, due a Ford, choisit un arc candidat e ` (x, y) et excute la mise a jour des fonctions p et : e ` procdure Ajuster-arborescence( x, y) ; e (y) := (x) + c(x, y) ; p(y) := x. La gure 2.4 rsume la transformation lmentaire ralise a chaque itration. e ee e e ` e

z x
avant l'itration

z y x
aprs l'itration

Figure 2.4: Litration de Ford. e Avant cette itration on a : (x) + c(x, y) < (y), p(y) = z et (z) + c(z, y) = e (y). Apr`s cette itration on a : (x) + c(x, y) = (y), p(y) = x et (z) + e e c(z, y) > (y). La procdure Ajuster-candidats(x, y) ci-dessous dnit le e e nouvel ensemble darcs candidats. Version 6 fvrier 2005 e

224

Chapitre 7. Graphes valus e

procdure Ajuster-candidats( x, y) ; e C := C {(x, y)} ; pour tout successeur z de y faire si (y) + v(y, z) < (z) alors C := C {(y, z)} npour.

7.2.4

Algorithme de Ford

Lalgorithme de Ford fond sur la proposition prcdente peut tre implment e e e e e e par la procdure suivante : e procdure Ford(G, s) ; e (s) := 0 ; p(s) := ; C := ; pour tout sommet x de S {s} faire (x) := + ; p(x) := npour ; pour tout successeur z de s faire C := C {(s, z)} ; tantque C = faire choisir un arc (x, y) dans C ; Ajuster-arborescence( x, y) ; Ajuster-candidats( x, y) ntantque ; retourner(p, ). Le thor`me suivant garantit la validit de la procdure Ford lorsque G ne e e e e poss`de pas de circuit absorbant. e Thor`me 2.5. Si le graphe G ne poss`de pas de circuit absorbant, la procdure e e e e Ford(G, s) se termine et a lissue de la derni`re itration, la fonction p dnit ` e e e une arborescence de chemins minimaux. Preuve. Si le graphe G ne poss`de pas de circuit absorbant, on montre aisment e e les proprits a) et b) suivantes par induction sur le numro ditration : ee e e a) si (x) est ni, il existe un chemin lmentaire de s a x de co t (x) ; ee ` u b) la restriction de la fonction p aux sommets valus est une arborescence pare e tielle du sous-graphe de G induit par les sommets valus telle que pour e e tout sommet valu y distinct de la racine (p(y)) + c(p(y), y) = (y). e e Si une itration porte sur un arc candidat (x, y) tel que y est valu, la valeur e e e (y) dcro dune quantit gale a la dirence (strictement positive) des co ts e t e e ` e u Version 6 fvrier 2005 e

7.2. Chemins de co t minimum u

225

de deux chemins lmentaires distincts de s a y. La valeur est donc minore par ee ` e lcart positif minimum entre les co ts de deux chemins lmentaires de co ts e u ee u distincts. Le rel est strictement positif car lensemble des chemins lmentaires e ee de G est ni, le nombre total de mises a jour de la fonction pour le sommet y ` est donc ni . Il en rsulte que la procdure se termine. e e Lors de la terminaison, tous les sommets sont valus, car si un sommet y ne e e ltait pas, il resterait au moins un arc candidat sur tout chemin de s a y. De e ` plus, aucun arc (x, y) ntant candidat, la fonction p`re dnit un arborescence e e e des chemins minimaux de G. Le thor`me prcdent garantit la validit de lalgorithme de Ford si le graphe e e e e e G ne poss`de pas de circuit absorbant. Cependant, en laissant totalement libre e lordre des itrations, cest-`-dire le choix des arcs candidats, la convergence peut e a tre tr`s lente. Pour certains graphes valus a m arcs, il est possible dexcuter e e e ` e m jusqu` 2 itrations. a e Pour obtenir une complexit polynomiale, la plupart des algorithmes regroupent e les arcs ayant la mme origine. Une itration encore appele examen dun some e e met consiste alors a choisir un sommet et a excuter la procdure Ajuster` ` e e arborescence pour tous les arcs candidats incidents extrieurement a ce some ` met. Il sera commode, pour analyser les dirents algorithmes, de distinguer trois tats e e pour un sommet. On ouvre un sommet x chaque fois que son valuation dcro on e e t, le ferme a lissue de chaque excution de Examiner, il reste libre tant quil nest ` e pas valu. Initialement, le sommet s est ouvert et tous les autres sommets sont e e libres. Nous noterons respectivement O, F et L les sous-ensembles des sommets ouverts, ferms et libres. Les procdures Ouvrir(x) et Fermer(x) ralisent les e e e mises a jour des ensembles O, F et L induites par louverture et la fermeture du ` sommet x. La procdure Init( G, s) ouvre le sommet s et lib`re tous les autres e e sommets. La gure 2.5 reprsente lautomate des transitions possibles entre ces trois tats. e e La procdure Examiner(x) implmente lexamen dun sommet qui constitue e e
libre ouvert ferm

Figure 2.5: Le graphe des tats dun sommet. e maintenant une itration. e

Version 6 fvrier 2005 e

226

Chapitre 7. Graphes valus e

procdure Examiner(x) ; e pour tout successeur y de x faire si (x) + c(x, y) < (y) alors Ajuster-arborescence( x, y) ; ouvrir(y) nsi npour ; Fermer(x). Pour obtenir un algorithme ecace, il convient de faire en sorte quun sommet ferm ne puisse plus (ou du moins le moins souvent possible) redevenir ouvert. e Nous allons analyser deux cas particuliers pour lesquels les itrations peuvent e tre ordonnes de telle sorte que tout sommet ferm reste ferm. e e e e

7.2.5

Graphe sans circuit

Soient G un graphe sans circuit et L = (s1 , . . . , sn ) une liste topologique des sommets de G telle que s1 = s. Proposition 2.6. Lalgorithme Bellman(G, s) examine les sommets une fois et une seule dans lordre de la liste.

procdure Bellman(G, s) ; e Init( G, s) ; pour k de 1 a n faire Examiner(sk ). ` Preuve. Lors de litration k (k 2), le sommet sk nest pas libre car le sommet e sk (accessible a partir de s dans G) poss`de un prdcesseur si (i < k) plac ` e e e e avant lui dans la liste et qui a t examin. Apr`s lexcution de Examiner(sk ), ee e e e le sommet sk est ferm et tous les sommets si (i < k) restent ferms puisque seuls e e les (sj ) (j > k) ont pu dcro lors de cette itration. e tre e

7.2.6

Algorithme de Dijkstra

Si les co ts sont positifs ou nuls, la r`gle qui consiste a examiner un sommet u e ` ouvert dvaluation minimale conduit a un algorithme ecace d a Dijkstra. e ` u ` Lalgorithme est alors dcrit par la procdure ci-dessous o` init(G, s) initialise e e u O, L et F .

Version 6 fvrier 2005 e

7.2. Chemins de co t minimum u

227

procdure Dijkstra(G, s) ; e Init(G, s) ; rpter n 1 fois e e choisir un sommet ouvert x dvaluation minimale ; e Examiner(x) nrpter. e e La validit de cet algorithme repose sur sur la proprit suivante : e ee Thor`me 2.7. Lvaluation du sommet ouvert x choisi a chaque itration est e e e ` e le co t minimum dun chemin de s a x dans G. u ` Preuve. (Induction sur le numro ditration.) Le co t minimum dun chemin e e u de s a s est nul puisque le co t de tout circuit est positif ou nul. La proprit ` u ee est donc vraie pour la premi`re itration. Soit x le sommet ouvert choisi lors de e e litration i (i > 1) et F lensemble des sommets examins avant litration i. e e e Remarquons que dapr`s linduction, tout sommet t de F a t choisi lors dune e ee itration antrieure a i et est rest ferm depuis en conservant une valuation gale e e ` e e e e au co t minimum dun chemin de s a t dans G. Il rsulte alors de la procdure u ` e e Examiner que pour tout sommet y de S F , on a avant litration i : e si y F l(s, y) (y) = min{l(s, z) + c(z, y) | z F et (z, y) A} si y O + si y L. Soit = (z0 , . . . , zq ) un chemin quelconque de s a x et (zk1 , zk ) le dernier arc de ` tel que zk1 F et zk F . On a donc avant litration i : e c() (zk1 ) + c(zk1 , zk ) (zk ) (x) dapr`s linduction, la positivit des co ts, la relation prcdente et le choix de e e u e e x. Il en rsulte que (x) est le co t minimum dun chemin de s a x dans G et e u ` que pour lun des ces chemins, tous les sommets, sauf le dernier, appartiennent a ` F. Proposition 2.8. Lalgorithme Dijkstra slectionne les sommets dans lordre e croissant (au sens large) des co ts minimaux. u Preuve. Raisonnons par induction sur le numro ditration et notons t le dernier e e sommet ferm avant litration i. Nous avons par induction pour tout sommet z e e de T : (z) (t) et (x) (t) puisque le sommet x na pas t choisi avant ee litration i . e Les gures 2.6 et 2.7 dcrivent une excution de lalgorithme. Les sommets ferms e e e sont noirs, les sommets ouverts sont gris, le sommet ouvert slectionn est doue e blement cercl, les sommets libres sont blancs et lvaluation dun sommet gure e e Version 6 fvrier 2005 e

228
2
1 1

Chapitre 7. Graphes valus e


5

1 3

2 1 3
1

0
3

1 1
3

1
1

2
3

5
1 2

1 1 3
1

0
3

1
1
3

Figure 2.6: Graphe initial et premi`re itration. e e

1
1

2
1 3

5
2

2 1 3
1

0
3

1
1
3

6
2

3 1
1

2 2

2
1 3

5
2

2 1 3
1

0
3

1
1
3

4
4

6
2

Figure 2.7: Les deux itrations suivantes. e a lintrieur de ce sommet si elle est nie. Lvolution compl`te de lensemble O, ` e e e du sommet slectionn x et de la fonction est donne dans le tableau ci-dessous e e e

Version 6 fvrier 2005 e

7.2. Chemins de co t minimum u

229

(la derni`re colonne est le co t minimum l(0, x) de lorigine 0 au sommet x) : e u O x {0} 0 (0) = 0 0 {1, 2, 3, 4} 1 (1) = 1, (2) = 1, (3) = 3, (4) = 2 1 {2, 3, 4, 8} 2 (4) = 2, (2) = 1, (3) = 3, (8) = 6 1 {3, 4, 8, 5, 6, 9} 4 (4) = 2, (8) = 6, (3) = 3, (5) = 4, (6) = 4, (9) = 5 2 {3, 8, 5, 6, 9, 7} 3 (7) = 7, (8) = 6, (3) = 3, (5) = 4, (6) = 4, (9) = 5 3 {8, 5, 6, 9, 7} 5 (7) = 7, (8) = 6, (5) = 4, (6) = 4, (9) = 5 4 {8, 6, 9, 7} 6 (7) = 6, (8) = 5, (6) = 4, (9) = 5 4 {8, 9, 7} 8 (7) = 6, (8) = 5, (9) = 5 5 {9, 7} 9 (7) = 6, (9) = 5 5 {7} 7 (7) = 6 6 Proposition 2.9. Lalgorithme de Dijkstra dtermine les chemins de co t mie u nimum du couple (G, s) en temps O(m log n). Preuve. Si nous appelons bordure de F lensemble not B(F ) des sommets (ncese e sairement ouverts) de S F qui poss`dent au moins un prdcesseur dans F , et e e e si nous associons a chaque lment x de B(F ) une priorit gale a son valuation ` ee ee ` e (x), nous constatons qu` chaque itration de lalgorithme, il faut essentiellea e ment dterminer un lment z de B(F ) de priorit minimale, supprimer z de e ee e B(F ), insrer dans B(F ) les successeurs de z qui ne lui appartiennent pas dj` e ea et modier ventuellement la priorit des successeurs de z qui appartiennent a e e ` B(F ). La gestion de B(F ) par un tas, tout a fait analogue a celle tudie pour ` ` e e implmenter lalgorithme de Prim, dmontre la proposition. e e

7.2.7

Algorithme A.

Nous prsentons dans ce paragraphe une variante de lalgorithme de Dijkstra e adapte au cas o` il sagit de dterminer dans un graphe dont les arcs sont valus e u e e par des co ts positifs ou nuls un chemin de co t minimum entre un sommet u u origine s et un sommet destination p.On suppose que lon dispose initialement pour chaque sommet x dune valuation par dfaut note h(x) du co t minimum e e e u l(x, p) dun chemin de x a p. Lide fondamentale de lalgorithme A est alors ` e dassocier a chaque sommet x une approximation de l(s, p), note f (x), qui tient ` e compte de la cible p par le biais de lvaluation par dfaut h(x) et dexaminer en e e priorit un sommet ouvert dapproximation minimale. e La procdure A*(G, s, p, h) ci-dessous dcrit cet algorithme. e e

Version 6 fvrier 2005 e

230

Chapitre 7. Graphes valus e

procdure A*(G, s, p, h) ; e Init(G, s) ; f (s) = h(s) ; O := {s} ; x := s ; tantque x = p faire Examiner*(x) ; x := sommet ouvert dapproximation f (x) minimale ntantque. La procdure Examiner*(x) ne se distingue de la procdure Examiner(x) que e e par la mise a jour de lapproximation des nouveaux sommets ouverts. ` procdure Examiner*(x) ; e pour tout successeur y de x faire si (x) + c(x, y) < (y) alors Ajuster-arborescence( x, y) ; ouvrir(y) ; f (y) := (y) + h(y) nsi npour ; Fermer(x). Le tableau suivant montre lvolution de lensemble des sommets ouverts sur e le graphe valu de la gure 2.8 pour lequel s = 1 et p = 7. Sur cette gure, e lvaluation par dfaut initiale et les valeurs successives de lapproximation sont e e inscrites a ct de chaque sommet. ` oe k 1 2 3 4 5 6 7 O {1} {2, 3, 4} {2, 4, 6} {3, 4, 6} {4, 6} {4, 7}
6 4 s=1 0 2 3 5 3,5,4 4 5,10 5 2 1 1 3 0 5 7

La validit de lalgorithme A repose sur le fait que lapproximation du sommet e


4,7,6 6 6

0,8 0 sommets examins: 1,3,2,3,6,7

Figure 2.8: Un graphe valu et la fonction h. e examin a chaque itration est une valuation par dfaut de l(s, p). Lorsque le e ` e e e sommet p lui-mme est examin, son approximation vaut f (p) = (p) et est donc e e gale a l(s, p). e ` Version 6 fvrier 2005 e

7.2. Chemins de co t minimum u

231

Proposition 2.10. Lors de chaque itration, lapproximation f (x) du sommet e examin est une valuation par dfaut de l(s, p). e e e Preuve. Soit = (x0 , . . . , xr ) un chemin de cot minimum de s a p. Nous monu ` trons dabord par induction qu` lissue de chaque itration, il existe un entier k a e tel que : a) tout sommet xi du sous-chemin (x0 , . . . , xk ) est ferm et satisfait (xi ) = e l(s, xi ) ; b) le sommet xk+1 est ouvert et satisfait (xk+1 = l(s, xk+1 ). Remarquons dabord que le sommet s = x0 reste ferm car tout circuit passant e par s est de co t positif ou nul. Il en rsulte que linvariant est vrai a lissue de u e ` la premi`re itration. Soit maintenant z le sommet examin lors de litration i, e e e e et k lentier associ par linvariant a lissue de litration i 1. Tout sommet xi e ` e du sous-chemin (x0 , . . . , xk ) reste ferm puisque (xi ) = l(s, xi ). Si z = xk+1 , e le sommet xk+1 reste ouvert et linvariant est vrai pour lentier k a lissue de ` litration i. Si z = xk+1 , le sommet xk+1 devient ferm. Considrons alors le e e e sous-chemin (xk+1 , . . . , xr ) a lissue de litration en cours. Ses sommets ntant ` e e pas tous ferms puisque xr est ouvert, notons xj son premier sommet ouvert. e Tous les sommets xi de (xk+1 , . . . , xj1 ) sont ferms et vrient par dnition e e e (xi ) = l(s, xi ). On a galement (xj ) = l(s, xj ) puisque le sommet xj1 a e t examin. Linvariant est donc vrai pour lentier j 1. Linvariant est donc ee e conserv. e Considrons alors le sommet xk+1 o` k est lentier associ par linvariant a e u e ` litration en cours. On a : e f (xk+1 ) = (xk+1 + h(xk+1 ) = l(s, xk+1 ) + h(xk+1 ) l(s, p). Le sommet x examin tant un sommet ouvert dapproximation minimale, il e e satisfait aussi f (x) l(s, p). La proposition prcdente nous permet de conclure que lalgorithme A*(G, s, p, h) e e converge vers la solution. En eet, sa terminaison est assure puisque son principe e est litration de Ford et quil nexiste pas de circuits absorbants. De plus lorsque e le sommet ouvert p est examin, son approximation f (p) satisfait l(s, p) f (p) = e (p) l(s, p). Lalgorithme A ne di`re de lalgorithme de Dijkstra que par le choix du sommet e ouvert a examiner. En particulier si la fonction dvalution par dfaut h est nulle ` e e en tout sommet, les deux algorithmes sont identiques. De mani`re plus ne, on e peut montrer que si la fonction h satisfait lhypoth`se de consistance : e x, y S, h(x) l(s, y) + h(y)

alors comme dans lalgorithme de Dijkstra, le nouveau sommet examin est celui e dvaluation minimale et donc restera ferm. e e Version 6 fvrier 2005 e

232

Chapitre 7. Graphes valus e

Lalgorithme A peut tre ecace dans le cas de graphes de grande taille dnis de e e mani`re implicite pour lesquels on dispose dune bonne fonction dvaluation par e e dfaut. En eet, dans ce cas, certains sommets ouverts dont lapproximation est e de valeur leve nauront pas t examins lors de la terminaison de lalgorithme. e e ee e

7.2.8

Algorithme paps

Nous prsentons dans ce paragraphe un algorithme pour le cas o` les co ts sont e u u des nombres rels quelconques. Sa particularit essentielle est dexaminer le some e met ouvert le plus ancien. Cet algorithme fournit bien entendu la solution du probl`me en labsence de circuits absorbants mais permet galement de dceler la e e e prsence dun tel circuit lorsque le probl`me na pas de solution. Lensemble des e e sommets ouverts est gr dans lordre premier arriv premier servi au moyen ee e dune le. La procdure gnrale paps(G, s) dans laquelle la le est note e e e e implmente cet algorithme. e procdure paps(G, s) ; e Init(G, s) ; filevide() ; enfiler(s, ) ; n() := 1 ; k := 0 ; tantque nest pas vide et k n 1 faire tape ; k := k + 1 e ntantque ; si nest pas vide alors acher circuit absorbant . La procdure tape consiste a examiner tous les sommets prsents dans la le a e e ` e ` lissue de ltape prcdente. On suppose que le nombre dlments dans la le, e e e ee not n() est maintenu lors de chaque mise a jour. e ` procdure etape ; e pour j de 1 a n() faire ` filer() ; x :=de Examiner(x) npour. Le tableau suivant montre lvolution de lensemble des sommets ouverts pour e le graphe valu de la gure 2.9. Sur cette gure, les valuations successives dun e e sommet sont inscrites a cot de ce sommet. ` e k 1 2 3 4 5 6 O {0} {1, 2, 3} {5, 1, 6, 4} {6, 5, 3} {6} Version 6 fvrier 2005 e

7.2. Chemins de co t minimum u


1,0 1 1 1 -1 2 0 1 2 1 2 2,1 3 0 0 4 2 5 3,2

233

-1 6 1 3,2,1

s=0

1,0

Figure 2.9: Les valuations de lalgorithme paps. e Pour analyser lalgorithme paps(G, s), nous allons considrer lensemble not Ok e e des sommets ouverts au dbut de ltape k. Nous notons alors Ck (x) lensemble e e (ni) des chemins de s a x de longueur infrieure ou gale a k et k (x) le co t ` e e ` u minimum dun chemin de Ck (x) (par convention k (x) = + si Ck (x) est vide). Linvariant suivant est alors conserv : e Thor`me 2.11. Au dbut de ltape k, lvaluation (x) dun sommet x est e e e e e gale au co t minimum dun chemin de Ck (x). Un sommet x est ouvert si et e u seulement si tout chemin de co t minimum de Ck (x) poss`de exactement k arcs. u e Preuve. (Induction sur k.) La proposition est vraie par dnition pour k = 0. e Soit alors x un sommet tel que Ck+1 (x) ne soit pas vide. Au dbut de ltape e e k + 1, on a : k+1 (x) = min{k (x), min{k (y) + c(y, x)|y Ok (x)}}. Sil existe un chemin de longueur infrieure ou gale a k de co t minimum dans e e ` u Ck+1 (x), on a dapr`s linduction k+1 (x) = k (x) = k+1 (x). Supposons maine tenant que tout chemin de co t minimum dans Ck+1 (x) soit de longueur k + 1. u Soit un tel chemin et (y, x) le dernier arc de . Tout chemin de co t miniu mum de Ck (y) est de longueur k, donc dapr`s linduction y Ok (x) et e k+1 (x) = k+1 (x). Enn si Ck+1 (x) = alors k+1 (x) = k+1 (x) = +. Un sommet x appartient a Ok+1 si k+1 (x) < k (x). Soit alors un chemin ` de co t minimum dans Ck+1 (x). Si est de longueur infrieure ou gale a k, u e e ` nous avons k (x) c() = k+1 (x). Il en rsulte que tout chemin de co t e u minimum dans Ck+1 (x) est de longueur k + 1. Rciproquement, si tout chemin e de co t minimum de Ck+1 (x) est de longeur k + 1, alors, dapr`s linduction, on u e a k+1 (x) < k (x) et x est bien un sommet ouvert au dbut de ltape k + 1 e e (cest-`-dire x Ok+1 ). a

Nous considrons maintenant le cas o` lon ne sait pas a priori si le graphe valu e u e (G, c) contient ou non un circuit absorbant. La proposition suivante permet alors de dceler lexistence ventuelle dun tel circuit. e e Version 6 fvrier 2005 e

234

Chapitre 7. Graphes valus e

Proposition 2.12. Si au dbut de ltape n, lensemble des sommets ouverts e e nest pas vide, le graphe valu (G, c) poss`de un circuit absorbant. e e Preuve. Dapr`s le thor`me prcdent, On est lensemble des sommets x pour e e e e e lesquels tout chemin de co t minimum de Cn (x) poss`de exactement n arcs. Si le u e graphe valu (G, c) ne possdait pas de circuit absorbant, il existerait un chemin e e lmentaire de co t minimum de s a x et donc de co t minimum dans Cn (x). ee u ` u Le tableau suivant montre lvolution de lensemble des sommets ouverts pour le e graphe valu de la 2.10. Le circuit (3, 2, 4, 3) est absorbant. e k 0 1 2 3 4 5 6 7 O {0} {1, 2, 3} {5, 1, 6, 4} {6, 5, 3} {2, 6} {1, 4} {3, 5} {2, 6} La complexit dune tape quelconque de lalgorithme Paps(G, s) est en O(m) e e
1,0,-1 1 0 s=0 1 1 -1 2 1 2 2,-1,-2 3 -2 4 1,0 0 2 0 1,0 2 5 3,2,1

-1 6 1 3,2,1

Figure 2.10: Lalgorithme paps avec un circuit absorbant. puisque un sommet est examin au plus une fois. Comme lalgorithme excute au e e maximum n tapes, sa complexit est O(mn). e e

Notes
La prsentation unie des algorithmes concernant les arbres couvrants de co t e e u minimum par lemploi de la r`gle des cocycles et de la r`gle des cycles est due a e e ` R.E. Tarjan. Il en est de mme de la prsentation des algorithmes de recherche e e des chemins de co t minimum en tant que variantes de lalgorithme gnrique u e e de Ford : R.E. Tarjan, Data Structures and Network Algorithms, SIAM Philadelphia, 1983, chapitres 6 et 7, 7195. Les algorithmes sur les arbres couvrant de co t minimum sont assez anciens. u Par contre leur complexit a plus rcemment t amliore par lutilisation de e e ee e e structures de donnes adaptes comme la gestion des partitions dun ensemble e e pour lalgorithme de Kruskal et les les de priorit pour lalgorithme de Prim. e Version 6 fvrier 2005 e

Exercices

235

Si lon restreint lensemble des arbres couvrants admissibles en ajoutant des contraintes supplmentaires, le probl`me devient en gnral beaucoup plus dicile. e e e e Si, par exemple, on limite le degr des sommets, le probl`me est alors NP-dicile e e sauf si le degr dun seul sommet est limit. e e Les algorithmes de recherche de chemins de co t minimum ont t tr`s tudis. u ee e e e Ils interviennent en eet de mani`re centrale dans beaucoup dautres domaines e comme les ots ou les ordonnancements. Ajouter des contraintes au probl`me de e base le rend souvent beaucoup plus complexe. Par exemple, rechercher un chemin lmentaire de co t minimum entre deux sommets dun graphe valu quelconque ee u e est un probl`me NP-dicile. e

Exercices
7.1. Soit G = (S, A) un graphe non orient connexe valu par une fonction co t e e u c : A R. Soit H = (S, B) un graphe partiel non connexe de G. On appelle arte e de liaison entre deux composantes connexes C et C de H un arte qui a lune de e ses extrmits dans C et lautre dans C . Soit C une composante connexe de H, e e (C) le cocycle associ a C et e une arte de co t minimal de (C). e` e u a) Dmontrer quil existe un arbre couvrant de co t minimum de G qui contient e. e u On consid`re lalgorithme de Sollin dcrit par la procdure ci-dessous : e e e procdure Sollin(G, c) ; e H := (S, ) ; tantque H nest pas connexe faire soient C1 , . . . , Cp les composantes connexes de H ; {les Ck ne sont pas marques au dpart} ; e e tantquil existe une composante connexe Ck non marque faire e marquer(Ck ) ; soit e = {x, y} une arte de co t minimum dans (Ck ) ; e u {x est lextrmit de e qui appartient a Ck } e e ` soit Cl la composante connexe contenant y ; marquer(Cl ) ; ajouter larte e a H e ` ntantque ntantque. b) Dmontrer que lalgorithme prcdent applique la r`gle des cocycles a chaque e e e e ` itration de la boucle tantque interne. e c) En dduire que lors de la terminaison, H est un arbre couvrant de co t minie u mum. 7.2. Soit G = (S, A) un graphe orient complet a n sommets et valu par une e ` e fonction co t c : A N telle que : u Version 6 fvrier 2005 e

236

Chapitre 7. Graphes valus e

1. x, y S, c(x, y) = c(y, x) ; 2. x, y, z S, c(x, y) + c(y, z) c(x, z). Un tour t = (t1 , . . . , tn ) de G est une permutation de S et le co t c(t) du tour t u est la somme :
n1

c(tn , t1 ) +
k=1

c(tk , tk+1 ).

On note G la version non oriente de G o` le co t c (x, y) de larte {x, y} est gal e u u e e a c(x, y). Soient H un arbre couvrant de co t minimum de G , P = (p1 , . . . , pn ) ` u un parcours en profondeur de G a partir du sommet s et t le tour de G associ a ` e` P . On note c (H) le co t de larbre H et c (G) le co t minimum dun tour de G. u u a) Dmontrer que c (G) > c (H). e b) Dmontrer que c(t) 2c (H). e c) Obtient-on le mme rsultat avec un parcours en largeur de H ? e e 7.3. On consid`re le probl`me de transport monoproduit dni par m foure e e nisseurs Fi et n clients Cj . Le fournisseur Fi dispose dun stock ai N, le client Cj a une demande bj N et lon suppose que ai = bj . Le co t unitaire de u transport du fournisseur Fi au client Cj est un entier naturel cij . Le graphe valu e G associ au probl`me a pour sommets les m fournisseurs et les n clients et ses e e arcs sont les couples (Fi , Cj ) valus par cij . Un plan de transport X = (xij ) est e une solution du syst`me : e xij = ai
j{1,...,n}

i {1, . . . , m} j {1, . . . , n}

xij = bj
i{1,...,m}

xij 0 i {1, . . . , m} j {1, . . . , n} et le co t c(X) du plan X est i{1,...,m},j{1,...,n} cij xij . La matrice du syst`me u e est note M . e a) Dmontrer quil existe un plan de transport optimal entier. e b) Dmontrer que le rang de M est m + n 1. e On appelle solution de base un ensemble de m + n 1 colonnes indpendantes e de M .

c) Montrer que le graphe partiel des arcs (Fi , Cj ) associs a ces colonnes est un e ` arbre couvrant de G. La rciproque est-elle vraie ? e Soit H un arbre couvrant de co t minimum de G. Soit B(H) la solution de base u associe a H (si elle existe). e ` d) Montrer quil existe un seul plan de transport tel que xij = 0 pour (Fi , Cj ) B(H). Montrer que ce plan nest pas ncessairement optimal. e 7.4. Dterminer un graphe valu a m arcs muni dun sommet origine s tel que e e` lalgorithme gnrique de Ford ralise dans le plus mauvais cas O(2m ) itrations. e e e e Version 6 fvrier 2005 e

Exercices

237

7.5. Soit G = (S, A) un graphe, soit s un sommet origine et soit c : A N une fonction capacit. La capacit dun chemin est la plus petite capacit des e e e arcs de ce chemin. Adapter lalgorithme de Dijkstra a la recherche des chemins ` de capacit maximale de s a tous les autres sommets de G. e ` 7.6. On consid`re lalgorithme A prsent dans la section 7.2.6. Dmontrer que e e e e si la fonction dvaluation par dfaut h satisfait : e e (x, y) A, h(x) c(x, y) + h(y),

un sommet examin restera ferm jusqu` la terminaison de lalgorithme. e e a 7.7. On consid`re lalgorithme gnrique de Ford et lon note E lensemble e e e des sommets examins. Dmontrer que les invariants suivants sont conservs a e e e ` chaque itration : e si (x) est ni, il existe un chemin lmentaire de s a x de co t (x) ; ee ` u la restriction de la fonction p`re aux sommets de E est une arborescence e partielle du sous-graphe de G induit par E telle que pour tout sommet y de E distinct de la racine (p(y)) + c(p(y), y) = (y). 7.8. On appelle graphe conjonctif un graphe orient G = (S, A) valu par c : e e A R, muni dune racine et dune anti-racine , et tel quil existe pour tout sommet x un chemin positif ou nul de a x et de x a . Un ensemble de potentiels ` ` dun graphe conjonctif G est une application t : S R satisfaisant t() = 0 et : (x, y) A, t(y) t(x) c(x, y)

On note T (G) lensemble des ensembles de potentiels de G. a) Dmontrer que T (G) est non vide si et seulement si G ne poss`de pas de circuit e e strictement positif. On suppose maintenant que T (G) nest pas vide et lon note r(x) le co t maximum u dun chemin de a x. ` b) Dmontrer que r est le plus petit lment de T (G) pour la relation dordre : e ee t t x S, t(x) t (x).

On consid`re lensemble D(G) des ensembles de potentiels tels que t() = r(). e c) Dmontrer que la fonction f dnie par f (x) = r() C(x, ) o` C(x, ) est e e u le co t maximum dun chemin de x a est le plus grand lment de D(G). u ` ee 7.9. Soit G = (S, A) un graphe orient valu par c : A Q. On note S = e e {1, . . . , n}, Sk = {1, . . . , k}, Gk le graphe induit par Sk et lon suppose que s = 1 est un sommet origine pour tous les sous-graphes Gk . On note enn k (i) la valeur minimale dun chemin de 1 a i dans Gk passant au plus une fois par le sommet ` k. On consid`re alors lalgorithme de Rao dcrit ci-dessous : e e

Version 6 fvrier 2005 e

238

Chapitre 7. Graphes valus e

procdure Rao(G, c) ; e (1) k := 1 ; R := ; abs := 0 ; (2) si c(1, 1) < 0 alors abs := 1 (3) sinon (4) tantque abs = 0 et k n faire (5) k := k + 1 ; R := R {k} ; T := {k} ; (6) k (k) := min{k1 (j) + cjk | j k (k)} ; G (7) tantque abs = 0 et T = R faire + (8) U (T ) := Gk (T ) ; (9) si U (T ) = alors (10) calculer dpq = min{dij | (i, j) U (T )} {o` dij = k (i) + c(i, j) k1 (j)} u (11) nsi ; (12) si U (T ) = ou dpq > 0 alors (13) pour tout i dans R T faire (14) k (i) := k1 (i) ; T := T {k} (15) npour (16) sinon (17) k (q) := k (p) + c(p, q) ; T := T {q} ; (18) si (q, k) A et k (q) k (k) + c(q, k) < 0 alors (19) acher( circuit absorbant ) ;abs := 1 (20) nsi (21) nsi (22) ntantque (23) ntantque (24) nsi.

a) Dmontrer que la valeur de k (k) calcule a la ligne (6) est bien le co t minie e ` u mum dun chemin de 1 a k dans Gk passant au plus une fois par k. ` b) Dmontrer que si U (T ) est vide ou si dpq est positif ou nul, le co t minimum e u dun chemin de 1 a i dans Gk passant au plus une fois par k est k1 (i). ` c) Dmontrer que si dpq est strictement ngatif, alors k (p) + c(p, q) est le co t e e u minimum dun chemin de 1 a q dans Gk passant au plus une fois par k. ` d) En dduire que lalgorithme Rao dtermine les chemins de co t minimum de e e u 1 a tous les autres sommets de G ou dtecte la prsence dun circuit absorbant. ` e e

Version 6 fvrier 2005 e

You might also like