Académique Documents
Professionnel Documents
Culture Documents
.Dfinition : Un graphe G=(V,E) est un arbre s il est connexe sans cycle. Un graphe sans cycle est une fort (runion d arbres)
Lemme : Soit G=(V,E) un graphe (non orient). 1 - Si G est sans cycle et |E|>=1 alors G possde au moins un sommet de degr 1. 2 - Si G est sans cycle alors on a |E|<=|V|-1 3- Si G est connexe et |E|=|V|-1 alors G possde au moins un sommet de degr gal 1 4- Si G est connexe alors |E|>=|V|-1
F.GHADI 1
Dmonstration
1) Soit u=(x1, x2,,xk) une chane lmentaire de longueur maximale (que l on ne peux pas prolonger). |E|>=1 donc il existe au moins une arte donc k>=2. Si d(x1) est diffrent de 1, on trouve y voisin de x1 et diffrent de x2. Si y{x3, x4,,xk}, on a un cycle, ce qui est impossible. Donc y est diffrent de tous les xi donc la chane peut tre prolonge, ce qui est impossible par hypothse car la chane est suppose maximale.
F.GHADI
Dmonstration
G est suppos connexe donc le degr de chaque sommet est suprieur ou gal 1. Supposons que ce degr soit toujours diffrent de 1. La somme des degrs est alors suprieur 2|V|. Or, cette somme est gale au double du nombre d artes, qui par hypothse vaut |V|-1.
F.GHADI 3
Arbre
Thorme : Les proprits suivantes sont quivalantes : 1- G=(V,E) est un arbre; 2- G est sans cycle et |E|=|V|-1; 3- G est connexe et |E|=|V|-1; 4- G est sans cycle maximal; 5- G est connexe minimal; 6- Deux sommets quelconques sont relis par une unique chane lmentaire;
F.GHADI 4
1 si le sommet i est le but de l' arc j Mij = 0 si le sommet i et l' arc j ne sont pas adjacents 1si le sommet i est l' origine de l' arc j
F.GHADI
e2 e5
2 e7 e4 e6 5
e1
e3
1 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1
F.GHADI 6
Remarques
1. Seulement 2m cases de la matrice sont non nulles sur nm cases. 2. Elle occupe beaucoup de places mmoire. 3. Son utilisation apporte rarement de bons rsultats aux niveau des algorithmes. (parcours des graphes, etc) 4. Elle est utilise dans les problmes du recherche du flot maximum.
F.GHADI
e2 e5
2 e7 e4 e6 5
e1
e3 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0
4 0 1 0 0 0 0 1 0 1 0
9
F.GHADI
Remarques
1. La matrice occupe un espace mmoire de l ordre de n2 2. Seulement m cases de la matrice sont non nulles sur n2 3. Elle permet d implmenter facilement les algorithmes (cas des graphes simples) 4. Pour savoir sir un arc (i,j) existe dans le graphe, il faut O(1) oprations. 5. La recherche du degr d un sommet ncessite O(n) oprations. 6. La recherche des degrs de tous les sommets ncessite O(n2) oprations.
F.GHADI
10
LISTES
On donne pour chaque sommet la liste des successeurs :
L(s) = {t V /(s, t ) E}
F.GHADI
11
e2 e5
2 e7 e4 e6 5
e1
3 1 2 3 4 5
e3 2 4 1
. .
4 5 3
.
5
.
12
F.GHADI
Remarques
1.
2.
3.
4.
. Les listes occupent un espace mmoire en O(n+m) : moins de places mmoire que la matrice d adjacence et la matrice d incidence. Pour savoir si un arc (i,j) existe dans le graphe, il faut parcourir toute la liste dans le tableau, c--d O(d+(i)) d oprations. La recherche du degr d un sommet ncessite O(d+(i)) d oprations. Si on cherche les degrs de tous les sommets il faut O(n+m) oprations. Cette reprsentations est trs bien adapte au parcours des graphes.
F.GHADI 13
Remarque Pour les graphes non orients, on code symtriquement : l arte ij sera code par les arcs (i,j) et (j,i).
F.GHADI
14
F.GHADI
15
ALGORITHME GENERAL
Initialisation Tant que non-fini faire Slection d un sommet Traitement du sommet
F.GHADI 16
DESCRIPTION
Un sommet a trois statuts possibles : Non-atteint : L algorithme ne le connat pas encore. Atteint : L algorithme rencontr le sommet,mais ne l a pas encore trait. Examin : L algorithme a trait le sommet : Il le connat ainsi que tous ses voisins.
F.GHADI 17
Analyse de l Algorithme
1) pour tout xV faire Etat[x] 2) T Vide ; A-traiter Non-atteint vide
Etat[x] Atteint 6) tant que A-traiter non vide faire 7) y Choix (A-traiter) A-traiter A-traiter-{y} F.GHADI
18
8) pour tout z+(y) faire 9) si Etat[z]=non-atteint faire 10) T 11) Etat[z] 12) A_traiter 13) Etat[y] T U{(y,z)} atteint A_traiter U {z} Examin
F.GHADI
19
Remarques
1. Chaque sommet entre une fois et une seule dans A_traiter (4 et 12). Quand il entre dedans, il change d tat, ce qui l empche d y entrer une seconde fois. 2. La boucle de la ligne 6 garantie que tout sommet sortira de l algorithme en tant pass l tat examin. 3. Lorsquun sommet y est sorti de A_traiter, on examine son voisinage G+(y). Chaque arc sera vu une fois et une seule.
F.GHADI 20
Remarques (Suite)
Dans T, on aura une fort oriente. En effet, on part d un sommet x pour raliser un parcours, ce sommet x (ligne 3) sera racine d un des arbres de la fort T, les autres sommets visits aprs x ne seront pas racine.
F.GHADI
21
Complxit
On suppose quun ajout ou suppression dans A_traiter cote O(1). On suppose que le choix dans A_traiter cote O(1), ce qui n est pas toujours vrai (dpend des critres de choix)
1) O(n) 2) sera cod comme un tableau O(1) ou O(n) 3) o(n) (On ne compte pas l intrieur de la boucle) 4) et 5) O(n), 7) O(n), 8) 9) 10) et 11) d+(y)
F.GHADI
O(n), O(n+m) 22
Parcours en largeur
Breadth-first search
C est une gnralisation des parcours hirarchiques des arbres (on regarde la racine puis les voisins, puis les voisins des voisins, )
critre de choix Un sommet atteint isr F sera toujours un sommet examin. n I st La variable A-traiter sera ir (F gre comme une file F.GHADI FO FI
t) u O t
23
Parcours en largeur
Breadth-first search
On ajoute deux rgles :
F.GHADI
24
Algorithme
Visiter un sommet s Si s n a pas encore t enfil alors enfiler s; Tant que la file n est pas vide faire Soit n le premier sommet de la file; {Traitement de n} dfiler; enfiler tous les successeurs non encore enfils de n Fin tant que
F.GHADI
25
Exemple
1 2
Parcours en largeur
Application Soit G=(V,E) un graphe donn avec un sommet distingu s : source
Le parcours en largeur permet d explorer le graphe G pour dterminer tous les sommets lis s : Il permet de trouver l arbre de racine s Pour chaque sommet v li s, le chemin, trouver par BFS, entre s et v correspond au plus petit chemin de s v dans G. L algorithme BFS s applique aux graphes orients et non orients
F.GHADI 27
Parcours en largeur
Suite
La procdure BFS suivante suppose que le graphe d entr G=(V,E) est reprsent par un tableau de listes d adjacences. La couleur de chaque sommet,u, sera stocke dans la variable color[u] Le prdcesseur de u est stock dans P[u] Si u n a pas de parent (exple: s ou non atteint alors P[u]=NIL La distance de s au sommet u calcule par l algorithme sera stocke dans d[u]
F.GHADI 28
Procdure BFS(G,s)
1 for each vertex u in V-{s} 2 do color[u] 3 d[u] 4 P[u] 5 color[s] 6 d[s] 7 P[s] 8Q 0 NIL Empty White infinity NIL Gray 9 ENQUEUE (Q,s) 10 While Q non empty 11 do u DEQUEUE(Q)
29
BFS
(Suite)
Lorsquil n y a pas de chemin entre s et un sommet v (s,v) est infinie On admet que le parcours en largeur calcul le chemin le plus court de s n importe quel sommet v de G. La longueur du chemin est d[v].
F.GHADI
30
Exercices
Exercice 01 :
Soit G=(V,E) un graphe orient ou non et soit s un sommet de V quelconque, alors quelque soit (u,v) appartenant E on a : (s,v)<=(s,u)+1 Exercice 02 : Soit G=(V,E) un graphe orient ou non. Une fois la procdure BFS est excute partir d un sommet s alors on a d[v]>=(s,v) quelque soit v dans V
F.GHADI 31
Parcours en Profondeur
Depth-First Search(DFS)
On part d un sommet, on va voir un de ses voisins, puis un voisin du voisin, jusqu tre bloqu, alors on va en arrire. Le critre de choix sera ici le dernier sommet atteint sera examin. On utilise une pile LIFO (Last In First out) DFS est utilise pour tudier les cfc.
F.GHADI
32
DFS
(Suite)
Dans cette procdure on associe chaque sommet, u, deux pointeurs : d[u]et f[u]. Le premier indique sa dcouverte, Le deuxime indique l tape ou le sommet est examin. On note que :
F.GHADI
gr
1<=d[u]<f[u]<=2|V|
ap
he
pe
ut
tr e
or ien
Le
t ou n
33
on
Procdure DFS(G)
1 for each vertex u in V 2 do color[u] 3 P[u] 4 Time White NIL 0
7 then DFS-VISIT(u)
34
Procdure DFS-VISIT(u)
1 color(u) 2 Time 3 d[u] Gray Time+1 Time
u Black
35
9 f[u]
Time
Time+1
Analyse de DFS
8 Lignes
1-3 : colorent tous les sommets en blanc 8 Ligne 4 initialise le conteur global 8 Lignes 5-7 traitent tous les sommets du graphes. 8 Si un sommet est blanc il sera trait par DFSVISIT. 8 Une fois la procdure termine, tous les sommets ont un temps de dcouverte d[u] et un temps de fin de traitement f[u]
F.GHADI 36
PRORIETES DE DFS
Thorme de parenthsage
Dans le procdure DFS, pour tout couple de nuds (u,v), on a lune des trois conditions suivantes :
F.GHADI
37
PRORIETES DE DFS
(Suite) Corollaire : (G orient ou non) Un nud v est un successeur de u dans la fort gnre par DFS
c
[d (u), f (u)] [d (v), f (v)]
Preuve : Thorme prcdent
F.GHADI 38
PRORIETES DE DFS
(Suite)
Thorme du chemin blanc: Soit G=(V,E) un graphe orient ou non. Dans la fort gnre par DFS, un nud v est un successeur de u
c
A ltape d[u], le sommet v peut tre atteint partir de u via un chemin (chane) compos(e) que de nuds colors en blanc
Preuve : Voir polycopi
F.GHADI
39
APPLICATION
Recherche de composantes fortement connexes dans un graphe orient Dfinition Soit G=(V,E) un graphe orient. Une composante fortement connexe est un sous-ensemble maximal de sommet, not C, tel que pour chaque paire de sommets u et v dans C on ait un chemin de u vers v et un chemin de v vers u ; i.e : les sommets u et v sont mutuellement accessibles. Dfinition On dfinit le transpos de G=(V,E), not GT , dfini comme suit : GT:=(V,ET), avec ET:{(u,v) / (v,u) E } est constitu des arcs de G dans le sens inverse.
Thorme : G et GT ont les mmes composantes fortement connexes
F.GHADI 40
F.GHADI
41
Strongly-Connected-components (G)
(Suite)
Thorme : Strongly- Connected-Components (G) calcule les composantes fortement connexes dun graphe orient
Preuve : Exercice
F.GHADI
42
Preuve :
Considrons un chemin maximal =(x1, x2, xk). Supposons d-(x1)>0, soit y un lment de -(x1). si y nest pas dans , alors (y, x1, x2, xk) est un chemin. Ce qui contredit la maximalit. si y est dans , alors (y, x1, x2,xi,y) est un circuit. F.GHADI Impossible.
43
De plus tout sous-graphe dun graphe sans circuit est sans circuit ) Par hypothse xV tel que d-(x)=0, de plus G-{x} est S.C. Si G contient un circuit, il passe ncessairement pas x. Donc d-(x)>0. Absurde.
F.GHADI 44
d ( xi ) = 0
Ou Gi=G[{xi, . ,xn}] (On supprime les i-1 premiers sommets) F.GHADI
45
Gi
Algorithme
1) pour tout xV faire d-[x] 2) pour tout x V faire Pour tout y +(x) faire d-[y] 3) A_traiter Compteur 0 d-(y)+1 0
Algorithme (Suite)
5) tant que A_traiter faire x A_traiter Premier (A_traiter) A_traiter-{x}
Pour tout y +(x) faire d-(y) Si d-(y)=0 alors A_traiter Compteur A_traiter U{y}
F.GHADI
d-(y)-1
Compteur+1
Problme du Labyrinthe
Point de dpart
X
F.GHADI
49
4 5
10
F.GHADI
11
50
F.GHADI
51
F.GHADI
52