Vous êtes sur la page 1sur 52

ARBRES

.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

Reprsentation des Graphes


On s intresse aux graphes orients.
MATRICE D INCIDENCE NUD-ARC

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

MATRICE D ADJACENCE NUDNOEUD

1 si (i, j ) E Mij = 0 sinon


Les lments peuvent tre des boolens ou des entiers.
F.GHADI 8

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

STRUCTURE GENERALE DES PARCOURS


A QOUI PEUVENT SERVIR LES PARCOURS? A dterminer les plus courts chemins, les composantes connexes ou fortement connexes Les graphes planaires, etc

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

3) pour tout xV faire 4) si Etat[x]=non-atteint alors 5) A-traiter A-traiter U{x}

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

O(m) Total O(n)

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 :

1- On fait dfiler les sommets dans l ordre des numros

2- On examine les successeurs d un sommet dans le mme ordre.

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

Ordre du parcours : 1,2,4,5,3. 3


F.GHADI 26

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)

12 for each v in Adj[u] 13 do if color[v]=White 14 then color[v] 15 d[v] Gray

d[u]+1 16 P[v] u 17 ENQUEUE (Q,v) F.GHADI

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

5 for each vertex u in V 6 do if color[u]=White


F.GHADI

7 then DFS-VISIT(u)

34

Procdure DFS-VISIT(u)
1 color(u) 2 Time 3 d[u] Gray Time+1 Time

4 for each v in Adj[u] 5 do if color[v]=White 6 then P[v] 7 DFS-VISIT(v) 8 color[u]


F.GHADI

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 :

[d(u), f (u)] et [d (v), f (v)] sont disjoints


[d(u), f (u)][d(v), f (v)] [d(v), f (v)][d(u), f (u)]
Preuve : Exercice

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

Preuve : facile tablir

Strongly-Connected-components (G) Algorithm


1) Call DFS (G) : To compute finishing times f[u] for each vertex 2) Compute GT
3) Call DFS (GT) : but in the main loop of DFS, consider the vertices in order of decreasing f[u] 4) Output the vertices of each tree in the depth-first-forest formed in Line 3 as a separate strongly connected component

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

Reconnaissance d un graphe orient sans circuit


Lemme
Si G=(V,E) est un graphe orient sans circuit, il existe x dans V tel que d-(x)=0.

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

Reconnaissance d un graphe orient sans circuit


Thorme
Un graphe orient G=(V,E) est sans circuit, si, et seulement si il existe un x dans V tel que d-(x)=0 et quelque soit x tel que d-(x)=0, G-{x} est sans circuit.
) Lemme prcdent xV tel que d-(x)=0

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

Reconnaissance d un graphe orient sans circuit


Thorme
Un graphe orient G=(V,E) est sans circuit, si, et seulement si, il existe une permutation =(x1, ,xn) des sommets de G tel que

d ( xi ) = 0
Ou Gi=G[{xi, . ,xn}] (On supprime les i-1 premiers sommets) F.GHADI
45

Gi

Reconnaissance dun graphe orient sans circuit


Preuve :
) G S.C. Lemme prcdent xV tel que d-(x)=0 Thorme prcdent G-{x} est S.C. Une permutation =(y1, , yn-1) de G-{x} H.R. satisfaisant aux conditions du thorme. La permutation (x, y1, , yn-1) convient. ) On suppose quil existe une permutation Gn un seul sommet est sans circuit On suppose que Gi+1 est S.C. Thorme prcdent Gi lest aussi On en dduit que G1=G est S.C.
F.GHADI 46

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

4) pour tout x V faire Si d-(x)=0 alors A_traiter A_traiter U{x}


F.GHADI 47

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

6) Si compteur = n alors G est sans circuit Si non G a un circuit


48

Compteur+1

Problme du Labyrinthe
Point de dpart
X

F.GHADI

49

Exploration en profondeur (DFS)


1 2 3 6
7

4 5

10

F.GHADI
11

50

Exploration en largeur (BFS)


1

F.GHADI

51

Diffrences fondamentales entre BFS & DFS


DFS est exprim par une procdure rcursive du fait que la structure de donnes sous-jacentes est une pile BFS admet une ralisation non rcursive du fait que sa structure des donnes est une file dattente

F.GHADI

52