Sie sind auf Seite 1von 10

MOCA B1/ RCP 105 Algorithmes de graphes

TECHNIQUES DE PARCOURS DE GRAPHES PARCOURS EN PROFONDEUR DABORD (DEPTH-FIRST SEARCH) PARCOURS EN LARGEUR DABORD (BREADTH-FIRST SEARCH) CALCUL DE LA FERMETURE TRANSITIVE ALGORITHME DE ROY-WARSHALL PLUS COURTS CHEMINS ALGORITHME DIJKSTRA ALGORITHME DE BELLMANN-FORD ALGORITHME DE FLOYD-WARSHALL - METHODE MATRICIELLE FLOTS ALGORITHME DE FORD-FULKERSON ALGORITHME DE BUSACKER ET GOWEN

1/10

2 2 3 4 4 5 5 6 7 8 8 10

CNAM /STIC/ Informatique/R.O

K. Barkaoui

MOCA B1/ RCP 105 Algorithmes de graphes

2/10

Techniques de parcours de graphes


Parcours en profondeur dabord (depth-first search)
Input : graphe Output : fort d'exploration couvrante

Programme principal : Tant qu'il existe sommet s tel que marque (s) = false dfs (s) ; fin tant que Version rcursive procdure recursif_dfs (s : sommet) ; var v : sommet ; marque : boolen ; dbut marque (s) := vrai ; imprimer (s) ; {ordre prfixe} pour tout (v successeur de s) faire : si v non marqu alors recursif_dfs (v) ; finsi finfaire imprimer (s) ; {ordre suffixe} fin. Version itrative procdure iter_dfs (s : sommet) ; var v, u : sommet ; marque : boolen ; p : pile ; dbut vide (p) ; marque (s) := vrai ; push (s, p) ; rpter u := tte (p) ; pour tout (v successeur de u) faire : si v non marqu alors marque (v) := vrai ; imprimer (v) ; {ordre prfixe} push (v, p) ; finsi finfaire imprimer (u) ; {ordre suffixe} pop (p) ; jusqu p = vide ; fin.

CNAM /STIC/ Informatique/R.O

K. Barkaoui

MOCA B1/ RCP 105 Algorithmes de graphes

3/10

Parcours en largeur dabord (breadth-first search)


Input : graphe Output : fort d'exploration couvrante

Programme principal : Tant qu'il existe sommet s tel que marque (s) = false bfs (s) ; fin tant que Version itrative procdure bfs (s : sommet) ; var v, u : sommet ; marque : boolean ; q : file ; dbut vide (q) ; marque (s) := vrai ; inject (s, q) ; rpter u := tte (q) ; pour tout (v successeur de u) faire : si v non marqu alors marque (v) := vrai ; inject (v, p) ; finsi finfaire pop (q) ; jusqu q = vide ; fin.

CNAM /STIC/ Informatique/R.O

K. Barkaoui

MOCA B1/ RCP 105 Algorithmes de graphes

4/10

Calcul de la fermeture transitive Algorithme de Roy-Warshall Calcul de la fermeture transitive dun graphe G dcrit par sa matrice dadjacence M. procdure Roy-Warshall (A : tableau [1..n, 1..n] de boolen) ; var i, j, k : entier ; dbut {initialisation} pour i := 1 n faire pour j := 1 n faire A[i, j] := M[i, j] ; finfaire finfaire {calcul de la matrice dadjacence A de G} pour k = 1 n faire pour i := 1 n faire pour j := 1 n faire A[i, j] := A[i, j] ou (A[i, k] et A[k, j]) ; finfaire finfaire finfaire fin.

CNAM /STIC/ Informatique/R.O

K. Barkaoui

MOCA B1/ RCP 105 Algorithmes de graphes

5/10

Plus courts chemins Algorithme Dijkstra Calcule larborescence des plus courts chemins issus dun sommet donn source numrot 1 . Le graphe G ( X ,U ,V ) est valu positivement : V ( x, y ) 0 ( x, y ) U .
X : ensemble dentier ; d, pre : tableau [1..n] de entier ; dbut dbut {initialisation} X = {2, 3, .., n} ; d(1) := 0 ; pour i := 2 n faire pre (i) := 1 ; si (i successeur de 1) alors d(i) := V(1,i) sinon d(i) := + ; finfaire fin tant que X slectionner j X / d ( j ) = min d ( j )
i X

