SlideShare une entreprise Scribd logo
1  sur  78
Télécharger pour lire hors ligne
Cours n: Graphes 
Olivier Bournez 
bournez@lix.polytechnique.fr 
LIX, Ecole Polytechnique 
2011-12 Algorithmique 
1
Aujourd'hui 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
2
Un graphe oriente 
Un graphe oriente (digraph) est donne par un couple 
G = (V; E), ou 
I V est un ensemble. 
I E  V  V. 
Exemple: 
I V = f0; 1; : : : ; 6g. 
I E = f(0; 1); (3; 4); (5; 1); (6; 3); (6; 4); (6; 6)g. 
1 
0 
3 
2 
4 
5 
6 
3
Vocabulaire 
1 
0 
3 
2 
4 
5 
6 
Les elements de V sont appeles des sommets (parfois aussi 
des nuds). 
Les elements e de E sont appeles des arcs. 
Si e = (u; v), u est appele la source de e, v est appele la 
destination de e. 
Remarque: 
I Les boucles (les arcs (u; u)) sont autorisees. 
4
Un graphe 
Un graphe1 est donne par un couple G = (V; E), ou 
I V est un ensemble. 
I E est un ensemble de paires fu; vg avec u; v 2 V. 
On convient de representer une paire fu; vg par (u; v) ou 
(v; u). 
Autrement dit, (u; v) et (v; u) denotent la m^eme ar^ete. 
Exemple: 
I V = f0; 1; : : : ; 6g 
I E = f(0; 1); (3; 4); (5; 1); (6; 3); (6; 4)g. 
1 
0 
3 
2 
4 
5 
6 
1Lorsqu'on ne precise pas, par defaut, un graphe est non-oriente. 
5
Vocabulaire 
1 
0 
3 
2 
4 
5 
6 
Les elements e de E sont appeles des ar^etes. Si e = (u; v), u 
et v sont appeles les extremites de e. 
Remarque: (sauf autre convention explicite) 
I Les boucles ne sont pas autorisees. 
6
Vocabulaire (cas non-oriente) 
1 
0 
3 
2 
4 
5 
6 
u et v sont dits voisins s'il y a une ar^ete entre u et v. 
Le degre de u est le nombre de voisins de u. 
7
Vocabulaire (cas non-oriente) 
1 
0 
3 
2 
4 
5 
6 
Un chemin du sommet s vers le sommet t est une suite 
e0; e1;    ; en de sommets telle que e0 = s, en = t, 
(ei1; ei ) 2 E, pour tout 1  i  n. 
I n est appele la longueur du chemin, et on dit que t est 
joignable a partir de s. 
I Le chemin est dit simple si les ei sont distincts deux-a-deux. 
I Un cycle est un chemin de longueur non-nulle avec e0 = en. 
Le sommet s est dit a distance n de t s'il existe un chemin de 
longueur n entre s et t, mais aucun chemin de longueur 
inferieure. 
8
Composantes connexes (cas non-oriente) 
Prop. La relation ^etre joignable est une relation 
d'equivalence. 
Les classes d'equivalence sont appelees les composantes 
connexes. 
1 
0 
3 
2 
4 
5 
6 
Un graphe est dit connexe s'il n'y a qu'une seule classe 
d'equivalence. 
I Autrement dit, tout sommet est joignable a partir de tout 
sommet. 
9
Les graphes sont partout! 
Beaucoup de problemes se modelisent par des objets et des 
relations entre objets. 
Exemples: 
I Le graphe routier. 
I Les reseaux informatiques. 
I Le graphe du web. 
Beaucoup de problemes se ramenent a des problemes sur les 
graphes. 
Theorie des graphes: 
I Euler, Hamilton, Kirchho, Konig, Edmonds, Berge, Lovasz, 
Seymour,. . . 
Les graphes sont omnipresents en informatique. 
10
Theorie des graphes. Exemple 1: graphes planaires. 
Un graphe est dit planaire s'il peut se representer sur un plan 
sans qu'aucune ar^ete n'en croise une autre. 
Planaire: 
Non-planaire: K5 K3;3 
Theoreme [Kuratowski-Wagner] Un graphe
ni est planaire ssi 
il ne contient pas de sous-graphe qui soit une expansion de K5 
ou de K3;3. 
I Une expansion consiste a ajouter un ou plusieurs sommets sur 
une ou plusieurs ar^etes (exemple: devient ) 
11
Theorie des graphes. Exemple 1: graphes planaires. 
Un graphe est dit planaire s'il peut se representer sur un plan 
sans qu'aucune ar^ete n'en croise une autre. 
Planaire: 
Non-planaire: K5 K3;3 
Theoreme [Kuratowski-Wagner] Un graphe
ni est planaire ssi 
il ne contient pas de sous-graphe qui soit une expansion de K5 
ou de K3;3. 
I Une expansion consiste a ajouter un ou plusieurs sommets sur 
une ou plusieurs ar^etes (exemple: devient ) 
11
Theorie des graphes. Exemple 2: Coloriage de graphe. 
Allouer des frequences GSM correspond a colorier les sommets 
d'un graphe. 
I sommets: des emetteurs radio. 
I ar^ete entre u et v: le signal de u perturbe v ou 
reciproquement. 
I couleur: frequence radio. 
Le probleme de coloriage d'un graphe: colorier les sommets 
d'un graphe de telle sorte qu'il n'y ait aucune ar^ete entre deux 
sommets d'une m^eme couleur. 
Un coloriage avec 4 couleurs 
12
Theorie des graphes. Exemple 2: Coloriage de graphe. 
Theoreme: Appel et Haken (76): tout graphe planaire est 
coloriable avec 4 couleurs (preuve avec 1478 cas critiques). 
I Robertson, Sanders, Seymour, Thomas, Gonthier, Werner. 
On ne conna^t aucun algorithme pour determiner si un graphe 
general est coloriable avec 4 couleurs (m^eme avec 3) qui 
fonctionne en temps polynomial (le probleme est 
NP-complet). 
13
Applications des graphes. Exemple 3: evaluer une page de 
la toile 
BrevetMethod for Node Ranking in a Linked Database 
(Universite Stanford, Janvier 1997). 
En simpli
ant. 
I On considere le graphe des liens entre pages. 
I Modele theorique: 
 Avec probabilite 0  c  1, un surfeur abandonne la page 
actuelle et recommence sur une des n pages du web, choisie 
de maniere equiprobable. 
 Avec probabilite 1  c, le surfeur suit un des liens de la page 
