You are on page 1of 125

Th eorie des graphes

L. Sais
Algorithmique & Programmation 5

7 avril 2011

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

1 / 125

Graphe et algorithme : pr esentation Introduction D enitions et terminologie Repr esentation


Matrice dadjacence Listes dadjacence

Parcours, num erotation et descendance Connexit e et forte connexit e Graphes sans circuit Probl` eme du plus court chemin

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

2 / 125

Graphes et algorithme : pr esentation


Introduction

De nombreux probl` emes courants, en informatique, en ing enierie, en sciences sociales, en intelligence articielle, peuvent se repr esenter en termes de relations (binaires) entre objets. On peut citer par exemple :

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

3 / 125

r eseaux de communications : routiers, ferroviaires, machines en r eseaux, circuits int egr es, ...

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

4 / 125

On distingue les sommets (villes, carrefours, soudures) et les arcs ou ar etes (communication entre sommets) qui mettent en relation les sommets. On associe parfois aux arcs des caract eristiques, qui permettent dexprimer des distances, des co uts, des ux, ... Le type des probl` emes que lon peut se poser alors concerne par exemple la recherche ditin eraires optimaux (probl` eme classique du voyageur de commerce : visiter toutes les villes avec un cheminement optimal).

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

5 / 125

relations sociales : familiales, hirarchiques, dincompatibilit e, ... Ici, les sommets correspondent aux individus, les arcs aux relations entre individus. ordonnancement de t aches : atelier, systmes dinformations, ... Une premi` ere possibilit e consiste repr esenter les instants de d ebut et de n dactivit e par les sommets, et les activit es par les arcs ; on peut egalement repr esenter les t aches par les sommets et les relations de pr ec edance par les arcs.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

6 / 125

8 1 2 3

6 7 5

1 : cale con 2 : pantalon 3 : ceinture

4 : veste 5 : cravate 6 : chaussettes

7 : chemise 8 : chaussures 9 : montre

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

7 / 125

repr esentation dalgorithmes (organigrammes) : Les sommets correspondent aux instructions ou tests, les arcs correspondent aux enchanements possibles entre instructions ou tests. On retrouvera egalement : * les emplois du temps * les automates ` a etats nis * les probl` emes de coloration de cartes (2 pays voisins doivent avoir 2 couleurs di erentes) * etc.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

8 / 125

Remarque
Le formalisme des graphes permet de d ecrire de nombreux probl` emes souvent de mani` ere simple, mais qui peuvent sav erer dicile ` a r esoudre. Dans le cadre de ce cours, on traitera des probl` emes classiques o` u de bons algorithmes sont connus (il existe des probl` emes o` u lon ne connait pas de bons algorithmes) : etant donn e un graphe, v erier sil poss` ede certaines propri et es etant donn e un graphe, d eterminer une partie poss edant certaines propri et es. construire un, plusieurs, ou tous les graphes poss edant certaines propri et es.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

9 / 125

Graphes et algorithme : pr esentation


D enitions et terminologie

D enition
Un graphe orient e est un couple G=(S,A) o` u: - S est un ensemble ni d el ements appel es sommets - A est un ensemble ni de couples de sommets appel es arcs on a A SS

Remarque
Sil existe plusieurs arcs entre deux sommets, on parle dun multigraphe (arcs multiples)

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

10 / 125

Exemple
5

1 2

4 6

S={1..8} A={(2,2),(3,5),(4,5),(3,4),(5,5),(5,3),(6,7),(8,7)}

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

11 / 125

D enitions
Etant donn e un graphe G=(S,A) et x S si (x , y ) A, alors y est un successeur de x si (y , x ) A, alors y est un pr ed ecesseur de x x et y sont adjacents si y est un pr ed ecesseur et/ou un successeur de x lensemble des successeurs de x est not e + (x ) + (x ) = {y |(x , y ) A} lensemble des pr ed ecesseurs de x est not e + (x ) (x ) = {y |(y , x ) A} lensemble des voisins de x est not e (x ) + (x ) = (x ) (x )
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 12 / 125

le degr e int erieur de x est not e d (x ) d (x ) = | (x )| le degr e ext erieur de x est not e d+ (x ) d+ (x ) = |+ (x )| le degr e de x est not e d(x ) d(x ) = |(x )|

D enition
Un graphe non orient e est un couple G=(S,A) o` u: - S est un ensemble ni d el ements appel es sommets - A est un ensemble ni de paires de sommets appel es ar etes Une ar ete est not ee {x ,y } Dans le cas de ces graphes non-orient es, on parle simplement de sommets voisins et de degr e.
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 13 / 125

Exemple
5

1 2

4 6

S={1..8} A={{3,5},{4,5},{3,4},{6,7},{8,7}}

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

14 / 125

D enition (graphe complet)


Un graphe orient e G=(S,A) est dit complet si A=S2 Un graphe non orient e G=(S,A) est dit complet si toute paire de sommets gure dans A

D enition
Etant donn e un graphe orient e G=(S,A) : le graphe r eciproque de G est le graphe G1 =(S,A1 ) 1 o` u A ={(x,y) SS | (y , x ) A} le graphe sym etris e associ e` a G est le graphe GS =(S,AA1 )

D enition
Un graphe valu e est un graphe orient e ou non orent e G=(S,A) auquel on associe une fonction de co ut c : A->R , un tel graphe est not e (S,A,c)

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

15 / 125

Exemple
Voir lexemple sur le r eseau routier (villes)

Notations
Si G=(S,A) On a |S|=card(S)=n et |A|=card(A)=m es) Rapports etre n et m : (cas des graphes orient Si G=(S,A) nest pas un multigraphe, on a AS2 graphes tels que m=n2 : graphes complets avec boucles graphes complets sans boucle : m=n(n 1)

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

16 / 125

Relations entre d+ , d , d et m : pour le cas des graphes orient es sans boucles : d + (x ) =


x S x S

d (x ) =

1 2

d (x ) = m
x S

pour le cas des graphes non orient es : d (x ) = 2m


x S

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

17 / 125

D enition
Etant donn e un graphe orient e G=(S,A) et un sous-ensemble de sommets X, le sous-graphe de G induit (engendr e) par X est G(X)=(X,E) o` u E={(x , y ) A|x , y X } La d enition est identique dans le cas non orient e

D enition
Etant donn e un graphe G=(S,A) et un sous ensemble darcs ou dar etes E, le graphe partiel de G induit par E est le graphe G=(S,E)

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

18 / 125

Exemple
Un graphe, le sous-graphe induit par X ={2,4,5,6,7} et le graphe partiel induit par lensemble darcs E={(2,2),(5,3),(4,5),(3,4),(8,7)}
5

graphe
1 2 3 4 6 7 8 5

sous-graphe
2 4 6 7

graphe partiel
1 2 3 4 6 7 8

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

19 / 125

D enition
Etant donn e un graphe G=(S,A), une partition p={S1 ,...,Sp } de S, le graphe quotient induit par P est la graphe (V,E) o` u: V={s1 ,...,sp } (` a chaque partie S, on associe un sommet Si ) E={(si ,sj ) / (x,y)A , xSi et ySj }

Rappel
p={S1 ,...,Sp } est une partition de S ssi Si = S et i = j , Si
1i p

Sj =

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

20 / 125

Exemple
Un graphe et le graphe quotient induit par la partition p={s1 ,...,s4 }

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

21 / 125

Graphes et algorithme : pr esentation


Repr esentation