dbut

pour tout i X / d ( j ) + V ( j , i ) < d (i ) faire d(i) := d(j) + V(j,i) ; pre (i) := j ; finfaire fin fin.

X := X { j} ;

CNAM /STIC/ Informatique/R.O

K. Barkaoui

MOCA B1/ RCP 105 Algorithmes de graphes

6/10

Algorithme de Bellmann-Ford Calcule larborescence des plus courts chemins issus du sommet s dans un graphe valuation quelconque. X : ensemble de sommets ; s : sommet ; {source} v, last : sommet ; dist : rel ; q : file ; pass : entier ; dbut dbut {initialisation} vide (q) ; enfiler (s, q) ; dist (s) := 0 ; pass := 0 last := s ; pour tout v X , v s faire d(v) := + ; pre (v) := 0 ; finfaire fin rpter v := tte (file) ; pop (q) ; pour tout w succ(v ) / dist (v ) + val (v, w) < dist (w) faire dist (w) := dist (v) + val(v,w) ; pre (w) := v ; si w q alors enfiler (w,q) ; finfaire si (q et v = last) alors pass := pass + 1 ; last := queue (file) ; {retourne le dernier lment de la file X} finsi jusqu (q = ou pass n) {q = : terminaison normale, pass n : prsence d'un circuit absorbant} fin.

CNAM /STIC/ Informatique/R.O

K. Barkaoui

MOCA B1/ RCP 105 Algorithmes de graphes

7/10

Algorithme de Floyd-Warshall (mthode matricielle) Calcul des plus courts chemins (pcc) pour tout couple de sommets (x, y) dans un graphe G valu et dcrit par sa matrice de valuation VAL; les sommets sont numrots de 1 n. var V : tableau [1..n, 1..n] de rel ; P : tableau [1..n, 1..n] de entier ; i, j, k : entier ; dbut dbut {initialisation} pour i := 1 n faire pour j := 1 n faire V[i,i] := 0 ; P[i,i] := i ; si i j alors V[i,j] := VAL[i,j] ; P[i,j] := i ; finsi finfaire finfaire fin dbut {calcul des pcc et de la matrice des prdcesseurs P} pour k := 1 n faire pour i := 1 n faire pour j := 1 n faire si ( i j et V[i,k] + V[k,j] < V[i,j]) alors V[i,j] := V[i,k] + V[k,j] ; P[i,j] := P[k,j] ; finsi si (i = j et V[i,k] + V[k,j] < 0) alors imprimer circuit absorbant ; arrt ; finsi finfaire finfaire finfaire fin fin.

CNAM /STIC/ Informatique/R.O

K. Barkaoui

MOCA B1/ RCP 105 Algorithmes de graphes Flots On considre un rseau avec s est le sommet source et p le sommet puit. A chaque arc du rseau est associ un triplet (b, c, d ) : - b reprsente la borne infrieure de capacit (on considre ici b = 0) c reprsente la borne suprieure de capacit (c > 0). d reprsente le cot de transport d'une unit de matire sur cet arc (d positif).

8/10

Le premier problme consiste trouver un flot f de s p de valeur maximum, compte tenu des contraintes de capacit. Il sera rsolu par l'algorithme de Ford-Fulkerson. Le second problme consiste dterminer un flot f de s p de valeur v et de cot minimum. En particulier on pourra obtenir le flot de valeur maximum et de cot minimum. Ce problme sera rsolu l'aide de l'algorithme de Busacker-Gowen (de Roy). Algorithme de Ford-Fulkerson La procdure principale partant d'un flot Phase 1 : Marquer le sommet s, s A . Phase 2 : Soit A l'ensemble des sommets marqus et x A . Marquer tous les successeurs y de x tels que f ( xy ) < c( xy ) (marquage avant). Marquer tous les prdcesseurs y de x tels que f ( yx ) > 0 (marquage arrire). Il s'agit d'un marquage en largeur. Quand on ne peut plus rien marquer, deux ventualits se prsentent : - p est marqu : passer la phase 3 . p ne peut tre marqu : passer la phase 4 .

fi

de valeur

vi

est la suivante.

Phase 3 : p est marqu : on a obtenu une chane allant de s p , o :


s xj x j+1 x i +1 xi p x parcourus vers l'avant ( + ) sont non saturs :

tous les arcs ( xi xi+1 )

f ( xi xi +1 ) < c( xi xi +1 ) . Soit alors m1 = min c( xi xi +1 ) f ( xi xi +1 ) pour ces arcs "avant".

tous les arcs x j x j+1 parcourus vers l'arrire ( ) sont de flot non nul : f x j +1 x j > 0 . Soit alors m2 = min f x j +1 x j pour ces arcs "arrire".

CNAM /STIC/ Informatique/R.O

K. Barkaoui

MOCA B1/ RCP 105 Algorithmes de graphes

9/10

Soit m = min(m1 , m2 ) > 0 : on peut alors le long de cette chane faire passer une quantit de
f i +1 ( xy ) = f ( xy ) si ( xy ) dfini par : f i +1 ( xy ) = f ( xy ) + m si ( xy ) + f ( xy ) = f ( xy ) m si ( xy ) i +1

matire m supplmentaire de s p ; il suffit pour cela de prendre le nouveau flot f i+1 ( xy )

On vrifie aisment que vi +1 = vi + m , et que les nouveaux flots f i +1 satisferont galement la loi de conservation des flux en chaque sommet ; on peut en effet se trouver dans l'un des quatre cas possibles :

f1
1 p

e1 p

f 2
2 p

e2 p

f 3
3 p

e3 p

f 4
4 p

e4 p

p p

s1 p

s2 p

s3 p

s4 p

On revient la phase 2. Phase 4: p ne peut tre marqu. On a ainsi construit une coupe (A, A ) avec A est lensemble des sommets marqus et A lensemble des non marqus A ( s A, p A ). x A, f ( xy ) = c( xy ) Pour cette coupe, on a : sinon on aurait pu marquer y . y A, f ( yx ) = 0 En sommant sur tous les x A, y A : f ( A, A ) = c( A, A ) et On trouve ainsi, que pour le flot et la coupe considrs : f ( A, A ) = f ( A , A) = c( A, A ) , soit en vertu de la relation fondamentale flot/coupe : v = c(A, A ).
f ( A , A) = 0 .

On est donc l'optimum : Le flot f est de valeur maximale et (A, A ) est une coupe de capacit minimale. - En pratique, on vrifiera bien que : - les arcs sortants de la coupe (du type les arcs entrants dans la coupe (du

( A, A ) ) sont saturs type ( A , A) ) sont de flot nul.