actuelle j , choisie de maniere equiprobable parmi tous les liens 
lj emis. 
I Quelle que soit la distribution initiale, on convergera vers une 
unique distribution stationnaire. 
I On evalue une page par la probabilite de cette page dans la 
distribution stationnaire. 
14
Aujourd'hui 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
15
Les arbres 
Un graphe2 connexe sans cycle est appele un arbre (libre). 
Un graphe2 sans-cycle est appele une for^et: 
I chacune de ses composantes connexes est un arbre. 
1 
0 
3 
2 
4 
5 
6 
2non-oriente. 
16
Les arbres sont partout! 
Un graphe2 connexe sans cycle est appele un arbre (libre). 
Un graphe2 sans-cycle est appele une for^et: 
I chacune de ses composantes connexes est un arbre. 
Des qu'on a des objets, des relations entre objets, et pas de 
cycle, on a donc un arbre ou une for^et. 
1 
0 
3 
2 
4 
5 
6 
2non-oriente. 
16
Les arbres sont partout! 
Un graphe2 connexe sans cycle est appele un arbre (libre). 
Un graphe2 sans-cycle est appele une for^et: 
I chacune de ses composantes connexes est un arbre. 
Des qu'on a des objets, des relations entre objets, et pas de 
cycle, on a donc un arbre ou une for^et. 
1 
0 
3 
2 
4 
5 
6 
Les arbres sont omnipresents en informatique. 
2non-oriente. 
16
Une caracterisation  Quelques proprietes 
Soit G = (V; E) un graphe3. Les proprietes suivantes sont 
equivalentes: 
G est un arbre (libre). 
Deux sommets quelconques de V sont connectes par un 
unique chemin simple. 
G est connexe, mais ne l'est plus si on enleve n'importe 
laquelle de ses ar^etes. 
G est connexe, et jEj = jVj  1. 
G est sans cycle, et jEj = jVj  1. 
G est sans cycle, mais ne l'est plus si l'on ajoute n'importe 
quelle ar^ete. 
1 
0 
3 
2 
4 
5 
6 
3non-oriente. 
17
Les arbres poussent de haut en bas en informatique 
On distingue souvent un sommet que l'on appelle sa racine. 
On dessine un arbre 
I en placant la racine tout en haut. 
I puis en placant les sommets a distance i de la racine a la ligne 
i . 
Exemple: pour l'arbre libre precedent, en prenant le sommet 
d'etiquette 3 comme racine. 
3 
1 
5 0 
4 6 
2 
18
Une vision recursive: cas general 
Un arbre correspond a un couple forme 
1. d'un sommet particulier, appele sa racine, 
2. et d'une partition des sommets restants en un ensemble 
d'arbres. 
Cette vision permet de faire des preuves inductives. 
I Exemple: montrer qu'un arbre dont tous les sommets sont 
d'arite au moins 2 possede plus de feuilles que de sommets 
internes. 
Mais reste informatiquement encore un peu compliquee. 
19
Plan 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
20
Une vision recursive: arbres binaires 
Plus simple: Les arbres binaires. 
3 
1 
5 
4 
2 0 
Un arbre binaire est 
I soit vide 
I soit l'union disjointe d'un sommet, appele sa racine, d'un 
arbre binaire, appele sous-arbre gauche, et d'un arbre binaire, 
appele sous-arbre droit. 
Autrement dit, un arbre binaire d'entiers est solution de 
l'equation: 
A = null ] (A  int  A) 
21
Attention: Arbre binaire6= Arbre d'arite  2. 
Un arbre binaire a tous ses sommets d'arite 0, 1 ou 2. 
Mais les concept d'arbre de degre  2 et d'arbre binaire sont 
dierents. 
En fait, 1 
2 
3 
et 1 
2 
3 
ne sont pas les m^eme arbres binaires, car 
(((;; 3; ;); 2; ;); 1; ;)6= (;; 1; ((;; 3; ;); 2; ;)) 
22
De
nir un arbre binaire en JAVA 
Slogan: 
Liste: 
1 
Arbre binaire: 
1 
On code un arbre vide par la reference null , et un arbre 
non-vide par une instance de la classe Arbre. 
class Arbre { 
int val; Arbre gauche, droite; 
Arbre (Arbre gauche, int val, Arbre droite) { 
this.gauche = gauche; 
this.val = val; 
this.droite = droite; }} 
23
Construire un arbre binaire 
new Arbre ( 
new Arbre ( 
new Arbre (null,5,null), 
1, 
null), 
3, 
new Arbre ( 
new Arbre (null,2,null), 
4, 
new Arbre (null,0,null))) 
3 
1 
5 
4 
2 0 
24
Plan 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
25
Parcourir un arbre 
Beaucoup d'algorithmes sur les arbres necessitent de parcourir 
(traiter) tous les sommets 
I Exemple: Tester l'existence d'une valeur particuliere dans un 
arbre. 
I Exemple: Acher un arbre. 
Il existe une terminologie standard pour quali
er les parcours. 
I On peut parcourir de gauche a droite, ou de droite a gauche. 
I Une fois ce choix fait, on distingue les parcours 
 en largeur. 
 en profondeur: 
 pre
xe, 
 in
xe, 
 suxe. 