Matrice dadjacence Le graphe est repr esent e par un tableau ` a deux dimensions index e sur lensemble des sommets Graphe et matrice dadjacence

1 6

3 7

4 8

X 1 2 3 4 5 6 7 8

1 F F F F F F F F

2 F V F F F F F F

3 F F F F V F F F

4 F F V F F F F F

5 F F V V V F F F

6 F F F F F F F F

7 F F F F F V F V

8 F F F F F F F F
22 / 125

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

Les el ements du tableau peuvent etre di erents types selon le graphe consid er e bool eens : un el ement [i,j] est vrai si larc (i,j) gure dans le graphe. Dans le cas non orient e si l el ement [i,j] est vrai, alors l el ement [j,i] est vrai r eels : Dans le cas de graphes valu es, on repr esente la fonction de co ut, ainsi pour valeur c(i,j) et si larc (i,j) ne gure pas dans le graphe [i,j] prend une valeur conventionnelle. entiers : Dans le cas du multigraphe, [i,j] aura p our valeur le nombre darcs (i,j) gurant dans le graphe.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

23 / 125

en C : #define N_MAX typedef struct{ int g[N_MAX][N_MAX]; int n; }grapheM; en pseudo-langage : constante N_MAX = ... (* nombre maxi de sommets *) type sommet = 1..N_MAX graphe = structure a:= tableau[sommet,sommet] de booleens n: 0..N_MAX fin
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 24 / 125

Avantages Acc` es direct aux arcs : tester lexistence dun arc, ajouter, ou supprimer un arc sont des op erations r ealisables en temps constant ( (1)) L ecriture des algos est g en eralement simpli ee : lacc` es aux successeurs dun sommet est ais e Inconv enients encombrement maximal de la m emoire : le nombre darcs gurant dans le graphe, la place m emoire n ecessaire est en (N MAX2 ) ; cas g enant : mn2 co ut de linitialisation : (n2 ) co ut de la recherche des successeurs dun sommet : (n), m eme sil ya pas de successeurs. lacc` es aux successeurs dun sommet est ais e

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

25 / 125

Listes dadjacence Cest g en eralement la repr esentation la plus utilis ee, celle o` u lon dispose des algos les plus performants.

Exemple

1 6

3 7

4 8

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

26 / 125

en C : typedef struct cel{ int st; struct cel* suiv; }cellule; typedef cellule* Liste; typedef struct{ Liste a[N_MAX]; int n; }grapheL;

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

27 / 125

en pseudo-langage : type Liste = ^cellule cellule = structure st : sommet suiv : Liste fin grapheL = structure a := tableau [sommet,sommet] de Liste n :0..N_MAX fin

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

28 / 125

Avantages encombrement minimal de la m emoire : (N MAX+m) lacc` es au successeur dun sommet x est en (d+ (x)) Inconv enients cout dacc` es ` a un arc lorigine x : (d+ (x)) lacc` es aux pr ed ecesseurs dun sommet x impose le parcours de toutes les listes dadjacence : (n+m)

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

29 / 125

Graphe et algorithme : pr esentation Parcours, num erotation et descendance Connexit e et forte connexit e Graphes sans circuit Probl` eme du plus court chemin

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

30 / 125

D enition (Graphe orient e)


un chemin de G=(S,A) est une s equence de sommets xi1 , xi2 ,...,xik k 1, j 1 j k-1, (xij ,xij +1 )A un chemin xi1 ,xi2 ,...,xik sera not e [xi1 ,xi2 ,...,xik ] un chemin [xi1 ,xi2 ,...,xik ] est dit el ementaire si u,v , 1 u v k , xiu = xiv (ne contient pas deux fois le m eme sommet) la longueur dun chemin est egale au nombre de sommets moins un. le chemin constitu e du seul sommet xi1 not e [xi1 ] est de longueur nulle.

Propri et e
si c=[xi1 ,...,xik ] est un chemin de G, alors il existe une sous-suite de c qui est un chemin el ementaire de xi1 ` a xi k .

xi1
L. Sais (Algorithmique & Programmation 5)

xij

xij+1

xil

xik
7 avril 2011 31 / 125

Th eorie des graphes

Preuve : ep etitions de sommets dans c. Par r ecurrence sur r, le nombre de r si r=0, cest un chemin el ementaire Supposons que la propri et e est vraie au rang r-1 Soit un chemin c=[xi1 ,...,xik ] poss edant r r ep etitions. Il existe u et v 1 u v k tels que xiu ` a xi v . Soit c la sous-s equence de c obtenue en supprimant de c la sous-suite xiu +1 ... xiv . Donc c=[xi1 ,...,xiu ,xiv +1 ,...,xik ] est un chemin ayant au plus c-1 r ep etitions, do` u par hypoth` ese de r ecurrence c qui est une sous-s equence de c pos` ede une sous-s equence qui est un chemin el ementaire de xi1 ` a xi k : c=[xi1 ,...,(xiu ,...,xiv ),xiv +1 ,...,xik ]

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

32 / 125

D enitions (Graphe non orient e)


une cha ne de G=(S,A) est une s equence de sommets xi1 ,...,xik k1 avec j 1 u v k (xij ,xij +1 )A ou (xij +1 ,xij )A une cha ne (xi1 ,...,xik ) est dite el ementaire si u,v 1 u v k xiu = xiv (ne contient pas deux fois le meme sommet) la longueur dune chaine est egale au nombre de sommets moins un. La chaine constitu ee du seul sommet xi1 sera not ee (xi1 ) est de longueur nulle.

D enition
un circuit de G=(S,A) est un chemin [xi1 ,...,xik ] de G tel que k2 et xi1 =xik . un cycle de G=(S,A) est une chaine (xi1 ,...,xik ) de G tel que k2 et xi1 =xik .
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 33 / 125

D enition
Etant donn e un graphe G=(S,A) et xS, on d enit les ensembles de descendants et ascendants dun sommet x : descG (x)={yS | [x,y] dans G} ascG (x)={yS | [y,x] dans G} => x,yS, ydescG (x) <=> xascG (y)

Propri et e
Soit G=(S,A) un graphe xS, ascG (x)=descG 1 (x)

D enition
Une racine de G=(S,A) est un sommet r de S tel que S=descG (r)

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

34 / 125

Parcours en profondeur :

Exemple
Parcours en profondeur dun graphe : les num eros correspondants aux sommets donnant lordre dans lequel les sommets sont visit es.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

35 / 125

algorithme : procedure parcoursProfondeur(g : graphe); variable atteint : tableau[sommet] de booleens (atteint[x] <=> le sommet x a ete atteint) x : sommet debut pour tout sommet x de g faire atteint[x]:=faux pour tout sommet x de g faire si non atteint[x] alors RechercheProf(x) fin

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

36 / 125

procedure RechercheProf(x : sommet); {specifications : etant donnee un sommet x non atteint, cette procedure marque x, et tous les sommets y descendants de x tels quil existe un chemin [x,y] dont aucun sommet nest marque} variable y : sommet debut atteint[x]:=vrai pour tout successeur y de x faire si non atteint[y] alors RechercheProf(y) fin

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

37 / 125

Complexit e: La phase dinitialisation du tableau atteint est en (n). Lit eration de lalgorithme principal est r ealis e exactement en n etapes, pour chacune il ya au moins un test r ealis e. (n+m), soit (max(n,m)) dans le cas des listes dadjacences. (n2 ) dans le cas des matrices dadjacence.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

38 / 125

Ordre de traitement-Num erotation : (parcours en profondeur) Lobjet des parcours de graphes concerne des traitements que lon souhaite op erer sur les graphes. Les traitements sop` erent parfois sur les sommets visit es. Il est alors possible dop erer un traitement avant ou apr` es la visite du sommet. Il ya donc soit un traitement en pr eOrdre ou ordre pr ex e, soit en postOrdre ou ordre postx e. Ceci se traduit par une modication de la proc edure de recherche en profondeur. traitement en pr eOrdre var y : sommet debut atteint[x]:=vrai <traiter x> pour tout successeur y de x faire si non atteint[y] alors rechercheProf(y) fin
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 39 / 125