CNAM /STIC/ Informatique/R.O

K. Barkaoui

MOCA B1/ RCP 105 Algorithmes de graphes Algorithme de Roy (Busacker et Gowen) On recherche un flot de valeur maximale (ou de valeur v donne) et de cot minimal. Etape 0 On part d'un flot initial de valeur v 0 = 0 , ce flot est ralisable (tous les b sont nuls) et de cot minimal (tous les d sont positifs). Etape i
Soit f i1 ( xy ) les flots obtenus l'tape prcdente de valeur globale vi 1 et de cot Di 1 .
i On construit le graphe d'cart G E correspondant ce flot :

10/10

Si 0 < f i 1 ( xy ) < c( xy )

ci ( xy ) = c( xy ) f i 1 ( xy ) ci ( yx ) = f i1 ( xy ) i avec et ( yx ) G E avec di ( xy ) = d ( xy ) di ( yx ) = d ( xy ) Si 0 < f i 1 ( xy ) = c( xy )

( xy ) G ( xy ) G

i E

ci ( yx ) = c( xy ) i et ( yx ) G E avec d i ( yx ) = d ( xy ) Si f i 1 ( xy ) = 0
i E

ci ( xy ) = c( xy ) i avec et ( yx ) GE d i (xy ) = d ( xy ) i On cherche sur G E le chemin de cot minimal, allant de s p .

( xy ) G

i E

Si un tel chemin existe, soit mi la capacit minimale des arcs constituant ce chemin et d i le cot de passage de mi units de matire le long de ce chemin. On obtient alors un nouveau flot de valeur vi = vi 1 + mi et de cot minimal Di = Di 1 + d i .
i i Passer ltape i + 1 . (on construit directement GE+1 partir de G E )

Si ce chemin n'existe pas, on est l'optimum (f*(x, y) = ci(y, x)).

Cet algorithme permet de fournir tous les flots de cot minimum de valeur v v max imum .

CNAM /STIC/ Informatique/R.O

K. Barkaoui

Das könnte Ihnen auch gefallen