26
Parcourir en largeur 
Parcours en largeur d'abord. 
I on parcourt par distance croissante a la racine. 
3 
1 
5 
4 
2 0 
Si le traitement d'un sommet consiste a l'acher, on achera 
dans l'ordre 3, 1, 4, 5, 2, 0. 
C'est peut-^etre le parcours le plus naturel, mais c'est le plus 
delicat a programmer avec les arbres binaires. 
27
Parcourir en profondeur 
Parcours en profondeur d'abord: 
I on parcourt recursivement. 
Mais il reste trois possibilites 
I Pre
xe: traiter la racine, parcourir le sous-arbre gauche, puis le 
sous-arbre droit. 
I In
xe: parcourir le sous-arbre gauche, traiter la racine, 
parcourir les sous-arbre droit. 
I Suxe (appele aussi post
xe): parcourir le sous-arbre gauche, 
le sous-arbre droit, puis traiter la racine. 
28
Parcours en profondeur: pre
xe 
3 
1 
5 
4 
2 0 
Si le traitement d'un sommet consiste a l'acher, on achera 
dans l'ordre 3, 1, 5, 4, 2, 0. 
static void Affiche(Arbre a) { 
i f (a==null) return; 
System.out.println(a.val+ ); 
Affiche(a.gauche); 
Affiche(a.droite); 
} 
29
Parcours en profondeur: in
xe 
3 
1 
5 
4 
2 0 
Si le traitement d'un sommet consiste a l'acher, on achera 
dans l'ordre 5, 1, 3, 2, 4, 0. 
static void Affiche(Arbre a) { 
i f (a==null) return; 
Affiche(a.gauche); 
System.out.println(a.val+ ); 
Affiche(a.droite); 
} 
30
Parcours en profondeur: post
xe 
3 
1 
5 
4 
2 0 
Si le traitement d'un sommet consiste a l'acher, on achera 
dans l'ordre 5, 1, 2, 0, 4, 3. 
static void Affiche(Arbre a) { 
i f (a==null) return; 
Affiche(a.gauche); 
Affiche(a.droite); 
System.out.println(a.val+ ); 
} 
31
De l'iteratif? Parcourir en largeur? 
Voici un algorithme generique iteratif de parcours d'arbre. 
ParcoursGenerique(Arbre a, racine s): 
I L := fsg 
I B := fs:gauche; s:droiteg 
I Tant que B6= ; 
 choisir u dans B 
 L := L [ fug. 
 B := B  fug. 
 B := B [ (fu:gauche; u:droiteg  L) 
Si B est implemente 
I par une pile, on parcourt en profondeur (pre
xe). 
I par une
le, on parcourt en largeur. 
32
Aujourd'hui 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
33
Plan 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
34
Representation des graphes: matrice d'adjacence 
Matrice d'ajacence. Pour G = (V; E), V = f1; 2; : : : ; ng, on 
represente G par une matrice M n  n. 
Mi ;j = 
 
1 si (i ; j) 2 E 
0 sinon 
I Si graphe value: Mi ;j = v(i ; j ). 
1 
0 
3 
2 
4 
5 
6 
0 
BBBBBBBB@ 
0 1 0 0 0 0 0 
1 0 0 0 0 1 0 
0 0 0 0 0 0 0 
0 0 0 0 1 0 1 
0 0 0 1 0 0 1 
0 1 0 0 0 0 0 
0 0 0 1 1 0 0 
1 
CCCCCCCCA 
35
Plan 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
36
Representation des graphes: liste de successeurs 
On associe a chaque sommet i , la liste des sommets j tels que 
(i ; j) 2 E. 
1 
0 
3 
2 
4 
5 
6 
L[0] = (1) 
L[1] = (0; 5) 
L[2] = () 
L[3] = (4; 6) 
L[4] = (3; 6) 
L[5] = (1) 
L[6] = (3; 4) 
37
Meilleure representation? 
Matrice: memoire O(n2) (mieux pour graphes denses). 
Listes: memoire O(n + m) (mieux pour graphes creux). 
ou n nombre de sommets, m nombre d'ar^etes. 
Le mieux?: cela depend du contexte. 
38
Aujourd'hui 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
39
Plan 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
40
Parcours generique 
ParcoursGenerique(G,s): 
L := fsg 
B := Voisins(s) 
Tant que B6= ; 
I choisir u dans B 
I L := L [ fug. 
I B := B  fug. 
I B := B [ (Voisins(u)  L) 
41
Application 1: numerotation 
ParcoursNumerotation(G,s): 
num := 0 
numero[s] := num; num := num + 1. 
L := fsg 
B := Voisins(s) 
Tant que B6= ; 
I choisir u dans B 
I numero[s] := num; num := num + 1. 
I L := L [ fug. 
I B := B  fug. 
I B := B [ (Voisins(u)  L) 
42
Application 2: composantes connexes 
UneComposante(G,s): 
L := fsg 
B := Voisins(s) 
Tant que B6= ; 
I choisir u dans B 
I L := L [ fug. 
I B := B  fug. 
I B := B [ (Voisins(u)  L) 
Retourner L 
ComposantesConnexes(G) 
Tant que V6= ; 
I Choisir s dans V 
I L := UneComposante(G; s) 
I Acher L 
I V := V  L 
43
Plan 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
44
Parcours en largeur BFS 
B est implemente par une
le (FIFO = First In First Out). 
On explore les sommets par niveau: le niveau k correspond 
aux sommets a distance k du sommet s. 
Exemple: 
45
BFS sur l'exemple precedent: (a), (b) et (c) montre les niveaux 
successifs qui sont consideres. Les sommets sont visites dans 
l'ordre 1; 2; 3; 4; 5; 7; 8; 6. 
Pour chaque k  1, le niveau k correspond aux sommets a 
distance exactement k de s. 
Il y a un chemin de s vers t si et seulement si t appara^t dans 
un certain niveau. Si t appara^t au niveau k, alors t est a 
distance k de s. 
Soit x et y deux sommets aux niveaux Li et Lj avec 
(x; y) 2 E. Alors i et j dierent d'au plus 1. 
46
Plan 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
47
Parcours en profondeur DFS 
DFS(s) 
Marquer s commeexplore et ajouter s a L. 
Pour chaque ar^ete (s; v) 2 E 
I si v n'est pas marque explore alors 
 appeler recursivement DFS(v) 
48
Sur le graphe precedent, les sommets sont visites cette fois dans 
l'ordre 1; 2; 3; 5; 4; 6; 7; 8. Le dessin plus bas montre les sommets 
dans l'ordre ou ils sont decouverts. 
49
Si on appelle T l'arbre couvrant produit (celui qui contient 
l'histoire du parcours: on decrete que v a u comme pere si l'ar^ete 
(u; v) a permis de decouvrir v), on a: 
Pour chaque appel recursif DFS(u), tous les sommets qui sont 
marques explores entre l'invocation de l'appel et son retour 
sont des descendants de u dans l'arbre T produit. 
Soit T un arbre DFS, et x et y deux sommets dans T, avec 
(x; y) 2 E qui n'est pas une ar^ete de T. Alors soit x est un 
anc^etre de y, soit le contraire. 
50
Implementer BFS(s) 
Discovered[s] := true; Discovered[v] := false pour v6= s. 
L[0] = fsg; i:=0 // Layer counter 
Set T = ; // Arbre 
Tant que L[i ]6= ; 
I L[i + 1] := ; 
I Pour chaque u 2 L[i ] 
 Pour chaque ar^ete (u; v) 2 E 
 Si Discovered[v] == false alors 
 Discovered[v]:=true; 
 Ajouter (u; v) a l'arbre T ((v) = u). 
 Ajouter v a L[i + 1] 
 Fin si 
I Fin pour 
I i:=i+1 
Fin tant que 
Temps O(n + m), ou n est le nombre de sommets, et m le nombre 
d'ar^etes avec une representation par liste de successeurs. 
51
Implementer DFS(s) 
Discovered[s] := true; Discovered[v] := false pour v6= s. 
Creer S comme la pile contenant uniquement l'element s 
Tant que S6= ; 
I Prendre le sommet u de S 
I Si Discovered[u] == false alors 
 Discovered[u] := true 
 Pour chaque ar^ete (u; v) 2 E 
 Ajouter u a la pile S 
 Fin pour 
I Fin si 
Fin while 
Temps O(n + m), ou n est le nombre de sommets, et m le nombre 
d'ar^etes, avec une representation par liste de successeurs. 
52
Aujourd'hui 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
53
Plan 
Rappels: les graphes 
Rappels: Les arbres 
Les arbres binaires 
Parcours d'arbres 
Representation des graphes 
Matrice d'adjacences 
Liste de successeurs 
Parcours de graphes 
Parcours generique 
Parcours en largeur BFS 
Parcours en profondeur DFS 
Calcul de distances 
Algorithme de Bellman-Ford 
Algorithme de Dijsktra 
Algorithme de Floyd Warshall 
54
Algorithme de Bellman-Ford 
Entree : 
 
Un graphe G = (V; E) avec une source s 
Une fonction de poids w : E ! R+ 
Sortie: 
 
Un vecteur distance d 
Une fonction pere  : V ! V 
1. Initialisation des variables d et  
1.1 d[s]   0 ; [s]   s 
1.2 Pour chaque sommet v de V faire 
 
d[v]   1 
(v)   NIL 
2. Calcul des distances et de l'arbre de plus court chemin 
2.1 Pour i   1 a jVj  1 faire 
Pour chaque ar^ete (u; v) 2 E faire 
Si (d[v]  d[u] + w(u; v)) alors 
 
d[v]   d[u] + w(u; v) 
(v)   u 
3. retourner d et  
55
Exemple 
A 
B C 
3 
D E 
F 
2 
3 
1 
2 1 
1 
5 
2 
5 
A B C D E F 
init (0; A) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 
56
Exemple 
A 
B C 
3 
D E 
F 
2 
3 
1 
2 1 
1 
5 
2 
5 
A B C D E F 
init (0; A) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 
1 (0; A) (2;A) (5;A) (1;A) (1; ;) (1; ;) 
56
Exemple 
A 
B C 
3 
D E 
F 
2 
3 
1 
2 1 
1 
5 
2 
5 
A B C D E F 
init (0; A) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 
1 (0; A) (2;A) (5;A) (1;A) (1; ;) (1; ;) 
2 (0; A) (2;A) (4;D) (1;A) (2;D) (10; C) 
56
Exemple 
A 
B C 
3 
D E 
F 
2 
3 
1 
2 1 
1 
5 
2 
5 
A B C D E F 
init (0; A) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 
1 (0; A) (2;A) (5;A) (1;A) (1; ;) (1; ;) 
2 (0; A) (2;A) (4;D) (1;A) (2;D) (10; C) 
3 (0; A) (2;A) (3; E) (1;A) (2;D) (4; E) 
les couples correspondent a (d(:); (:)) 
56

Contenu connexe

Tendances

BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataLilia Sfaxi
 
Traitement d'image sous Matlab
Traitement d'image sous Matlab  Traitement d'image sous Matlab
Traitement d'image sous Matlab Hajer Dahech
 
Ia project Apprentissage Automatique
Ia project Apprentissage AutomatiqueIa project Apprentissage Automatique
Ia project Apprentissage AutomatiqueNizar Bechir
 
Présentation projet de fin d'étude
Présentation projet de fin d'étudePrésentation projet de fin d'étude
Présentation projet de fin d'étudeDonia Hammami
 
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...Yasmine Lachheb
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionLilia Sfaxi
 
présentation de soutenance PFE
présentation de soutenance PFEprésentation de soutenance PFE
présentation de soutenance PFEKarim Labidi
 
AI Apprentissage Automatique, Machine Learnig
AI Apprentissage Automatique, Machine LearnigAI Apprentissage Automatique, Machine Learnig
AI Apprentissage Automatique, Machine LearnigFelipe Sanchez Garzon
 
Techniques du data mining
Techniques du data miningTechniques du data mining
Techniques du data miningDonia Hammami
 
Rapport du projet fin d'etudes
Rapport du projet fin d'etudesRapport du projet fin d'etudes
Rapport du projet fin d'etudesTahani RIAHI
 
Présentation PFE Hachem Selmi et Ahmed Dridi Big data
Présentation PFE Hachem Selmi et Ahmed Dridi Big data Présentation PFE Hachem Selmi et Ahmed Dridi Big data
Présentation PFE Hachem Selmi et Ahmed Dridi Big data HaShem Selmi
 
Mini projet statistique bahtat ayoub
Mini projet statistique bahtat ayoubMini projet statistique bahtat ayoub
Mini projet statistique bahtat ayoubAyoub BAHTAT
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
Reconnaissance faciale
Reconnaissance facialeReconnaissance faciale
Reconnaissance facialeAymen Fodda
 
Présentation PFE (Conception et développement d'une application web && mobile...
Présentation PFE (Conception et développement d'une application web && mobile...Présentation PFE (Conception et développement d'une application web && mobile...
Présentation PFE (Conception et développement d'une application web && mobile...Ramzi Noumairi
 

Tendances (20)

Clustering
ClusteringClustering
Clustering
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
 
Traitement d'image sous Matlab
Traitement d'image sous Matlab  Traitement d'image sous Matlab
Traitement d'image sous Matlab
 
Ia project Apprentissage Automatique
Ia project Apprentissage AutomatiqueIa project Apprentissage Automatique
Ia project Apprentissage Automatique
 
Modèle navigationnel (Mnav)
Modèle navigationnel (Mnav)Modèle navigationnel (Mnav)
Modèle navigationnel (Mnav)
 
Présentation projet de fin d'étude
Présentation projet de fin d'étudePrésentation projet de fin d'étude
Présentation projet de fin d'étude
 
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
Rapport PFE BIAT Conception et mise en place d’une plate-forme de gestion des...
 
Chp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de ConceptionChp1 - Introduction aux méthodologies de Conception
Chp1 - Introduction aux méthodologies de Conception
 
présentation de soutenance PFE
présentation de soutenance PFEprésentation de soutenance PFE
présentation de soutenance PFE
 
AI Apprentissage Automatique, Machine Learnig
AI Apprentissage Automatique, Machine LearnigAI Apprentissage Automatique, Machine Learnig
AI Apprentissage Automatique, Machine Learnig
 
Techniques du data mining
Techniques du data miningTechniques du data mining
Techniques du data mining
 
Rapport du projet fin d'etudes
Rapport du projet fin d'etudesRapport du projet fin d'etudes
Rapport du projet fin d'etudes
 
Cours rdm
Cours rdmCours rdm
Cours rdm
 
Rapport de stage du fin d'étude
Rapport de stage du fin d'étudeRapport de stage du fin d'étude
Rapport de stage du fin d'étude
 
Présentation PFE Hachem Selmi et Ahmed Dridi Big data
Présentation PFE Hachem Selmi et Ahmed Dridi Big data Présentation PFE Hachem Selmi et Ahmed Dridi Big data
Présentation PFE Hachem Selmi et Ahmed Dridi Big data
 
Mini projet statistique bahtat ayoub
Mini projet statistique bahtat ayoubMini projet statistique bahtat ayoub
Mini projet statistique bahtat ayoub
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Reconnaissance faciale
Reconnaissance facialeReconnaissance faciale
Reconnaissance faciale
 
graphe en C/C++
graphe en C/C++graphe en C/C++
graphe en C/C++
 
Présentation PFE (Conception et développement d'une application web && mobile...
Présentation PFE (Conception et développement d'une application web && mobile...Présentation PFE (Conception et développement d'une application web && mobile...
Présentation PFE (Conception et développement d'une application web && mobile...
 

Similaire à Graphes

cours1 graphe.pdf
cours1 graphe.pdfcours1 graphe.pdf
cours1 graphe.pdfSiriki3
 
Bases de la Théorie des graphes
Bases de la Théorie des graphes Bases de la Théorie des graphes
Bases de la Théorie des graphes Idriss22
 
Chapitre 5 structures hierarchiques (arbres)
Chapitre 5 structures hierarchiques (arbres)Chapitre 5 structures hierarchiques (arbres)
Chapitre 5 structures hierarchiques (arbres)Sana Aroussi
 
Algèbre linéaire cours et exercices corrigés djeddi kamel mostafa
Algèbre linéaire cours et exercices corrigés djeddi kamel mostafaAlgèbre linéaire cours et exercices corrigés djeddi kamel mostafa
Algèbre linéaire cours et exercices corrigés djeddi kamel mostafaKamel Djeddi
 
Chapitre 5 arbres binaires
Chapitre 5 arbres binairesChapitre 5 arbres binaires
Chapitre 5 arbres binairesSana Aroussi
 
Chapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheChapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheSana Aroussi
 
Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI Mansouri Khalifa
 
Integrales doubles-ou-triples
Integrales doubles-ou-triplesIntegrales doubles-ou-triples
Integrales doubles-ou-triplesm.a bensaaoud
 
Cours graphes1
Cours graphes1Cours graphes1
Cours graphes1sekkal09
 
Omp math nombres-complexes
Omp math nombres-complexesOmp math nombres-complexes
Omp math nombres-complexesAhmed Ali
 
Theorie des graphes_EMSI 2023.pptx
Theorie des graphes_EMSI 2023.pptxTheorie des graphes_EMSI 2023.pptx
Theorie des graphes_EMSI 2023.pptxoujeddimustapha
 
Chapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheChapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheSana Aroussi
 
fctusuelle-1.pdf
fctusuelle-1.pdffctusuelle-1.pdf
fctusuelle-1.pdfTARIQBARKI3
 
polynomeEtendomorphismeAlgebre3Cyclepreparatoireintegree.pdf
polynomeEtendomorphismeAlgebre3Cyclepreparatoireintegree.pdfpolynomeEtendomorphismeAlgebre3Cyclepreparatoireintegree.pdf
polynomeEtendomorphismeAlgebre3Cyclepreparatoireintegree.pdfssuserda6d08
 
Gottfried Wilhelm Leibniz
Gottfried Wilhelm LeibnizGottfried Wilhelm Leibniz
Gottfried Wilhelm LeibnizSais Abdelkrim
 

Similaire à Graphes (19)

cours1 graphe.pdf
cours1 graphe.pdfcours1 graphe.pdf
cours1 graphe.pdf
 
Bases de la Théorie des graphes
Bases de la Théorie des graphes Bases de la Théorie des graphes
Bases de la Théorie des graphes
 
Chapitre 5 structures hierarchiques (arbres)
Chapitre 5 structures hierarchiques (arbres)Chapitre 5 structures hierarchiques (arbres)
Chapitre 5 structures hierarchiques (arbres)
 
Algèbre linéaire cours et exercices corrigés djeddi kamel mostafa
Algèbre linéaire cours et exercices corrigés djeddi kamel mostafaAlgèbre linéaire cours et exercices corrigés djeddi kamel mostafa
Algèbre linéaire cours et exercices corrigés djeddi kamel mostafa
 
Chapitre 5 arbres binaires
Chapitre 5 arbres binairesChapitre 5 arbres binaires
Chapitre 5 arbres binaires
 
Chapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheChapitre 1 arbres de recherche
Chapitre 1 arbres de recherche
 
Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI Cours : les arbres Prof. KHALIFA MANSOURI
Cours : les arbres Prof. KHALIFA MANSOURI
 
Integrales doubles-ou-triples
Integrales doubles-ou-triplesIntegrales doubles-ou-triples
Integrales doubles-ou-triples
 
06 arbres
06 arbres06 arbres
06 arbres
 
Cours graphes1
Cours graphes1Cours graphes1
Cours graphes1
 
Omp math nombres-complexes
Omp math nombres-complexesOmp math nombres-complexes
Omp math nombres-complexes
 
Theorie des graphes_EMSI 2023.pptx
Theorie des graphes_EMSI 2023.pptxTheorie des graphes_EMSI 2023.pptx
Theorie des graphes_EMSI 2023.pptx
 
RO-2-3.pdf
RO-2-3.pdfRO-2-3.pdf
RO-2-3.pdf
 
Chapitre 13_Les arbres.pptx
Chapitre 13_Les arbres.pptxChapitre 13_Les arbres.pptx
Chapitre 13_Les arbres.pptx
 
Chapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheChapitre 1 arbres de recherche
Chapitre 1 arbres de recherche
 
fctusuelle-1.pdf
fctusuelle-1.pdffctusuelle-1.pdf
fctusuelle-1.pdf
 
An2 integ mul
An2 integ mulAn2 integ mul
An2 integ mul
 
polynomeEtendomorphismeAlgebre3Cyclepreparatoireintegree.pdf
polynomeEtendomorphismeAlgebre3Cyclepreparatoireintegree.pdfpolynomeEtendomorphismeAlgebre3Cyclepreparatoireintegree.pdf
polynomeEtendomorphismeAlgebre3Cyclepreparatoireintegree.pdf
 
Gottfried Wilhelm Leibniz
Gottfried Wilhelm LeibnizGottfried Wilhelm Leibniz
Gottfried Wilhelm Leibniz
 

Dernier

Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfAmgdoulHatim
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxShinyaHilalYamanaka
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxikospam0
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsJaouadMhirach
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetJeanYvesMoine
 
658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdfMariaClaraAlves46
 
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdfSTRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdfGamal Mansour
 
Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcourshalima98ahlmohamed
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxrajaakiass01
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLElebaobabbleu
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaireTxaruka
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Technologia Formation
 
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesUnidad de Espiritualidad Eudista
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxhamzagame
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxabdououanighd
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesMohammedAmineHatoch
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKNassimaMdh
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...Universidad Complutense de Madrid
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...Nguyen Thanh Tu Collection
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkRefRama
 

Dernier (20)

Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
La mondialisation avantages et inconvénients
La mondialisation avantages et inconvénientsLa mondialisation avantages et inconvénients
La mondialisation avantages et inconvénients
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf658708519-Power-Point-Management-Interculturel.pdf
658708519-Power-Point-Management-Interculturel.pdf
 
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdfSTRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
STRATEGIE_D’APPRENTISSAGE flee_DU_FLE.pdf
 
Télécommunication et transport .pdfcours
Télécommunication et transport .pdfcoursTélécommunication et transport .pdfcours
Télécommunication et transport .pdfcours
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean EudesNeuvaine de la Pentecôte avec des textes de saint Jean Eudes
Neuvaine de la Pentecôte avec des textes de saint Jean Eudes
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
Cours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiquesCours Généralités sur les systèmes informatiques
Cours Généralités sur les systèmes informatiques
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 

Graphes

  • 1. Cours n: Graphes Olivier Bournez bournez@lix.polytechnique.fr LIX, Ecole Polytechnique 2011-12 Algorithmique 1
  • 2. Aujourd'hui Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 2
  • 3. Un graphe oriente Un graphe oriente (digraph) est donne par un couple G = (V; E), ou I V est un ensemble. I E V V. Exemple: I V = f0; 1; : : : ; 6g. I E = f(0; 1); (3; 4); (5; 1); (6; 3); (6; 4); (6; 6)g. 1 0 3 2 4 5 6 3
  • 4. Vocabulaire 1 0 3 2 4 5 6 Les elements de V sont appeles des sommets (parfois aussi des nuds). Les elements e de E sont appeles des arcs. Si e = (u; v), u est appele la source de e, v est appele la destination de e. Remarque: I Les boucles (les arcs (u; u)) sont autorisees. 4
  • 5. Un graphe Un graphe1 est donne par un couple G = (V; E), ou I V est un ensemble. I E est un ensemble de paires fu; vg avec u; v 2 V. On convient de representer une paire fu; vg par (u; v) ou (v; u). Autrement dit, (u; v) et (v; u) denotent la m^eme ar^ete. Exemple: I V = f0; 1; : : : ; 6g I E = f(0; 1); (3; 4); (5; 1); (6; 3); (6; 4)g. 1 0 3 2 4 5 6 1Lorsqu'on ne precise pas, par defaut, un graphe est non-oriente. 5
  • 6. Vocabulaire 1 0 3 2 4 5 6 Les elements e de E sont appeles des ar^etes. Si e = (u; v), u et v sont appeles les extremites de e. Remarque: (sauf autre convention explicite) I Les boucles ne sont pas autorisees. 6
  • 7. Vocabulaire (cas non-oriente) 1 0 3 2 4 5 6 u et v sont dits voisins s'il y a une ar^ete entre u et v. Le degre de u est le nombre de voisins de u. 7
  • 8. Vocabulaire (cas non-oriente) 1 0 3 2 4 5 6 Un chemin du sommet s vers le sommet t est une suite e0; e1; ; en de sommets telle que e0 = s, en = t, (ei1; ei ) 2 E, pour tout 1 i n. I n est appele la longueur du chemin, et on dit que t est joignable a partir de s. I Le chemin est dit simple si les ei sont distincts deux-a-deux. I Un cycle est un chemin de longueur non-nulle avec e0 = en. Le sommet s est dit a distance n de t s'il existe un chemin de longueur n entre s et t, mais aucun chemin de longueur inferieure. 8
  • 9. Composantes connexes (cas non-oriente) Prop. La relation ^etre joignable est une relation d'equivalence. Les classes d'equivalence sont appelees les composantes connexes. 1 0 3 2 4 5 6 Un graphe est dit connexe s'il n'y a qu'une seule classe d'equivalence. I Autrement dit, tout sommet est joignable a partir de tout sommet. 9
  • 10. Les graphes sont partout! Beaucoup de problemes se modelisent par des objets et des relations entre objets. Exemples: I Le graphe routier. I Les reseaux informatiques. I Le graphe du web. Beaucoup de problemes se ramenent a des problemes sur les graphes. Theorie des graphes: I Euler, Hamilton, Kirchho, Konig, Edmonds, Berge, Lovasz, Seymour,. . . Les graphes sont omnipresents en informatique. 10
  • 11. Theorie des graphes. Exemple 1: graphes planaires. Un graphe est dit planaire s'il peut se representer sur un plan sans qu'aucune ar^ete n'en croise une autre. Planaire: Non-planaire: K5 K3;3 Theoreme [Kuratowski-Wagner] Un graphe
  • 12. ni est planaire ssi il ne contient pas de sous-graphe qui soit une expansion de K5 ou de K3;3. I Une expansion consiste a ajouter un ou plusieurs sommets sur une ou plusieurs ar^etes (exemple: devient ) 11
  • 13. Theorie des graphes. Exemple 1: graphes planaires. Un graphe est dit planaire s'il peut se representer sur un plan sans qu'aucune ar^ete n'en croise une autre. Planaire: Non-planaire: K5 K3;3 Theoreme [Kuratowski-Wagner] Un graphe
  • 14. ni est planaire ssi il ne contient pas de sous-graphe qui soit une expansion de K5 ou de K3;3. I Une expansion consiste a ajouter un ou plusieurs sommets sur une ou plusieurs ar^etes (exemple: devient ) 11
  • 15. Theorie des graphes. Exemple 2: Coloriage de graphe. Allouer des frequences GSM correspond a colorier les sommets d'un graphe. I sommets: des emetteurs radio. I ar^ete entre u et v: le signal de u perturbe v ou reciproquement. I couleur: frequence radio. Le probleme de coloriage d'un graphe: colorier les sommets d'un graphe de telle sorte qu'il n'y ait aucune ar^ete entre deux sommets d'une m^eme couleur. Un coloriage avec 4 couleurs 12
  • 16. Theorie des graphes. Exemple 2: Coloriage de graphe. Theoreme: Appel et Haken (76): tout graphe planaire est coloriable avec 4 couleurs (preuve avec 1478 cas critiques). I Robertson, Sanders, Seymour, Thomas, Gonthier, Werner. On ne conna^t aucun algorithme pour determiner si un graphe general est coloriable avec 4 couleurs (m^eme avec 3) qui fonctionne en temps polynomial (le probleme est NP-complet). 13
  • 17. Applications des graphes. Exemple 3: evaluer une page de la toile BrevetMethod for Node Ranking in a Linked Database (Universite Stanford, Janvier 1997). En simpli
  • 18. ant. I On considere le graphe des liens entre pages. I Modele theorique: Avec probabilite 0 c 1, un surfeur abandonne la page actuelle et recommence sur une des n pages du web, choisie de maniere equiprobable. Avec probabilite 1 c, le surfeur suit un des liens de la page actuelle j , choisie de maniere equiprobable parmi tous les liens lj emis. I Quelle que soit la distribution initiale, on convergera vers une unique distribution stationnaire. I On evalue une page par la probabilite de cette page dans la distribution stationnaire. 14
  • 19. Aujourd'hui Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 15
  • 20. Les arbres Un graphe2 connexe sans cycle est appele un arbre (libre). Un graphe2 sans-cycle est appele une for^et: I chacune de ses composantes connexes est un arbre. 1 0 3 2 4 5 6 2non-oriente. 16
  • 21. Les arbres sont partout! Un graphe2 connexe sans cycle est appele un arbre (libre). Un graphe2 sans-cycle est appele une for^et: I chacune de ses composantes connexes est un arbre. Des qu'on a des objets, des relations entre objets, et pas de cycle, on a donc un arbre ou une for^et. 1 0 3 2 4 5 6 2non-oriente. 16
  • 22. Les arbres sont partout! Un graphe2 connexe sans cycle est appele un arbre (libre). Un graphe2 sans-cycle est appele une for^et: I chacune de ses composantes connexes est un arbre. Des qu'on a des objets, des relations entre objets, et pas de cycle, on a donc un arbre ou une for^et. 1 0 3 2 4 5 6 Les arbres sont omnipresents en informatique. 2non-oriente. 16
  • 23. Une caracterisation Quelques proprietes Soit G = (V; E) un graphe3. Les proprietes suivantes sont equivalentes: G est un arbre (libre). Deux sommets quelconques de V sont connectes par un unique chemin simple. G est connexe, mais ne l'est plus si on enleve n'importe laquelle de ses ar^etes. G est connexe, et jEj = jVj 1. G est sans cycle, et jEj = jVj 1. G est sans cycle, mais ne l'est plus si l'on ajoute n'importe quelle ar^ete. 1 0 3 2 4 5 6 3non-oriente. 17
  • 24. Les arbres poussent de haut en bas en informatique On distingue souvent un sommet que l'on appelle sa racine. On dessine un arbre I en placant la racine tout en haut. I puis en placant les sommets a distance i de la racine a la ligne i . Exemple: pour l'arbre libre precedent, en prenant le sommet d'etiquette 3 comme racine. 3 1 5 0 4 6 2 18
  • 25. Une vision recursive: cas general Un arbre correspond a un couple forme 1. d'un sommet particulier, appele sa racine, 2. et d'une partition des sommets restants en un ensemble d'arbres. Cette vision permet de faire des preuves inductives. I Exemple: montrer qu'un arbre dont tous les sommets sont d'arite au moins 2 possede plus de feuilles que de sommets internes. Mais reste informatiquement encore un peu compliquee. 19
  • 26. Plan Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 20
  • 27. Une vision recursive: arbres binaires Plus simple: Les arbres binaires. 3 1 5 4 2 0 Un arbre binaire est I soit vide I soit l'union disjointe d'un sommet, appele sa racine, d'un arbre binaire, appele sous-arbre gauche, et d'un arbre binaire, appele sous-arbre droit. Autrement dit, un arbre binaire d'entiers est solution de l'equation: A = null ] (A int A) 21
  • 28. Attention: Arbre binaire6= Arbre d'arite 2. Un arbre binaire a tous ses sommets d'arite 0, 1 ou 2. Mais les concept d'arbre de degre 2 et d'arbre binaire sont dierents. En fait, 1 2 3 et 1 2 3 ne sont pas les m^eme arbres binaires, car (((;; 3; ;); 2; ;); 1; ;)6= (;; 1; ((;; 3; ;); 2; ;)) 22
  • 29. De
  • 30. nir un arbre binaire en JAVA Slogan: Liste: 1 Arbre binaire: 1 On code un arbre vide par la reference null , et un arbre non-vide par une instance de la classe Arbre. class Arbre { int val; Arbre gauche, droite; Arbre (Arbre gauche, int val, Arbre droite) { this.gauche = gauche; this.val = val; this.droite = droite; }} 23
  • 31. Construire un arbre binaire new Arbre ( new Arbre ( new Arbre (null,5,null), 1, null), 3, new Arbre ( new Arbre (null,2,null), 4, new Arbre (null,0,null))) 3 1 5 4 2 0 24
  • 32. Plan Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 25
  • 33. Parcourir un arbre Beaucoup d'algorithmes sur les arbres necessitent de parcourir (traiter) tous les sommets I Exemple: Tester l'existence d'une valeur particuliere dans un arbre. I Exemple: Acher un arbre. Il existe une terminologie standard pour quali
  • 34. er les parcours. I On peut parcourir de gauche a droite, ou de droite a gauche. I Une fois ce choix fait, on distingue les parcours en largeur. en profondeur: pre
  • 36. xe, suxe. 26
  • 37. Parcourir en largeur Parcours en largeur d'abord. I on parcourt par distance croissante a la racine. 3 1 5 4 2 0 Si le traitement d'un sommet consiste a l'acher, on achera dans l'ordre 3, 1, 4, 5, 2, 0. C'est peut-^etre le parcours le plus naturel, mais c'est le plus delicat a programmer avec les arbres binaires. 27
  • 38. Parcourir en profondeur Parcours en profondeur d'abord: I on parcourt recursivement. Mais il reste trois possibilites I Pre
  • 39. xe: traiter la racine, parcourir le sous-arbre gauche, puis le sous-arbre droit. I In
  • 40. xe: parcourir le sous-arbre gauche, traiter la racine, parcourir les sous-arbre droit. I Suxe (appele aussi post
  • 41. xe): parcourir le sous-arbre gauche, le sous-arbre droit, puis traiter la racine. 28
  • 43. xe 3 1 5 4 2 0 Si le traitement d'un sommet consiste a l'acher, on achera dans l'ordre 3, 1, 5, 4, 2, 0. static void Affiche(Arbre a) { i f (a==null) return; System.out.println(a.val+ ); Affiche(a.gauche); Affiche(a.droite); } 29
  • 45. xe 3 1 5 4 2 0 Si le traitement d'un sommet consiste a l'acher, on achera dans l'ordre 5, 1, 3, 2, 4, 0. static void Affiche(Arbre a) { i f (a==null) return; Affiche(a.gauche); System.out.println(a.val+ ); Affiche(a.droite); } 30
  • 47. xe 3 1 5 4 2 0 Si le traitement d'un sommet consiste a l'acher, on achera dans l'ordre 5, 1, 2, 0, 4, 3. static void Affiche(Arbre a) { i f (a==null) return; Affiche(a.gauche); Affiche(a.droite); System.out.println(a.val+ ); } 31
  • 48. De l'iteratif? Parcourir en largeur? Voici un algorithme generique iteratif de parcours d'arbre. ParcoursGenerique(Arbre a, racine s): I L := fsg I B := fs:gauche; s:droiteg I Tant que B6= ; choisir u dans B L := L [ fug. B := B fug. B := B [ (fu:gauche; u:droiteg L) Si B est implemente I par une pile, on parcourt en profondeur (pre
  • 49. xe). I par une
  • 50. le, on parcourt en largeur. 32
  • 51. Aujourd'hui Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 33
  • 52. Plan Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 34
  • 53. Representation des graphes: matrice d'adjacence Matrice d'ajacence. Pour G = (V; E), V = f1; 2; : : : ; ng, on represente G par une matrice M n n. Mi ;j = 1 si (i ; j) 2 E 0 sinon I Si graphe value: Mi ;j = v(i ; j ). 1 0 3 2 4 5 6 0 BBBBBBBB@ 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 CCCCCCCCA 35
  • 54. Plan Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 36
  • 55. Representation des graphes: liste de successeurs On associe a chaque sommet i , la liste des sommets j tels que (i ; j) 2 E. 1 0 3 2 4 5 6 L[0] = (1) L[1] = (0; 5) L[2] = () L[3] = (4; 6) L[4] = (3; 6) L[5] = (1) L[6] = (3; 4) 37
  • 56. Meilleure representation? Matrice: memoire O(n2) (mieux pour graphes denses). Listes: memoire O(n + m) (mieux pour graphes creux). ou n nombre de sommets, m nombre d'ar^etes. Le mieux?: cela depend du contexte. 38
  • 57. Aujourd'hui Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 39
  • 58. Plan Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 40
  • 59. Parcours generique ParcoursGenerique(G,s): L := fsg B := Voisins(s) Tant que B6= ; I choisir u dans B I L := L [ fug. I B := B fug. I B := B [ (Voisins(u) L) 41
  • 60. Application 1: numerotation ParcoursNumerotation(G,s): num := 0 numero[s] := num; num := num + 1. L := fsg B := Voisins(s) Tant que B6= ; I choisir u dans B I numero[s] := num; num := num + 1. I L := L [ fug. I B := B fug. I B := B [ (Voisins(u) L) 42
  • 61. Application 2: composantes connexes UneComposante(G,s): L := fsg B := Voisins(s) Tant que B6= ; I choisir u dans B I L := L [ fug. I B := B fug. I B := B [ (Voisins(u) L) Retourner L ComposantesConnexes(G) Tant que V6= ; I Choisir s dans V I L := UneComposante(G; s) I Acher L I V := V L 43
  • 62. Plan Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 44
  • 63. Parcours en largeur BFS B est implemente par une
  • 64. le (FIFO = First In First Out). On explore les sommets par niveau: le niveau k correspond aux sommets a distance k du sommet s. Exemple: 45
  • 65. BFS sur l'exemple precedent: (a), (b) et (c) montre les niveaux successifs qui sont consideres. Les sommets sont visites dans l'ordre 1; 2; 3; 4; 5; 7; 8; 6. Pour chaque k 1, le niveau k correspond aux sommets a distance exactement k de s. Il y a un chemin de s vers t si et seulement si t appara^t dans un certain niveau. Si t appara^t au niveau k, alors t est a distance k de s. Soit x et y deux sommets aux niveaux Li et Lj avec (x; y) 2 E. Alors i et j dierent d'au plus 1. 46
  • 66. Plan Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 47
  • 67. Parcours en profondeur DFS DFS(s) Marquer s commeexplore et ajouter s a L. Pour chaque ar^ete (s; v) 2 E I si v n'est pas marque explore alors appeler recursivement DFS(v) 48
  • 68. Sur le graphe precedent, les sommets sont visites cette fois dans l'ordre 1; 2; 3; 5; 4; 6; 7; 8. Le dessin plus bas montre les sommets dans l'ordre ou ils sont decouverts. 49
  • 69. Si on appelle T l'arbre couvrant produit (celui qui contient l'histoire du parcours: on decrete que v a u comme pere si l'ar^ete (u; v) a permis de decouvrir v), on a: Pour chaque appel recursif DFS(u), tous les sommets qui sont marques explores entre l'invocation de l'appel et son retour sont des descendants de u dans l'arbre T produit. Soit T un arbre DFS, et x et y deux sommets dans T, avec (x; y) 2 E qui n'est pas une ar^ete de T. Alors soit x est un anc^etre de y, soit le contraire. 50
  • 70. Implementer BFS(s) Discovered[s] := true; Discovered[v] := false pour v6= s. L[0] = fsg; i:=0 // Layer counter Set T = ; // Arbre Tant que L[i ]6= ; I L[i + 1] := ; I Pour chaque u 2 L[i ] Pour chaque ar^ete (u; v) 2 E Si Discovered[v] == false alors Discovered[v]:=true; Ajouter (u; v) a l'arbre T ((v) = u). Ajouter v a L[i + 1] Fin si I Fin pour I i:=i+1 Fin tant que Temps O(n + m), ou n est le nombre de sommets, et m le nombre d'ar^etes avec une representation par liste de successeurs. 51
  • 71. Implementer DFS(s) Discovered[s] := true; Discovered[v] := false pour v6= s. Creer S comme la pile contenant uniquement l'element s Tant que S6= ; I Prendre le sommet u de S I Si Discovered[u] == false alors Discovered[u] := true Pour chaque ar^ete (u; v) 2 E Ajouter u a la pile S Fin pour I Fin si Fin while Temps O(n + m), ou n est le nombre de sommets, et m le nombre d'ar^etes, avec une representation par liste de successeurs. 52
  • 72. Aujourd'hui Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 53
  • 73. Plan Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 54
  • 74. Algorithme de Bellman-Ford Entree : Un graphe G = (V; E) avec une source s Une fonction de poids w : E ! R+ Sortie: Un vecteur distance d Une fonction pere : V ! V 1. Initialisation des variables d et 1.1 d[s] 0 ; [s] s 1.2 Pour chaque sommet v de V faire d[v] 1 (v) NIL 2. Calcul des distances et de l'arbre de plus court chemin 2.1 Pour i 1 a jVj 1 faire Pour chaque ar^ete (u; v) 2 E faire Si (d[v] d[u] + w(u; v)) alors d[v] d[u] + w(u; v) (v) u 3. retourner d et 55
  • 75. Exemple A B C 3 D E F 2 3 1 2 1 1 5 2 5 A B C D E F init (0; A) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 56
  • 76. Exemple A B C 3 D E F 2 3 1 2 1 1 5 2 5 A B C D E F init (0; A) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 1 (0; A) (2;A) (5;A) (1;A) (1; ;) (1; ;) 56
  • 77. Exemple A B C 3 D E F 2 3 1 2 1 1 5 2 5 A B C D E F init (0; A) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 1 (0; A) (2;A) (5;A) (1;A) (1; ;) (1; ;) 2 (0; A) (2;A) (4;D) (1;A) (2;D) (10; C) 56
  • 78. Exemple A B C 3 D E F 2 3 1 2 1 1 5 2 5 A B C D E F init (0; A) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 1 (0; A) (2;A) (5;A) (1;A) (1; ;) (1; ;) 2 (0; A) (2;A) (4;D) (1;A) (2;D) (10; C) 3 (0; A) (2;A) (3; E) (1;A) (2;D) (4; E) les couples correspondent a (d(:); (:)) 56
  • 79. Plan Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 57
  • 80. Algorithme de Dijkstra Entree : Un graphe G = (V; E) avec une source s Une fonction de poids w : E ! R+ Sortie: Un vecteur distance d Une fonction pere : V ! V 1. Initialisation de la source s 1.1 d[s] 0 ; [s] s 1.2 Pour chaque sommet v de V faire (v) NIL d(v) 1+ 58
  • 81. Algorithme de Dijkstra Entree : Un graphe G = (V; E) avec une source s Une fonction de poids w : E ! R+ Sortie: Un vecteur distance d Une fonction pere : V ! V 1. Initialisation de la source s 1.1 d[s] 0 ; [s] s 1.2 Pour chaque sommet v de V faire (v) NIL d(v) 1+ 58
  • 82. Algorithme de Dijkstra Entree : Un graphe G = (V; E) avec une source s Une fonction de poids w : E ! R+ Sortie: Un vecteur distance d Une fonction pere : V ! V 1. Initialisation de la source s 1.1 d[s] 0 ; [s] s 1.2 Pour chaque sommet v de V faire (v) NIL d(v) 1+ 2. Q V ; S ;; 3. Tant que (Q6= ;) faire 3.1 u Extraire-Le-Minimum(Q; d); 3.2 S S [ fug; 3.3 Pour chaque sommet v voisin de u faire Si (d[v] d[u] + w(u; v)) alors d[v] d[u] + w(u; v) (v) u 4. retourner d et 58
  • 83. Exemple A B C 3 D E F 2 3 1 2 1 1 5 2 5 les couples correspondent a (d(:); (:)) Q A B C D E F I fABCDEFg (0; ;) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 59
  • 84. Exemple A B C 3 D E F 2 3 1 2 1 1 5 2 5 les couples correspondent a (d(:); (:)) Q A B C D E F I fABCDEFg (0; ;) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 1 fBCDEFg (0; A) (2;A) (5;A) (1; A) (1; ;) (1; ;) 59
  • 85. Exemple A B C 3 D E F 2 3 1 2 1 1 5 2 5 les couples correspondent a (d(:); (:)) Q A B C D E F I fABCDEFg (0; ;) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 1 fBCDEFg (0; A) (2;A) (5;A) (1; A) (1; ;) (1; ;) 2 fBCEFg (0; A) (2;A) (4;D) (1; A) (2;D) (1; ;) 59
  • 86. Exemple A B C 3 D E F 2 3 1 2 1 1 5 2 5 les couples correspondent a (d(:); (:)) Q A B C D E F I fABCDEFg (0; ;) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 1 fBCDEFg (0; A) (2;A) (5;A) (1; A) (1; ;) (1; ;) 2 fBCEFg (0; A) (2;A) (4;D) (1; A) (2;D) (1; ;) 3 fCEFg (0; A) (2;A) (4;D) (1; A) (2;D) (1; ;) 59
  • 87. Exemple A B C 3 D E F 2 3 1 2 1 1 5 2 5 les couples correspondent a (d(:); (:)) Q A B C D E F I fABCDEFg (0; ;) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 1 fBCDEFg (0; A) (2;A) (5;A) (1; A) (1; ;) (1; ;) 2 fBCEFg (0; A) (2;A) (4;D) (1; A) (2;D) (1; ;) 3 fCEFg (0; A) (2;A) (4;D) (1; A) (2;D) (1; ;) 4 fCFg (0; A) (2;A) (3; E) (1; A) (2;D) (4; E) 59
  • 88. Exemple A B C 3 D E F 2 3 1 2 1 1 5 2 5 les couples correspondent a (d(:); (:)) Q A B C D E F I fABCDEFg (0; ;) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 1 fBCDEFg (0; A) (2;A) (5;A) (1; A) (1; ;) (1; ;) 2 fBCEFg (0; A) (2;A) (4;D) (1; A) (2;D) (1; ;) 3 fCEFg (0; A) (2;A) (4;D) (1; A) (2;D) (1; ;) 4 fCFg (0; A) (2;A) (3; E) (1; A) (2;D) (4; E) 5 fFg (0; A) (2;A) (3; E) (1; A) (2;D) (4; E) 59
  • 89. Exemple A B C 3 D E F 2 3 1 2 1 1 5 2 5 les couples correspondent a (d(:); (:)) Q A B C D E F I fABCDEFg (0; ;) (1; ;) (1; ;) (1; ;) (1; ;) (1; ;) 1 fBCDEFg (0; A) (2;A) (5;A) (1; A) (1; ;) (1; ;) 2 fBCEFg (0; A) (2;A) (4;D) (1; A) (2;D) (1; ;) 3 fCEFg (0; A) (2;A) (4;D) (1; A) (2;D) (1; ;) 4 fCFg (0; A) (2;A) (3; E) (1; A) (2;D) (4; E) 5 fFg (0; A) (2;A) (3; E) (1; A) (2;D) (4; E) 6 ; (0; A) (2;A) (3; E) (1; A) (2;D) (4; E) Complexite de l'algorithme: O(jVj2) 59
  • 90. Plan Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours d'arbres Representation des graphes Matrice d'adjacences Liste de successeurs Parcours de graphes Parcours generique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall 60
  • 91. Plus court chemin dans un graphe Entree : Un graphe oriente G = (N; A) ou chaque arc possede une longueur non-negative. Un des noeuds du graphe est appele source. Probleme: Trouver la longueur du plus court chemin entre toutes les paires de noeuds. On suppose que N = f1; : : : ng. On suppose aussi que G est donne sous forme de matrice L[1::n; 1::n] (on peut prendre L[i ; j ] = 1 lorsqu'il n'y a pas d'ar^ete entre i et j) Algorithme de Floyd: cet algorithme construite une matrice D qui donne la longueur du plus court chemin entre chaque paire de noeuds. 61
  • 92. Principe 1. On initialise D a L 2. Apres l'iteration k, D donne la longueur du plus court chemin lorsque l'on utilise que des noeuds dans f1; ::; kg comme noeuds intermediaires (ou eventuellement aucun noeud intermediaire). De
  • 93. nition: Dk est la matrice D apres l'iteration k. Le resulat
  • 95. Recurrence Dk [i ; j ] = min(Dk1[i ; j ];Dk1[i ; k] + Dk1[k; j ]) Exercice: expliquer pourquoi. 63
  • 96. Floyd(L[1..n,1..n]) Procedure Floyd(L[1..n,1..n]) D:=L Pour k := 1 a n I Pour i := 1 a n Pour j := 1 a n D[i ; j ] = min(D[i ; j ];D[i ; k] + D[k; j ]) Retourner D. Temps dans O(n3). 64