traitement en postOrdre var y : sommet debut atteint[x]:=vrai pour tout successeur y de x faire si non atteint[y] alors rechercheProf(y) <traiter x> fin

Exemple
num erotation en pr e-ordre(rouge) et en post-ordre(vert) pour un parcours en profondeur

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

40 / 125

Mise en oeuvre en C du parcours en profondeur : typedef struct cel{ int st; struct cel* suiv; }cellule typedef cellule* Liste; typedef struct{ Liste a[N_MAX]; int n; }grapheL; typedef int atteint[N_MAX]; /* variables globales d eclar ees: grapheL g; atteint m: */
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 41 / 125

void parcoursProf(int x){ Liste p; m[x]=1; p=g.a[x]; while(p!=NULL){ if(!m[p->st]) parcoursProf(p->st); p=p->suiv; } } void main(){ int x; for(x=1;x<g.n;x++) m[x]=0; for(x=1;x<g.n;x++){ if(!m[x]) parcoursProf(x); }
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 42 / 125

Parcours en largeur : Dans ce parcours, lorsquun sommet x est atteint, tous ses successeurs y sont visit es avant de visiter les autres descendants de x. Si lon se r ef` ere ` a la notion de distance, partant de x, le parcours va dabord visiter tous les sommets situ es ` a la distance 1 de x, puis tous les sommets situ es ` a la distance 2 de x, et ainsi de suite jusqu` a ce que tous les sommets atteignables soient visit es.

Exemple (parcours en largeur)


La num erotation indiqu ee correspond ` a un ordre de visite lors dun parcours en largeur

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

43 / 125

principe de lalgo : Il repose sur la notion de le. Lors de la visite dun sommet s, tous ses successeurs non encore atteint vont etre rang es dans la le de mani` ere ` a conserver la priorit e li ee aux distances depuis le sommet origine. Mettons en oeuvre cet algo ! ! ! typedef struct{ Liste tete,queue; }File; void enfiler(int x,File* f); int defiler(File* f); int fileVide(File* f);

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

44 / 125

void parcoursLarg(int x){ Liste p; initFileVide(&f); enfiler(x,&f); m[x]=vrai; while(!fileVide(f)){ x=defiler(f); p=g.a[x]; while(p!=NULL){ if(!m[p->st]){ m[p->st]=vrai; enfiler(p->st,f); } p=p->suiv; } } }
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 45 / 125

void main(){ int x; for(x=1;x<g.n;x++) m[x]=0; for(x=1;x<g.n;x++){ if(!m[x]) parcoursLarg(x); } } complexit e de lalgo : identique ` a celle du parcours en profondeur (n+m) pour les listes dadjacence (n2 ) pour les matrices dadjacence

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

46 / 125

Quelques applications des parcours Obtention des descendants par un parcours en profondeur. Il sut dins erer dans un ensemble, les sommets d` es quils sont atteints. Outre le tableau atteint, on utilise donc une structure de donn ees densemble. Type desc : ensemble de sommets var atteint : tableau[sommet] de bools procedure descProf(x : sommet,desc : ens de sommets); var y : sommet; debut atteint[x]:=vrai desc:=desc U {X} pour tout successeur y de x faire si non atteint[y] faire descProf(y,desc) fin
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 47 / 125

complexit e de lalgo : identique ` a celle du parcours en profondeur du sous-graphe induit par les descendants de x, soit avec nx et mx le nombre de sommets et darcs pour ce sous-graphe. - (nx +mx ) > listes dadjacence pire cas : O(n+m) - (nx .m) > matrice dadjacence pire cas : O(n2 ) Obtention des ascendants pour un parcours en profondeur. La recherche des ascendants dun sommet peut se faire en utilisant la proc edure descProf avec pour param` etre le sommet consid er e et le 1 graphe r eciproque de G, soit G

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

48 / 125

Application globale : Fermeture reexo-transitive dun graphe

D enition
Soit G=(S,A) un graphe, la fermeture r eexo-transitive de G est not ee Gt =(S,At ) et elle v erie la propri et e suivante : (x,y)A <=> x=y ou [x,y] dans G On peut v erier que lon a bien les propri et es suivantes : (x,y)A => (x,y)At (x,y)A et (y,z)A => (x,z)At xS (x,x)A => (x,y)At

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

49 / 125

Exemple
les arcs ajout es par r e exivit e et transitivit e

Calcul de Gt ` a partir de G :
::::::::

principe : Il sagit dajouter les arcs (x,y) pour tout y tel que [x,y] est dans G ie pour tout el ement y descendants de x. Il en d ecoule que dans Gt les successeurs de x sont les descendants de x dans G. On utilise ainsi la proc edure de calcul des descendants.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

50 / 125

procedure fermetureRefTrans(g : graphe,gt : graphe) var atteint : tableau[sommet] de booleens desc : ens de sommets x,y : sommet debut {initialisations} pour tout sommet x de G faire atteint[x]:=faux desc:=ens_vide pour tout sommet x de G faire descProf(x,g,desc) pour tout sommet y de desc faire ajouterArc(x,y,gt) desc:=desc-{y} atteint[y]:=faux fin pour finpour fin
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 51 / 125

:::::::::::

complexit e: Nous donnons ici seulement une majoration de la complexit e. On etudie dabord le cas dune repr esentation matricielle : on a vu que le cout de la proc edure descProf(x,g,desc) est en (nx .m). On r ealise ce traitement n fois. On obtient ainsi une majoration par O(n3 )

Dans le cas des listes dadjacence, on obtient une majoration par O(n(n+m))

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

52 / 125

Graphe et algorithme : pr esentation Parcours, num erotation et descendance Connexit e et forte connexit e Composantes connexes Forte connexit e Graphes sans circuit Probl` eme du plus court chemin

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

53 / 125

Le probl` eme de la recherche de composante connexe est un probl` eme dun int er et pratique majeur dans de nombreuses applications li ees ` a toutes sortes de r eseau : on veut savoir quels sont les sommets qui sont reli es sans chercher ` a savoir explicitement comment. La notion de connexit e est li ee ` a lexistence de chaines, celle de forte connexit e` a celle de chemins.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

54 / 125

Connexit e et forte connexit e


Composantes connexes

D enition
Soit G=(S,A) un graphe On d enit la relation de connexit e sur S, not ee Rc par : xRc y <=> x=y ou une chaine (xi 1 =x,...,xik =y) dans G

Propri et e
Rc est une relation d equivalence preuve : Par d enition des chaines, Rc est bien une relation qui est : r eexive : xRc x sym etrique : xRc y <=> yRc x transitive : xRc y et yRc z => xRc z
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 55 / 125

D enition
Soit G=(S,A) un graphe. Une classe d equvalence de S modulo Rc est appell ee composante connexe de G. ede quune seule composante Le graphe G est dit connexe sil ne poss` connexe.

Exemple
Graphe avec deux composantes connexes

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

56 / 125

Recherche de composantes connexes La notion de connexit e est non orient ee, on va donc travailler sur GS , le graphe sym etris e de G=(S,A) qui est d eni par GS =(S,AA1 ). On sappuie par ailleurs sur les deux propri et es suivantes :

Propri et e
Les composantes connexes dun graphe G sont les m emes que celles de GS preuve : une chaine (xi 1 =x,...,xik =y) dans G <=> une chaine (xi 1 =x,...,xik =y) dans GS

Propri et e
Etant donn e un graphe G=(S,A) xG descGS (x)=composante connexe de x dans GS preuve : trivial (montrer la double inclusion)
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 57 / 125

Un sch ema dalgorithme d ecoule imm ediatement de cette derni` ere propri et e algo : On utilise un marquage des sommets avec la structure suivante : marqu e : tableau[sommet] de bool eens avec marqu e[x] <=> le sommet x a et e trait e 1) calcul de GS 2) pour tout sommet x de G faire marqu e[x] :=faux npour 3) tant que sS/marqu e[s]=faux faire marqu e[x] :=vrai calculer descGS (x) il sagit dune nouvelle composante connexe pour tout sommet y de descGS (x) faire marqu e[y] :=vrai ntq La justication de cette algorithme d ecoule naturellement des propri et es pr ec edantes.
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 58 / 125

