Graphes PDF
Graphes PDF
Graphes PDF
Olivier Bournez
2011-12
Algorithmique
Aujourdhui
Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique 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 orient e
Un graphe orient e (digraph) est donn e par un couple G = (V , E ), o` u
V est un ensemble. E V V.
Exemple:
V = {0, 1, . . . , 6}. E = {(0, 1), (3, 4), (5, 1), (6, 3), (6, 4), (6, 6)}.
4 1 5 0 3 6 2
Vocabulaire
4 1 5 0 3 6 2
Les el ements de V sont appel es des sommets (parfois aussi des nuds). Les el ements e de E sont appel es des arcs. Si e = (u , v ), u est appel e la source de e , v est appel e la destination de e . Remarque:
Les boucles (les arcs (u , u )) sont autoris ees.
Un graphe
Un graphe1 est donn e par un couple G = (V , E ), o` u
V est un ensemble. E est un ensemble de paires {u , v } avec u , v V .
On convient de repr esenter une paire {u , v } par (u , v ) ou (v , u ). Autrement dit, (u , v ) et (v , u ) d enotent la m eme ar ete. Exemple:
V = {0, 1, . . . , 6} E = {(0, 1), (3, 4), (5, 1), (6, 3), (6, 4)}.
4 1 5
1
3 6 2
Vocabulaire
4 1 5 0 3 6 2
Les el ements e de E sont appel es des ar etes. Si e = (u , v ), u et v sont appel es les extr emit es de e . Remarque: (sauf autre convention explicite)
Les boucles ne sont pas autoris ees.
4 1 5 0 3 6 2
u et v sont dits voisins sil y a une ar ete entre u et v . Le degr e de u est le nombre de voisins de u .
Un chemin du sommet s vers le sommet t est une suite e0 , e1 , , en de sommets telle que e0 = s , en = t , (ei 1 , ei ) E , pour tout 1 i n.
n est appel e la longueur du chemin, et on dit que t est joignable ` a partir de s . Le chemin est dit simple si les ei sont distincts deux-` a-deux. Un cycle est un chemin de longueur non-nulle avec e0 = en .
Le sommet s est dit ` a distance n de t sil existe un chemin de longueur n entre s et t , mais aucun chemin de longueur inf erieure.
8
Beaucoup de probl` emes se ram` enent ` a des probl` emes sur les graphes. Th eorie des graphes:
Euler, Hamilton, Kirchho, K onig, Edmonds, Berge, Lov asz, Seymour,. . .
Non-planaire: K5
K3,3
Th eor` eme [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 .
Une expansion consiste ` a ajouter un ou plusieurs sommets sur une ou plusieurs ar etes (exemple: devient )
11
Non-planaire: K5
K3,3
Th eor` eme [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 .
Une expansion consiste ` a ajouter un ou plusieurs sommets sur une ou plusieurs ar etes (exemple: devient )
11
Le probl` eme de coloriage dun graphe: colorier les sommets dun graphe de telle sorte quil ny ait aucune ar ete entre deux sommets dune m eme couleur.
Th eor` eme: Appel et Haken (76): tout graphe planaire est coloriable avec 4 couleurs (preuve avec 1478 cas critiques).
Robertson, Sanders, Seymour, Thomas, Gonthier, Werner.
On ne conna t aucun algorithme pour d eterminer si un graphe g en eral est coloriable avec 4 couleurs (m eme avec 3) qui fonctionne en temps polynomial (le probl` eme est NP -complet).
13
Quelle que soit la distribution initiale, on convergera vers une unique distribution stationnaire. On evalue une page par la probabilit e de cette page dans la distribution stationnaire.
14
Aujourdhui
Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique 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 appel e un arbre (libre). Un graphe2 sans-cycle est appel e une for et:
chacune de ses composantes connexes est un arbre.
4 1 5 0 3 6 2
non-orient e.
D` es quon a des objets, des relations entre objets, et pas de cycle, on a donc un arbre ou une for et. 4 1 5 0 3 6 2
non-orient e.
D` es quon a des objets, des relations entre objets, et pas de cycle, on a donc un arbre ou une for et. 4 1 5 0 3 6 2
non-orient e.
3 6 2
17
non-orient e.
Exemple: pour larbre libre pr ec edent, en prenant le sommet d etiquette 3 comme racine. 3
2
18
19
Plan
Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall
20
4 2 0
Autrement dit, un arbre binaire dentiers est solution de l equation: A = null (A int A)
21
22
On code un arbre vide par la r ef erence 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; }}
3 1 5 2 4 0
24
Plan
Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique 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 dalgorithmes sur les arbres n ecessitent de parcourir (traiter) tous les sommets
Exemple: Tester lexistence dune valeur particuli` ere dans un arbre. Exemple: Acher un arbre.
26
Parcourir en largeur
Parcours en largeur dabord.
on parcourt par distance croissante ` a la racine.
Si le traitement dun sommet consiste ` a lacher, on achera dans lordre 3, 1, 4, 5, 2, 0. Cest peut- etre le parcours le plus naturel, mais cest le plus d elicat ` a programmer avec les arbres binaires.
27
Parcourir en profondeur
28
32
Aujourdhui
Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique 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 darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall
34
Si graphe valu e: Mi ,j = v (i , j ).
4 1 5 0 3 6 2
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
35
Plan
Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall
36
On associe ` a chaque sommet i , la liste des sommets j tels que (i , j ) E . L[0] = (1) L[1] = (0, 5) 4 1 5 0 3 6 2 L[2] = () L[3] = (4, 6) L[4] = (3, 6) L[5] = (1) L[6] = (3, 4)
37
Matrice: m emoire O (n2 ) (mieux pour graphes denses). Listes: m emoire O (n + m) (mieux pour graphes creux). o` u n nombre de sommets, m nombre dar etes. Le mieux?: cela d epend du contexte.
38
Aujourdhui
Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique 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 darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall
40
Parcours g en erique
41
42
Plan
Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall
44
45
BFS sur lexemple pr ec edent: (a), (b) et (c ) montre les niveaux successifs qui sont consid er es. Les sommets sont visit es dans lordre 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 ) E . Alors i et j di` erent dau plus 1.
46
Plan
Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall
47
48
Sur le graphe pr ec edent, les sommets sont visit es cette fois dans lordre 1, 2, 3, 5, 4, 6, 7, 8. Le dessin plus bas montre les sommets dans lordre o` u ils sont d ecouverts.
49
Si on appelle T larbre couvrant produit (celui qui contient lhistoire du parcours: on d ecr` ete que v a u comme p` ere si lar ete (u , v ) a permis de d ecouvrir v ), on a: Pour chaque appel r ecursif DFS(u), tous les sommets qui sont marqu es explor es entre linvocation de lappel et son retour sont des descendants de u dans larbre T produit. Soit T un arbre DFS, et x et y deux sommets dans T , avec (x , y ) E qui nest pas une ar ete de T . Alors soit x est un anc etre de y , soit le contraire.
50
Fin tant que Temps O (n + m), o` u n est le nombre de sommets, et m le nombre dar etes avec une repr esentation par liste de successeurs.
51
Fin si
Fin while Temps O (n + m), o` u n est le nombre de sommets, et m le nombre dar etes, avec une repr esentation par liste de successeurs.
52
Aujourdhui
Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique 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 darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique 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
Entr ee : Sortie: Un graphe G = (V , E ) avec une source s Une fonction de poids w : E R+ Un vecteur distance d Une fonction p` ere : V V
3. retourner d et
55
Exemple
5 2 A 1
A (0, A) B (, )
B 2 D
C (, )
3 3 1
C 1 E
5 F 2
E (, ) F ( , )
init
D (, )
Exemple
5 2 A 1
A (0, A) (0, A) B (, ) (2, A)
B 2 D
C (, ) (5, A)
3 3 1
C 1 E
5 F 2
E (, ) (, ) F ( , ) (, )
init 1
D (, ) (1, A)
Exemple
5 2 A 1
A (0, A) (0, A) (0, A) B (, ) (2, A) (2, A)
B 2 D
C (, ) (5, A) (4, D )
3 3 1
C 1 E
5 F 2
E (, ) (, ) (2, D ) F ( , ) (, ) (10, C )
init 1 2
D (, ) (1, A) (1, A)
56
Exemple
5 2 A 1
A (0, A) (0, A) (0, A) (0, A)
B 2 D
3 3 1
C 1 E
5 F 2
E F (, ) (, ) (, ) (, ) (2, D ) (10, C ) (2, D ) (4, E ) (d (.), (.))
init 1 2 3
B C D (, ) (, ) (, ) (2, A) (5, A) (1, A) (2, A) (4, D ) (1, A) (2, A) (3, E ) (1, A) les couples correspondent ` a
Plan
Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall
57
Algorithme de Dijkstra
Entr ee : Sortie: Un graphe G = (V , E ) avec une source s Une fonction de poids w : E R+ Un vecteur distance d Une fonction p` ere : 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 ) +
Algorithme de Dijkstra
Entr ee : Sortie: Un graphe G = (V , E ) avec une source s Une fonction de poids w : E R+ Un vecteur distance d Une fonction p` ere : 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 ) +
Algorithme de Dijkstra
Entr ee : Sortie: Un graphe G = (V , E ) avec une source s Une fonction de poids w : E R+ Un vecteur distance d Une fonction p` ere : 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 ) +
4. retourner d et
58
Exemple
5 2 A 1 B 2 D 3 3 1 C 1 E 2 5 F
F (, )
59
Exemple
5 2 A 1 B 2 D 3 3 1 C 1 E 2 5 F
I 1
les couples correspondent ` a (d (.), (.)) Q A B C D E {ABCDEF } (0, ) (, ) (, ) (, ) (, ) {BCDEF } (0, A) (2, A) (5, A) (1, A) (, )
F (, ) (, )
59
Exemple
5 2 A 1 B 2 D 3 3 1 C 1 E 2 5 F
I 1 2
les couples correspondent ` a (d (.), (.)) Q A B C D E {ABCDEF } (0, ) (, ) (, ) (, ) (, ) {BCDEF } (0, A) (2, A) (5, A) (1, A) (, ) {BCEF } (0, A) (2, A) (4, D ) (1, A) (2, D )
F (, ) (, ) (, )
59
Exemple
5 2 A 1 B 2 D 3 3 1 C 1 E 2 5 F
I 1 2 3
les couples correspondent ` a (d (.), (.)) Q A B C D {ABCDEF } (0, ) (, ) (, ) (, ) {BCDEF } (0, A) (2, A) (5, A) (1, A) {BCEF } (0, A) (2, A) (4, D ) (1, A) {CEF } (0, A) (2, A) (4, D ) (1, A)
E (, ) (, ) (2, D ) (2, D )
F (, ) (, ) (, ) (, )
59
Exemple
5 2 A 1 B 2 D 3 3 1 C 1 E 2 5 F
I 1 2 3 4
les couples correspondent ` a (d (.), (.)) Q A B C D {ABCDEF } (0, ) (, ) (, ) (, ) {BCDEF } (0, A) (2, A) (5, A) (1, A) {BCEF } (0, A) (2, A) (4, D ) (1, A) {CEF } (0, A) (2, A) (4, D ) (1, A) {CF } (0, A) (2, A) (3, E ) (1, A)
F (, ) (, ) (, ) (, ) (4, E )
59
Exemple
5 2 A 1 B 2 D 3 3 1 C 1 E 2 5 F
I 1 2 3 4 5
les couples correspondent ` a (d (.), (.)) Q A B C D {ABCDEF } (0, ) (, ) (, ) (, ) {BCDEF } (0, A) (2, A) (5, A) (1, A) {BCEF } (0, A) (2, A) (4, D ) (1, A) {CEF } (0, A) (2, A) (4, D ) (1, A) {CF } (0, A) (2, A) (3, E ) (1, A) {F } (0, A) (2, A) (3, E ) (1, A)
F (, ) (, ) (, ) (, ) (4, E ) (4, E )
59
Exemple
5 2 A 1 B 2 D 3 3 1 C 1 E 2 5 F
les couples correspondent ` a (d (.), (.)) Q A B C D I {ABCDEF } (0, ) (, ) (, ) (, ) 1 {BCDEF } (0, A) (2, A) (5, A) (1, A) 2 {BCEF } (0, A) (2, A) (4, D ) (1, A) 3 {CEF } (0, A) (2, A) (4, D ) (1, A) 4 {CF } (0, A) (2, A) (3, E ) (1, A) 5 {F } (0, A) (2, A) (3, E ) (1, A) 6 (0, A) (2, A) (3, E ) (1, A) Complexit e de lalgorithme: O (|V |2 )
Plan
Rappels: les graphes Rappels: Les arbres Les arbres binaires Parcours darbres Repr esentation des graphes Matrice dadjacences Liste de successeurs Parcours de graphes Parcours g en erique Parcours en largeur BFS Parcours en profondeur DFS Calcul de distances Algorithme de Bellman-Ford Algorithme de Dijsktra Algorithme de Floyd Warshall
60
61
Principe
1. On initialise D ` aL 2. Apr` es lit eration k , D donne la longueur du plus court chemin lorsque lon utilise que des noeuds dans {1, .., k } comme noeuds interm ediaires (ou eventuellement aucun noeud interm ediaire). D enition: Dk est la matrice D apr` es lit eration k . Le r esulat nal recherch e est Dn .
62
R ecurrence
Dk [i , j ] = min(Dk 1 [i , j ], Dk 1 [i , k ] + Dk 1 [k , j ])
63
Floyd(L[1..n,1..n])
Retourner D.
64