complexit e: Le co ut de la sym etrisation dun graphe est en (n+m) La seconde etape est lin eaire dans le nombre de sommets du graphe : (n) Consid erons la troisi` eme etape : soit nk et mk le nombre de sommets et le nombre darcs dans la k i` eme composante connexe calcul ee : pour chaque composante connexe, le co ut est de lordre de (nk +mk ) comme pour le calcul des descendants dun sommet. On obtient aussi globalement un co ut de lordre :
1k |C |

(nk +mk ) = n+m

(C : lensemble des composantes connexes) Do` u la complexit e (n+m) pour les listes dadjacence De mani` ere similaire => (n2 ) pour les matrices dadjacence.
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 59 / 125

Connexit e et forte connexit e


Forte connexit e

D enition
Soit G=(S,A) un graphe ee Rfc par : On d enit la relation de forte connexit e sur S, not xRfc y <=> x=y ou des chemins [x,y] et [y,x] dans G

Propri et e
Rfc est une relation d equivalence preuve : La m eme que pour la notion de connexit e Rc (relation d equivalence)

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

60 / 125

D enition
Rfc induit sur G=(S,A) une partition de S. On dit que S est partitionn ee en composantes fortement connexes. (cfc)

D enition
Un graphe est dit fortement connexe sil poss` ede une seule composante fortement connexe.

Exemple

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

61 / 125

Remarques
Dans le cas dun graphe mod elisant un r eseau de ux dinformations on pourra constater que :

` a lint erieur dune cfc, il ya une bonne circulation de linformation entre cfc, linformation ne transite au mieux que dans un sens

Les cfc dun graphe G sont les m emes que celles de G1 Les cfc dun graphe forment une partition de lensemble des sommets de G. On peut en d eduire un graphe quotient, n ecessairement snas circuit. Graphe quotient induit par les cfc de G :

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

62 / 125

Recherche de composantes connexes : 1) Solution brutale Cette solution est bas ee sur la propri et e suivante :

Propri et e
Etant donn e un graphe G=(S,A) si cfc(x) est la composante fortement connexe qui inclut x alors cfc(x) = descG (x) ascG (x) preuve : Par d enition de Rfc , descG (x), et ascG (x) (n preuve) On en d eduit un sch ema dalgorithme utilisant un ensemble de sommets (class e) initialis e` a vide, et devant ` a la n de lalgorithme, contenir lensemble des sommets du graphe.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

63 / 125

algorithme : 1) 2) 3) 4) 5) Calcul de G1 ; class e := ; i :=0 tant que xS / x / class e faire i :=i+1 Si :=descG (x) descG 1 (x) class e :=class e S ntq

complexit e: Dans le cas dune repr esentation par liste dadjacence, l etape 1) est r ealisable en (n+m) Linstruction 4) co ute (n+m) ` a cause des calculs de descendants, tandis que l etape 5) poss` ede un coup major e par le nombre de sommets. Linstruction peut- etre execut ee n fois, ce qui fait que lon arrive ` a un co ut global de (n(n+m)) En suivant le m eme raisonnement, on obtient un co ut global de (n3 ) avec une repr esentation par matrices dadjacence.
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 64 / 125

2) Solution lin eaire bas ee sur le parcours de graphe

Exemple

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

65 / 125

Graphe et algorithme : pr esentation Parcours, num erotation et descendance Connexit e et forte connexit e Graphes sans circuit D enitions Quelques exemples classiques S-s equence dun graphe - D ecomposition par niveaux Probl` eme du plus court chemin

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

66 / 125

Graphes sans circuit


D enitions

Exemple
Un graphe sans circuit, mais cyclique. On peut remarquer que la notion de circuit est li ee aux graphes orient es, tandis que la notion de cycle ne consid` ere pas lorientation des arcs. Ceci est naturellement du aux d enitions de chemin et de cha ne sous-jacentes a ` celles de circuit et de cycle.

Rappels
Un circuit de G=(S,A) est un chemin [xi 0 ,xi 1 ,...,xik ] tel que xi 0 =xik ne (xi 0 ,xi 1 ,...,xik ) tel que xi 0 =xik Un cycle de G=(S,A) est une cha

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

67 / 125

Exemple
Graphe orient e sans circuit il existe plusieurs cycles dans ce graphe, mais aucun circuit cycles : (a,c,d,a) ;(e,c,d,g,e) ;... circuit :

Propri et e
Tout sous-graphe ou graphe partiel dun graphe sans circuit (sans cycle) et sans circuit (sans cycle). preuve : d emo triviale par contrapos ee.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

68 / 125

D enition
Un circuit (cycle) el ementaire est un circuit (cycle) qui ne poss` ede quune seule r ep etition, le premier et le dernier sommet.

Propri et e
De tout circuit, on peut extraire un circuit el ementaire. preuve : Voir celle pour les chemins.

D enition
Etant donn e un graphe G, une source (resp un puits) de G est un sommet de G nayant aucun pr ed ecesseur (resp aucun successeur). Lensemble des sources est not e sources(G)={sS / d (s)=0} Lensemble des sources est not e puits(G)={sS / d+ (s)=0}

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

69 / 125

Exemple

sources(G)=a,b puits(G)=d,g

Propri et e
Tout graphe sans circuit poss` ede au moins une source et un puits. preuve : Consid erons un chemin c de G qui soit maximal au sens suivant : c=[xi 1 ,xi 2 ,...,xik ] et il nexiste pas de sommet y de G tel que [y,xi 0 ,xi 1 ,...,xik ] ou [xi 0 ,xi 1 ,...,xik ,y] soient de schemins de G. Un tel chemin existe puisque G est sans circuit. Cela signie que xi 1 est une source et xik est un puits.
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 70 / 125

Propri et e
G est sans circuit ssi G1 est sans circuit. Les sources (resp les puits) de G sont les puits (resp les sources) de G1 . preuve : trivial (juste utiliser les d enitions)

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

71 / 125

Graphes sans circuit


Quelques exemples classiques

Graphe dune relation dordre strict Une relation dordre strict est une relation : transitive irr eexive Etant donn e R une relation dordre strict sur un ensemble ni S, on peut associer ` a R un graphe G=(S,A) avec A={(x,y)S2 | xRy}

Propri et e
Un tel graphe est n ecessairement sans circuit. preuve : par labsurde Si c=[xi 1 ,...,xik 1 ,xik ] est un circuit el ementaire, on a donc xi 1 Rxi 2 R...Rxik On en d eduit par transitivit e de R que xi 1 Rxik , do` u xi 1 Rxi 1 (car xi 1 =xik ) Contradiction ! ! ! (car R irreexive)
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 72 / 125

Graphe de pr ec edence Lors du d ebut de ce chapitre, nous avons vu un exemple de mod elisation de taches soumises ` a des contraintes de pr ec edence. (certaines taches doivent sex ecuter avant dautres) Lexistence dun circuit dans un tel graphe signie limpossibilit e quil ya daccomplir la tache.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

73 / 125

Allocation de ressources On peut mod eliser certains probl` emes dallocations de ressources dans des syst` emes multi-processus par un graphe dallocation dont les sommets sont de deux types : processus ressources (une m emoire centrale partag ee, un disque, une imprimante,...) et les arcs sont de deux types :

(p,r) qui signie que le processus p est en attente de la ressource r. (r,p) qui signie que la ressource r est allou ee au processus p.

Lexistence dun circuit dans ce graphe est equivalent ` a la pr esence dune situation dinterblocage.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

74 / 125

Exemple

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

75 / 125

Graphes sans circuit


S-s equence dun graphe - D ecomposition par niveaux

D enition
Soit un graphe G=(S,A), la S-s equence de G est lensemble {S1 ,S2 ,...,Sk } des parties non vides de G tel que : S1 =sources(G) Si =sources(G\(S-S1 S2 ...Si 1 ))= pour 2ik Sk +1 =sources(G\(S-S1 S2 ...Sk ))=

Exemple(partition en S-s equence)

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

76 / 125

Remarque
La partition en S-s equence des sommets dun graphe avec circuit est impossible.

Exemple

sources(G\(S- S1 S2 ))= S1 S2 ={a,b,c}

Propri et e
Le graphe G=(S,A) est sans circuit ssi la S-s equence de G est une partition de S

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

77 / 125

preuve : => Par construction, les Sk sont disjoints 2 ` a 2. Il reste ` a prouver que S est la r eunion des Sk . On consid` ere le sous-graphe induit par S-S1 ...Sk . Comme G est sans circuit, ce graphe lest aussi. Sil nest pas vide, il a donc au moins une source. Or Sk +1 =sources(G\(S-S1 ...Sk ))= => S-S1 ...Sk = => S=S1 ...Sk <= La S-s equence de G est une partition de S. Supposons suil existe un circuit [x1 ,...,xj =xi 1 ] Si xj Spj , on a necessairement p1 <p2 <...<pj et p1 <p1 donc pj =p1 et donc on a : p1 <p2 <...<p1 => p1 =p1 Contradiction ! ! !
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 78 / 125

Calcul dune S-s equence dun graphe Lid ee de lalgorithme est en fait bas ee sur la d enition m eme de la S-s equence : les sommets de Si gurent parmi les successeurs de Si 1 , il sut ` a chaque etape de supprimer les sommets de Si 1 en mettant a ` jour le degr e int erieur des sommets succeseurs (de Si 1 ), et de consid erer ensuite comme sommet de Si , les sommets de degr e int erieur nuls. Les informations calcul ees sont la S-s equence. type S-sequence = structure S:tableau[sommet] de ens de sommets {S[i]=Si} k:entier {le nb de parties de la S-sequence} fonction sources(g:graphe):ens de sommets {specif : a pour valeur lens des sources de G}

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

79 / 125

procedure calcul_s_seq(g:graphe,circuit:booleen, s-seq:s_sequence); {specif : en sortie, si circuit est vrai alors le graphe G possede au moins un circuit ; sinon circuit est faux, et s-seq est la S-seq de G} variable x,y:sommet i,nbsom:entier {nbsomm=nb de sommets deja traites} deg:tableau[sommet] de 0..n {pour le degre interieur}

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

80 / 125

L. Sais (Algorithmique & Programmation 5)

debut <calcul des degr pour i allant de 1 .n faire s-seq[i]:=ens_vide s-seq.S[1]:=sources(g) s-seq.k=1 nbsom:=|s-seq.S[1]| tant que (s-seq.S[s-seq.k]!=0)faire pour tout sommet x de s-seq.S[s-seqk] faire pour tout succeseur y de x faire deg(y):=deg(y)-1 si deg(y)=0 alors s-seq.S[s-seq.k+1]=s-seq.S[s-seq.k+1]U{y} nbsom:=nbsom+1 finsi fpour fpour s-seq.k:=s-seq.k+1 ftq circuit:=(nbsom<g.n)
Th eorie des graphes 7 avril 2011

81 / 125

Graphe et algorithme : pr esentation Parcours, num erotation et descendance Connexit e et forte connexit e Graphes sans circuit Probl` eme du plus court chemin Introduction Cas des valuations positives : algorithme de Dijkstra Cas des valuations quelconques et graphes sans circuits : algorithme de

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

82 / 125

Probl` eme du plus court chemin (PLC)


Introduction

Probl` eme : Dans cette partie, nous traitons des probl` emes du plus court chemin. Pour mod eliser les situations r eelles ` a la base de ce type de probl` emes ; nous introdusons la notion de graphe orient e.

D enition
Un graphe valu e est not e G=(S,A,v) o` u: (S,A) est un graphe orient e v est une fonction de co ut (on dit aussi un etiquetage, un poids, une valuation des arcs) qui ` a tout arc a=(x,y) associe un r eel v : A R

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

83 / 125

Exemple
Un r eseau de transport avec les co uts (ici les distances) entre chaque ville.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

84 / 125

D enition
Le co ut cumul e (ou valeur) dun chemin c, que lon note co ut(c) est egal ` a la somme des co uts de chacun des arcs qui le composent.

Exemple
En reprenant lexemple pr ec edant, si c=[Lille,Paris,Lyon,Strasbourg] co ut(c)=215+462+434=1111

Remarque
Il est pr ef erable d etendre le domane de d enition de v a ` S2 , en supposant pour les couples de sommets ne gurant pas dans A que leur valuation vaut + (ou -) ce qui revient ` a d enir une extension v de v : v : S2 R (x,y)v(x,y)=v(x,y) si (x,y) A et + sinon
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 85 / 125

Plusieurs probl` emes (doptimisation) peuvent alors se poser : probl` eme 1 : recherche dun chemin de cout minimum (ou maximum) entre deux sommets x et y donn es probl` eme 2 : recherche de lensemble des chemins de cout minimum (ou maximum) entre un sommet x et les autres osmmets du graphe probl` eme 3 : recherche de lensemble de chemins de cout minimum (ou maximum) entre tous les couples de sommets Le probl` eme 1 est g en eralement appel e probl` eme du plus court chemin.

D enition
On appelle plus court chemin (plc) de x ` a y, un chemin de valeur minimale. La distance entre deux sommets x et y est egale au cout du plus court chemin entre x et y.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

86 / 125

Question : A quelle condition le probl` eme 1 admet-il une solution ? Il faut d ej` a quil existe un chemin entre x et y : ceci peut etre r esolu par le calcul des descendants de x. Dans le cas de valuations n egatives, le probl` eme 1 ne peut pas poss eder de solution : soient c=[x1 , ..., xi , ..., xj =xi , xj +1 , ..., xk ] c=[xi ,...,xj =xi ] un sous-chemin de c qui est un circuit et c=[c=[x1 ,...,xi ,xj +1 ,...,k ] on a alors : cout(c)=cout(c)+cout(c) si cout(c)0, il nexiste pas de plus court chemin de x ` a y. Puisque c peut etre etendu ` a tout chemin empruntant plusieurs fois le circuit c, et ce inniment, en obtenant ` a chaque fois un chemin de cout inf erieur. Les circuits tels que c (cout(c)<0) sont appel es circuits absorbants.
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 87 / 125

Remarque
Dans le cas des graphes poss edant des circuits absorbants, on pourrait ramener le probl` eme 1 ` a celui de la recherche de chemins el ementaires de co ut minimum, mais on ne connait pas dalgorithme de complexit e raisonnable (polynomiale) pour ce dernier. => Dans le cadre de cette partie du cours, on se limitera aux graphes sans circuits absorbants. Application : choix dune politique optimale : Il sagit ici de d enir par une entreprise, une politique de remplacement d equipements informatiques qui soit la meilleure en terme de cout. Une entreprise a besoin dune nouvelle machine pour remplir un contrat de 5 ans. Le cout dune machine neuve est de : 300 unit es mon etaires (UM) aux ann ees 0 et 1 350 UM aux ann ees 2 et 3 400 UM ` a lann ee 4
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 88 / 125

Deux facteurs sont egalement ` a consid erer : le cout de maintenance le prix de revente nb ann ees utilisation 1 2 3 4 5 Question : Quelle est la politique optimale (la moins couteuse) pour avoir pendant 5 ann ees une machine en etat de fonctionnement ? prix de revente 200 150 100 50 0 cout maintenance cumul e 0 50 100 200 300

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

89 / 125

Mod elisation par un graphe valu e: G=(S,A,v) S={0,1,2,3,4,5} les ann ees A={(i,j) | i<j} v(i,j)=<cout dachat lann ee i> +<cout de maintenance pendant j-i ann ees> -<prix de revente apr` es j-i ann ees dutilisation> exemple : v(2,4)=350+50-150=250 Un plus court chemin correspond ` a une politique optimale. On trouve plusieurs politiques optimales dun cout de 550 UM.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

90 / 125

Par exemple [0,2,5] est un chemin optimal, son cout 550. On peut linterpr eter : achat dune machine ` a lan 0 300

2 ann ees de maintenance +50 = 350 revente ` a lann ee 2 -150 = 200 3 ann ees de maintenance +100 = 650 revente ` a lann ee 5 -100 = 550

achat dune machine ` a lann ee 2 +350 = 550


Le chemin [0,1,5] est un egalement optimal, (cout : 550). On peut linterpr eter : achat dune machine ` a lan 0 300

1 ann ee de maintenance +0 = 300 revente ` a lann ee 1 -200 = 100 4 ann ees de maintenance +200 = 600 revente ` a lann ee 5 -50 = 550
Th eorie des graphes 7 avril 2011 91 / 125

achat dune machine ` a lann ee 1 +300 = 400


L. Sais (Algorithmique & Programmation 5)

Probl` eme du plus court chemin


Cas des valuations positives : algorithme de Dijkstra

Cet algorithme repose sur lhypoth` ese suivante : La valuation de chaque arc est positive. Labsence darc entre deux sommets se traduit par une valuation innie. Le probl` eme trait e est le probl` eme 2 : On recherche les chemins optimaux entre un sommet xi et tous les autres. En fait, ceci est justi e par la remarque suivante : on ne sait pas r esoudre le probl` eme 1 plus ecacement que le probl` eme 2

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

92 / 125

Principe de lalgorithme :

Remarque
Si on consid` ere trois sommets x1 , x2 et x3 tels que (x1 ,x3 ), (x1 ,x2 ) et (x2 ,x3 ) sont des arcs du graphe :

Si lon veut le plus court chemin entre x1 et x3 , et si on a : v(x1 ,x3 )>v(x1 ,x2 )+v(x2 ,x3 ) alors le plus petit chemin est [x1 ,x2 ,x3 ]
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 93 / 125

Cette remarque peut se g en eraliser ` a des chemins : C12 =[x1 ,x2 ] et C13 =[x1 ,x3 ]

et si lon a Cout(C13 )>Cout(C12 )+v(x2 ,x3 ) alors le plus court chemin est le chemin C12 augment e de (x2 ,x3 ) soit [x1 ,x2 ,x3 ]

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

94 / 125

Lalgorithme de Djikstra repose sur la remarque pr ec edante et sa g en eralisation : On proc` ede it erativement en chosissant ` a chaque etape un nouveau sommet. ` chaque a etape, un sommet est chosi puis ins er e dans C : il sagit dun sommet pour lequel on connait la distance de x1 ` a ce sommet. on appelera chemin special, un chemin de x1 vers un autre sommet x2 , qui ne passe que par des sommets de C

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

95 / 125

` chaque a etape de lalgorithme un tableau D (D pour distance) m emorise le co ut du plc special de x1 vers chaque sommet du graphe. quand un nouveau sommet est ajout e` a C, le plc sp ecial de x1 ` a ce sommet est aussi un plc. Donc, quand tous les sommets ont et e ins er es dans C, on connait le co ut de chaque plc sp ecial, donc de chaque plc.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

96 / 125

A chaque etape : choix dun nouveau sommet ` a ins erer dans C : sommet xi S-C, dont la valeur D[xi ] est minimum

La valeur de D[xj ] est mise ` a jour pour tous les sommets xj ext erieurs ` C, pour le cas o` a u lajout ` a C de xi engendre un chemin sp ecial de co ut inf erieur ie : D[xj ]>D[xi ]+v(xi ,xj )

on choisit par d efaut 1 comme sommet initial.


L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 97 / 125

Algorithme de calcul des distances : variables i,x,y:entiers D:tableau[sommet] de reel C:ens de sommet debut 1) C<-{1} 2) pour tout sommet x de G faire D[x]=v(1,x) fpour 3) pour i allant de 2 a n-1 faire 4) choisir x dans S-C en minimisant D[x] 5) C<-C U {x} 6) pour tout sommet y de S-C faire 7) D[y]<-min(D[y],D[x]+v(x,y)) fpour fpour

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

98 / 125

Exemple

D=[0,10,3,6,+] C={1} => choix de 3 do` u C={1,3} D=[0,3+4,3,3+2,+]=[0,7,3,5,+] C={1,3} => choix de 4 do` u C={1,3,4}
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 99 / 125

D=[0,5+0,3,5,5+1]=[0,5,3,5,6] C={1,3,4} =>choix de 2 do` u C={1,3,4,2} D=[0,5,3,5,6]

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

100 / 125

preuve de lalgo : On montre la validit e de cet algorithme en consid erant les propri et es suivantes comme invariants de boucle :
1

si un sommet x est danc C, alors D[x] est le co ut du plus court chemin de 1 ` ax si un sommet x nest pas dans C, alors D[x] est le co ut du plus court chemin sp ecial de 1 ` ax

Initialement : La propri et e (1) est satisafaite car C={1} puisque D[1]=0 Pour la propri et e (2), les chemins sp eciaux sont r eduits aux arcs (1,x), donc, compte tenu de linitialisation, cette assertion est v eri ee

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

101 / 125

Quand le sommet x est consid er e ( etape x) : propri et e (1) : Cette propri et e est trivialement v eri ee pour les sommets de C avant ajout de x car la valeur de D nest pas modi ee pour ces sommets. Consid erons x ; on doit v erier que D[x] est le co ut dun chemin optimal. Par hypoth` ese, on sait que D[x] est le co ut du plus court chemin sp ecial de 1` a x. Il sut de montrer que le plus court chemin de 1 ` a x est dans C (cest un chemin sp ecial). Ceci revient ` a montrer que le plus court chemin de 1 ` a x ne passe par aucun sommet situ e hors de C ; on le montre par labsurde.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

102 / 125

Soit y le premier sommet hors de C par lequel passe le plus court chemin de 1 ` ax:

Il est clair que [1,y] est un chemin sp ecial ; par ailleurs, cest un plus court chemin sp ecial car le chemin [1,...y,...x] consid er e est un plus court chemin de 1 ` a x. On a donc : co ut([1,...y,...x]) co ut([1,y]) car par hypoth` ese pour lalgorithme de Dijkstra, i , j , v(i,j) 0, et dapr` es lhypoth` ese (2) vraie en entr ee, donc pour y : co ut([1,x]) D[y]
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 103 / 125

On peut de plus armer lin egalit e D[y] D[x] puisque cest x qui a et e choisi dans S-C, pour minimiser D. On arrive nalement ` a: co ut([1,...y,...x]) D[x] Donc le chemin interne ` a C est un chemin optimal, puisque de co ut inf erieur ` a celui de tout chemin optimal.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

104 / 125

propri et e (2) : Consid erons y / C. On doit montrer que D[y] est le co ut du plus court chemin sp ecial de 1 ` a y. Soit un chemin de la forme [1,y], quand x est ajout e` a C, on a trois possibilit es : [1,y] reste inchang e, ce chemin sp ecial ne passe pas par x. La propri et e (2) est donc toujours v eri ee puisque D[y] nest mis ` a jour que si on a D[y] > D[x] + v(x,y), ce qui ne peut se pr esenter que si le plus court chemin sp ecial passe par x. [1,y] passe maintenant par x, le chemin est de la forme [1,...x,y], ie x est lavant dernier sommet du chemin o` u seul y nest pas dans C. Ce cas est trait e par lalgorithme lors de lex ecution de linstruction D[y] := min(D[y],D[x]+v(x,y)).

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

105 / 125

[1,y] passe maintenant par x, le chemin est de la forme [1,...x,...,z,y] ou z = x et seul y nest pas dans C. Ce cas peut etre elimin e puisque z a d ej` a et e ins er e dans C avant que x ne le soit, et donc que D[z] a pour valeur la distance de 1 ` a z, et que n ecessairement, le cout du chemin [1,...,x,...,z,y] ne peut etre inf erieur strictement ` a D[z]+v(z,y) qui a d ej` a et e consid er e lors de linsertion de z dans lensemble C. La propri et e (2) est donc v eri ee apr` es chaque nouvel ajout dans C. En n de traitement, tous les sommets, sauf un, sont dans C. Dapr` es la propri et e (1), D m emorise pour tous les ommets de C le cout des chemins optimaux. Pour xn , le seul sommet hors de C, on sait que D[xn ] a pour valeur le cout du plus court chemin sp ecial de 1 ` a xn , or, le chemin optimal de 1 ` a xn est n ecessairement un chemin sp ecial, donc D[xn ] est bien egal ` a son cout. CQFD

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

106 / 125

Remarque
Les conditions dapplciation de cet algorithme imposent une valuation des arcs positive. En eet, ceci est n ecessaire, et dailleurs la preuve y fait r ef erence. Lexemple ci-dessous pr ecise les raisons de cette condition dapplication :

Dans ce cas de gure, cest x3 qui sera choisi plut ot que x2 , or : co ut([x1 ,x3 ])=0 co ut([x1 ,x2 ,x3 ])=-1

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

107 / 125

Complexit e de lalgorithme Repr esentation matricielle


1

2 3 4 5 6 7

ensemble avec repr esentation tabulaire : (1) pour linsertion mais (n) pour linitialisation (n) n-2 passages exactement si S-C est explicitement repr esent e, (|S-C|) temps constant, soit (1) si S-C est explicitement repr esent e, (|S-C|) temps constant, soit (1)

Globalement, avec (4) et (6) cumul es avec (3), on a : (


2i n1

i) examens d el ements de S-C = Le cout globale est


n 2 n 2 2

n(n1) 2

1= n

2 n 2

+ n + n soit (n2 )

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

108 / 125

Repr esentation par listes dadjacence Si on reprend lanalyse pr ec edente, seule l etape (6) peut etre am elior ee par le changement de repr esentation, puisquil sut de traiter les sommets y succeseurs du sommet courant x, do` u un co ut cumul e de (n+m) pour (3) et (6). Le probl` eme ici est que rien ne change pour le co ut cumul e de (3) et (4), puisque lon a toujours (n2 ). Il faut donc optimiser l etape (4), ceci en changeant limpl ementation. Cest possible en utilisant la structure de emorisant les sommets ordonn es par la tas ordonn es (vu en cours), m valeur D[ ]. Incidence sur lalgorithme :

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

109 / 125

Repr esentation par listes dadjacence (suite)

L etape (4) est r ealisable en temps constant pour le choix de x, et log(n) pour la mise ` a jour de la structure, soit globalement, un co ut cumul e de n.log(n) pour (4) et (3). L etape (7) est r ealisable en log(n), car il faut eventuellement mettre ` a jour la structure, soit globalement, un co ut cumul e de m.log(n) pour (3), (6) et (7). Finalement, on obtient ((n+m).log(n)) Conclusion : discussion sur : (n2 VS ((n+m).log(n)) Si le graphe est tr` es dense, ie, si m=n2 , ou plus formellement m 2 (n ), on pr ef` erera bien s ur la repr esentation matricielle puisque lon a (n2 ) en comparaison de (n2 .log(n)). Si le graphe est peu dense, ie si m << n2 , il convient pr ecisement de comparer les valeurs de n2 et de (n+m).log(n). Par exemple, si m=n, on a alors (n+m).log(n) = n.log(n), il est clair que la seconde approche est meilleure. Si n2 = (n+m).log(n), il faut tenir compte des constantes cach ees de limpl ementation, cest ` a dire raisonner plus en termes decacit es compar ees des deux approches pour choisir.
Th eorie des graphes 7 avril 2011 110 / 125

L. Sais (Algorithmique & Programmation 5)

Calcul eectif des plus courts chemins Il sut dajouter au pr ec edent algorithme, une structure de type tableau et modier l etape (7) P : tableau [sommet] de sommet Cette structure est initialis ee ` a 1 pour tous les sommets du graphe. Le sens attribu e` a P est le suivant : Lid ee est que, disposant de y, on conna t son pr ed ecesseur P[y], dont le pr ed ecesseur est P[P[y]], et ainsi de suite... La modication dans le code ne modie pas la complexit e, elle est relative ` a l etape not ee (7) qui est remplac ee par : si D[y] > D[x]+v(x,y) alors D[y] := D[x]+v(x,y) P[y] := x finsi
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 111 / 125

Exemple

Appliquons lalgorithme de Dijkstra (complet)

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

112 / 125

D=[0,10,3,6,+] et P=[1,1,1,1,1] => choix de 3 do` u C={1,3} et donc D=[0,3+4,3,3+2,] et P=[1,3,1,3,1] D=[0,7,3,5,+] et P=[1,3,1,3,1] => choix de 4 do` u C={1,3,4} et donc D=[0,5+0,3,5,5+1] et P=[1,4,1,3,4] D=[0,5,3,5,6] et P=[1,4,1,3,4] =>choix de 2 do` u C={1,3,4,2} et donc D=[0,5,3,5,6] et P=[1,4,1,3,4]

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

113 / 125

Les chemins optimaux correspondants sont : [1,...2] = [1,...P[2],2] = [1,...4] + (4,2) = [1,...P[4],4] + (4,2) = [1,...3] + (3,4) + (4,2) = [1,...P[3],3] + (3,4) + (4,2) = [1,...1] + (1,3) + (3,4) + (4,2) = (1,3) + (3,4) + (4,2) [1,...3] = [1,...P[3],3] = [1,...1] + (1,3) = (1,3) [1,...4] = [1,...P[4],4] = [1,...3] + (3,4) = [1,...P[3],3] + (3,4) = [1,...1] + (1,3) + (3,4) = (1,3) + (3,4) [1,...5] = [1,...P[5],5] = [1,...4] + (4,5) = [1,...P[4],4] + (4,5) = [1,...3] + (3,4) + (4,5) = [1,...P[3],3] + (3,4) + (4,2) = [1,...1] + (1,3) + (3,4) + (4,5) = (1,3) + (3,4) + (4,5)

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

114 / 125

Preuve : Pour prouver la validit e de lalgorithme de recherche des plus courts chemins, on ajoute deux assertions suppl ementaires :
3

si x C, P[x] est le pr ed ecesseur de x dans le plus court chemin menant de 1 ` ax si x / C, P[x] est le pr ed ecesseur de x dans le plus court chemin sp ecial menant de 1 ` ax

Quand C=1, ces propri et es sont trivialement v eri ees : (3) puisque le seul sommet dans C est le sommet 1 (4) puisque tous les chemins sp eciaux optimaux sont r eduits aux arcs de la forme (1,y). Etudions le cas g en eral, ie, quand on ajoute un sommet x ` a C. On reprend le m eme sch ema de preuve que pour v erier la v eracit e des assertions (1) et (2).

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

115 / 125

propri et e (3) : Cette propri et e est trivialement v eri ee pour les sommets de C avant ajout de x car la valeur de P nest pas modi ee pour ces sommets. Consid erons x ; on doit v erier que P[x] est le pr ed ecesseur de x sur un chemin optimal. Par hypoth` eses, on sait que P[x] est le pr ed ecesseur de x sur un plus court chemin sp ecial de 1 ` a x. Il sut de montrer que le plus court chemin de 1 ` a x est dans C (cest un chemin sp ecial). Ceci revient ` a montrer que le plus court chemin de 1 ` a x ne passe par aucun sommet situ e hors de C ; on le montre par labsurde.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

116 / 125

Soit y, le premier sommet hors de C par lequel passe le plus court chemin de 1 ` a x;

Il est clair que [1,y] est un chemin sp ecial ; par ailleurs, cest un plus court chemin sp ecial car le chemin [1,...y,...x] consid er e est un plus court chemin de 1 ` a x. On a donc : co ut([1,...y,...x]) co ut([1,y]) car par hypoth` ese pour lalgorithme de Dijkstra, i , j , v(i,j) 0, et dapr` es lhypoth` ese (2) vraie en entr ee, donc pour y : co ut([1,y]) D[y]
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 117 / 125

On peut de plus armer lin egalit e D[y] D[x] puisque cest x qui a et e choisi dans S-C, pour minimiser D. On arrive nalement ` a: co ut([1,...y,...x]) D[x] Donc le chemin interne ` a C est un chemin optimal, puisque de co ut inf erieur ` a celui de tout chemin optimal.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

118 / 125

propri et e (4) : On a trois possibilit es concernant la forme du plus court chemin sp ecial de 1` ay: [1,y] reste inchang e, ce chemin sp ecial ne passe pas par x. Lassertion est donc toujours v eri ee puisque P[y] nest mis ` a jour que si on a D[y] > D[x]+v(x,y), ce qui ne peut se pr esenter que si le plus court chemin sp ecial passe par x. [1,y] passe maintenant par x, le chemin est de la forme [1,...x,y], i.e x est lavant dernier sommet du chemin o` u seul y nest pas dans C. Ce cas est trait e par lalgorithme lors de lex ecution de linstruction si D[y] > D[x]+v(x,y) etc... ; En eet, P[y] est mis ` a jour si n ecessaire.

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

119 / 125

[1,y] passe maintenant par x, le chemin est de la forme [1,...,x,z,y] o` u z=x et seul y nest pas dans C. Ce cas peut etre elimin e puisque z a d ej` a et e ins er e dans C avant que x ne le soit, et donc que D[z] a pour valeur la distance de 1 ` a z, et que n ec essairement, le cout du chemin [1,....x,...z,y] ne peut etre inf erieur strictement ` a D[z]+v(z,y), qui a d ej` a et e consid er e lors de linsertion de z dans lensemble C. En n de traitement, tous les sommets, sauf un, sont dans C. Donc, P m emorise pour tous les sommets x de C, leur pr ed ecesseur sur les plus courts chemins et pour xn , le seul sommet hors de C, on sait que P[xn ] a pour valeur le pr ed ecesseur de x sur un plus court chemin sp ecial de 1 ` a xn . Or le chemin optimal de 1 ` a xn est n ecessairement un chemin sp ecial, donc D[xn ] est bien egal ` a son cout. CQFD

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

120 / 125

Probl` eme du plus court chemin


Cas des valuations quelconques et graphes sans circuits : algorithme de Bellman

Cet algorithme repose sur lhypoth` ese suivante : la valuation de chaque arc est quelconque, mais le graphe est sans circuit. Le probl` eme trait e est le probl` eme 2 : on recherche les chemins optimaux dun sommet x1 vers tous les autres sommets du graphe ; puisque le graphe est sans circuit, on supposera de plus que le sommet point de d epart est racine du graphe (unique source).

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

121 / 125

Principe de lalgorithme : Le principe est le suivant ; Un plus court chemin de 1 ` a x doit passer par lun des pr ed ecesseurs y de x, celui pour lequel on a : distance(1,y) + v(y,x) = distance(1,x) Comme pour lalgorithme de Dijkstra, on utilisera donc un tableau D qui aura pour objet de m emoriser distance(1,x) pendant la recherche, i.e D[x]=distance(1,x). Un tableau P sera egalement utilis e pour m emoriser les chemins : P[x]=y si y est le pr ed ecesseur de x sur un plus court chemin menant de 1 ` a x. Le principe repose sur une approche du m eme type que celle utilis ee pour le calcul dune S-s equence pour ce qui concerne lexploration du graphe : si les pr ed ecesseurs y1 , y2 ,... yk de x ont d ej` a et e trait es quand on consid` ere x :

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

122 / 125

On connait les co uts pour les plus courts chemins [1,yi ], le graphe etant sans circuit, on va pouvoir d eterminer le plus court chemin [1,x], puisquil sagit du chemin passant par le yi qui minimise : co ut([1,yi ])+v(yi ,x) Apr` es avoir d etermin e le bon yi , il sura daecter la valeur de la somme D[1,yi ]+v(yi ,x) ` a D[x], puis yi ` a P[x]. Lalgorithme peut alors s ecrire comme suit :

L. Sais (Algorithmique & Programmation 5)

Th eorie des graphes

7 avril 2011

123 / 125

algorithme var x,y:sommet; D:tableau[sommet] de r; P:tableau[sommet] de sommet; M:ens de sommet; debut 1) M := S-{1}; D[1] := 0; P[1] := 1; 2) tantque M <> ensvide faire 3) choix de x dans M / tous les predecesseurs de x sont dans S-M; 4) y := <sommet predecesseur de x qui minimise D[y]+v(y,x)>; 5) M := M-{x}; 6) D[x] := D[y]+v(y,x); 7) P[x] := y; fintq fin
L. Sais (Algorithmique & Programmation 5) Th eorie des graphes 7 avril 2011 124 / 125

Exemple

D=[0, ?, ?, ?, ?, ?] et P=[1, ?, ?, ?, ?, ?] choix de 3 D=[0, ?,-2, ?, ?, ?] et P=[1, ?,1, ?, ?, ?]

choix de 2(ou 5) D=[0,-1,-2, ?, ?, ?] et P=[1,3,1, ?, ?, ?] choix de 5 choix de 6 choix de 4 D=[0,-1,-2, ?,2, ?] et P=[1,3,1, ?,3, ?] D=[0,-1,-2, ?,2,1] et P=[1,3,1, ?,3,5] D=[0,-1,-2,-4,2,1] et P=[1,3,1,6,3,5]
Th eorie des graphes 7 avril 2011 125 / 125

L. Sais (Algorithmique & Programmation 5)

You might also like