Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parFrancette Wolff Modifié depuis plus de 10 années
1
Cours de graphes Les plus courts chemins,
les chemins les plus légers : à l’aide de la vague, à l’aide de la multiplication, à l’aide de Floyd-Warshall. Algorithmes de Dijkstra et Bellmann-Ford. 21 février 2006 Cours de graphes 2 - Intranet
2
Les grandes lignes du cours
Définitions de base Connexité Les plus courts chemins Dijkstra et Bellmann-Ford Arbres Arbres de recouvrement minimaux Problèmes de flots Coloriage de graphes Couplage Chemins d’Euler et de Hamilton Problèmes NP-complets 21 février 2006 Cours de graphes 2 - Intranet
3
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Plus courts La suite Plus légers 21 février 2006 Cours de graphes 2 - Intranet
4
Cours de graphes 2 - Intranet
Connexité – plus courts chemins E S H E M I N S L U S C O U R T S 21 février 2006 Cours de graphes 2 - Intranet
5
Cours de graphes 2 - Intranet
Connexité – plus courts chemins Sur un graphe non orienté, nous allons calculer : les composantes connexes ! Sur une composante connexe, nous allons calculer : les plus courts chemins ! Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! FAIT ! 21 février 2006 Cours de graphes 2 - Intranet
6
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! 21 février 2006 Cours de graphes 2 - Intranet
7
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! L’algorithme de la « vague » : Nous choisissons un sommet « u » sec et le mouillons, 21 février 2006 Cours de graphes 2 - Intranet
8
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! L’algorithme de la « vague » : Nous choisissons un sommet « u » sec et le mouillons, à l’étape 1, nous mouillons ses voisins, 21 février 2006 Cours de graphes 2 - Intranet
9
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! L’algorithme de la « vague » : Nous choisissons un sommet « u » sec et le mouillons, à l’étape 1, nous mouillons ses voisins, à l’étape 2, nous mouillons les voisins des voisins , . . . 21 février 2006 Cours de graphes 2 - Intranet
10
A quelle étape un sommet a-t-il été mouillé ?
Connexité – plus courts chemins La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! L’algorithme de la « vague » : Nous choisissons un sommet « u » sec et le mouillons, à l’étape 1, nous mouillons ses voisins, à l’étape 2, nous mouillons les voisins des voisins , . . . A quelle étape un sommet a-t-il été mouillé ? 21 février 2006 Cours de graphes 2 - Intranet
11
A quelle étape un sommet a-t-il été mouillé ?
Connexité – plus courts chemins La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! L’algorithme de la « vague » : Nous choisissons un sommet « u » sec et le mouillons, à l’étape 1, nous mouillons ses voisins, à l’étape 2, nous mouillons les voisins des voisins , . . . En temps Q ( | E | ) = O ( | V |^2 ) , nous connaissons les plus courts chemins du sommet « u » vers les autres ! A quelle étape un sommet a-t-il été mouillé ? 21 février 2006 Cours de graphes 2 - Intranet
12
Cours de graphes 2 - Intranet
Connexité – plus courts chemins 21 février 2006 Cours de graphes 2 - Intranet
13
Cours de graphes 2 - Intranet
Connexité – plus courts chemins Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
14
Cours de graphes 2 - Intranet
Connexité – plus courts chemins u Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
15
Cours de graphes 2 - Intranet
Connexité – plus courts chemins u Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
16
Cours de graphes 2 - Intranet
Connexité – plus courts chemins u Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
17
Cours de graphes 2 - Intranet
Connexité – plus courts chemins Touché une seconde fois ! u Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
18
Cours de graphes 2 - Intranet
Connexité – plus courts chemins Touché une seconde fois ! u Touché deux fois ! Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
19
Cours de graphes 2 - Intranet
Connexité – plus courts chemins u Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
20
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La connaissance de d ( u , v ) et d ( u , w ) ne permet pas de dire grand-chose sur d ( v , w ) ! 21 février 2006 Cours de graphes 2 - Intranet
21
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La connaissance de d ( u , v ) et d ( u , w ) ne permet pas de dire grand-chose sur d ( v , w ) ! v u w 21 février 2006 Cours de graphes 2 - Intranet
22
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La connaissance de d ( u , v ) et d ( u , w ) ne permet pas de dire grand-chose sur d ( v , w ) ! v u w u w v 21 février 2006 Cours de graphes 2 - Intranet
23
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La connaissance de d ( u , v ) et d ( u , w ) ne permet pas de dire grand-chose sur d ( v , w ) ! Il faut répéter la vague depuis chaque sommet « u » du graphe ! v u w u w v 21 février 2006 Cours de graphes 2 - Intranet
24
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La connaissance de d ( u , v ) et d ( u , w ) ne permet pas de dire grand-chose sur d ( v , w ) ! Il faut répéter la vague depuis chaque sommet « u » du graphe ! En temps Q ( | V | * | E | ) = O ( | V |^3 ) , nous connaissons les plus courts chemins de tout sommet à tout sommet ! v u w u w v 21 février 2006 Cours de graphes 2 - Intranet
25
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Plus courts Plus légers 21 février 2006 Cours de graphes 2 - Intranet
26
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La multiplication de matrices : 21 février 2006 Cours de graphes 2 - Intranet
27
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. 21 février 2006 Cours de graphes 2 - Intranet
28
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) k 21 février 2006 Cours de graphes 2 - Intranet
29
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> k 21 février 2006 Cours de graphes 2 - Intranet
30
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> Propriété : M^( 2 * i ) = M^i * M^i contient tous les plus courts chemins de longueur au plus 2 * i , c’est-à-dire qu’elle contient des « +µ » et des valeurs dans { 0 , , 2 * i } . k 21 février 2006 Cours de graphes 2 - Intranet
31
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> Propriété : M^( 2 * i ) = M^i * M^i contient tous les plus courts chemins de longueur au plus 2 * i , c’est-à-dire qu’elle contient des « +µ » et des valeurs dans { 0 , , 2 * i } . Il suffit de calculer M^k avec k >= | V |-1 à l’aide de O ( log( | V | ) ) élévations au carré ! k 21 février 2006 Cours de graphes 2 - Intranet
32
Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . 21 février 2006 Cours de graphes 2 - Intranet
33
Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . 21 février 2006 Cours de graphes 2 - Intranet
34
Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ 21 février 2006 Cours de graphes 2 - Intranet
35
Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ min_k M^i ( u , k ) + M^i ( k , v ) <> +µ 21 février 2006 Cours de graphes 2 - Intranet
36
Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ min_k M^i ( u , k ) + M^i ( k , v ) <> +µ $ w tel que M^i ( u , w ) + M^i ( w , v ) <> +µ et de valeur minimale. 21 février 2006 Cours de graphes 2 - Intranet
37
Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ min_k M^i ( u , k ) + M^i ( k , v ) <> +µ $ w tel que M^i ( u , w ) + M^i ( w , v ) <> +µ et de valeur minimale. M^i ( u , w ) <> +µ et M^i ( w , v ) <> +µ 21 février 2006 Cours de graphes 2 - Intranet
38
Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ min_k M^i ( u , k ) + M^i ( k , v ) <> +µ $ w tel que M^i ( u , w ) + M^i ( w , v ) <> +µ et de valeur minimale. M^i ( u , w ) <> +µ et M^i ( w , v ) <> +µ Les plus courts chemins de ( u ; w ) et de ( w ; v ) sont de longueur au plus i. 21 février 2006 Cours de graphes 2 - Intranet
39
Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ min_k M^i ( u , k ) + M^i ( k , v ) <> +µ $ w tel que M^i ( u , w ) + M^i ( w , v ) <> +µ et de valeur minimale. M^i ( u , w ) <> +µ et M^i ( w , v ) <> +µ Les plus courts chemins de ( u ; w ) et de ( w ; v ) sont de longueur au plus i. Le plus court chemin de « u » vers « v » est de longueur au plus 2 * i et c’est ( u ; w ; v ) . 21 février 2006 Cours de graphes 2 - Intranet
40
Lemme des plus courts chemins !
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ min_k M^i ( u , k ) + M^i ( k , v ) <> +µ $ w tel que M^i ( u , w ) + M^i ( w , v ) <> +µ et de valeur minimale. M^i ( u , w ) <> +µ et M^i ( w , v ) <> +µ Les plus courts chemins de ( u ; w ) et de ( w ; v ) sont de longueur au plus i. Le plus court chemin de « u » vers « v » est de longueur au plus 2 * i et c’est ( u ; w ; v ) . Lemme des plus courts chemins ! 21 février 2006 Cours de graphes 2 - Intranet
41
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Plus courts Plus légers 21 février 2006 Cours de graphes 2 - Intranet
42
Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. 21 février 2006 Cours de graphes 2 - Intranet
43
Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . (k-1) 21 février 2006 Cours de graphes 2 - Intranet
44
Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) (k-1) (k) 21 février 2006 Cours de graphes 2 - Intranet
45
Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) (k-1) (k) (k-1) M ( u , v ) 21 février 2006 Cours de graphes 2 - Intranet
46
Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) 21 février 2006 Cours de graphes 2 - Intranet
47
Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) Le plus court chemin avec des sommets dans { 1 , , k } : peut, soit, ne pas passer par « k », (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) 21 février 2006 Cours de graphes 2 - Intranet
48
Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) Le plus court chemin avec des sommets dans { 1 , , k } : peut, soit, ne pas passer par « k », peut, soit, passer par « k » ! (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) 21 février 2006 Cours de graphes 2 - Intranet
49
Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) Le plus court chemin avec des sommets dans { 1 , , k } : peut, soit, ne pas passer par « k », peut, soit, passer par « k » ! M est la matrice recherchée ! (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) (n) 21 février 2006 Cours de graphes 2 - Intranet
50
Cours de graphes 2 - Intranet
Connexité – plus courts chemins La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Plus légers 21 février 2006 Cours de graphes 2 - Intranet
51
Cours de graphes 2 - Intranet
Connexité – plus courts chemins E S H E M I N S L U S L E G E R S 21 février 2006 Cours de graphes 2 - Intranet
52
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Sur un graphe non orienté, nous allons calculer : les composantes connexes ! Sur une composante connexe, nous allons calculer : les plus courts chemins ! Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! FAIT ! FAIT ! 21 février 2006 Cours de graphes 2 - Intranet
53
Les plus courts chemins en sont un cas particulier !
Connexité – chemins les plus légers Sur un graphe non orienté, nous allons calculer : les composantes connexes ! Sur une composante connexe, nous allons calculer : les plus courts chemins ! Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! FAIT ! FAIT ! Les plus courts chemins en sont un cas particulier ! 21 février 2006 Cours de graphes 2 - Intranet
54
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! 21 février 2006 Cours de graphes 2 - Intranet
55
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! En présence de poids négatifs, le problème pourrait ne plus avoir de sens, car il pourrait y avoir des cycles de poids négatif. 21 février 2006 Cours de graphes 2 - Intranet
56
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! En présence de poids négatifs, le problème pourrait ne plus avoir de sens, car il pourrait y avoir des cycles de poids négatif. 5 10 -15 5 5 21 février 2006 Cours de graphes 2 - Intranet
57
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! En présence de poids négatifs, le problème pourrait ne plus avoir de sens, car il pourrait y avoir des cycles de poids négatif. 5 10 -15 5 Cycle de poids négatif ! 5 21 février 2006 Cours de graphes 2 - Intranet
58
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! 21 février 2006 Cours de graphes 2 - Intranet
59
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 21 février 2006 Cours de graphes 2 - Intranet
60
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 8 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
61
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 8 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
62
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 5 8 30 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
63
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 15 5 8 30 40 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
64
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 15 Une vague qui se brise. Nous l’ignorons ! ! ! 5 8 30 40 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
65
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 15 Elle n’existe plus ! 5 8 30 40 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
66
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 15 5 8 23 30 40 45 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
67
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 Ceci est à refaire ! 5 15 5 8 23 30 40 45 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
68
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . . 10 Ceci est à refaire ! 5 15 5 8 23 30 40 45 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
69
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . . Quand est-ce que c’est fini ? ? ? 10 Ceci est à refaire ! 5 15 5 8 23 30 40 45 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
70
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . . Quand est-ce que c’est fini ? ? ? STOP ! ! ! 10 Ceci est à refaire ! 5 15 5 8 23 30 40 45 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet
71
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un cas pathologique : 5 8 5 8 . . . 5 8 X 20 20 20 21 février 2006 Cours de graphes 2 - Intranet
72
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un cas pathologique : 5 8 5 8 . . . 5 8 X Y 20 20 20 2 vagues 21 février 2006 Cours de graphes 2 - Intranet
73
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un cas pathologique : 5 8 5 8 . . . 5 8 X Y T 20 20 20 2 vagues 4 vagues dont 2 simultanées 21 février 2006 Cours de graphes 2 - Intranet
74
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un cas pathologique : 5 8 5 8 . . . 5 8 X Y T Z 20 20 20 2 vagues O ( n / 3 ) vagues ! ! ! 4 vagues dont 2 simultanées 21 février 2006 Cours de graphes 2 - Intranet
75
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Plus légers N O N ! 21 février 2006 Cours de graphes 2 - Intranet
76
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Plus légers N O N ! C'est trop pénible ! ! ! 21 février 2006 Cours de graphes 2 - Intranet
77
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La multiplication de matrices : 21 février 2006 Cours de graphes 2 - Intranet
78
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, le poids de l’arête lorsqu’elle existe et « +µ » sinon. 21 février 2006 Cours de graphes 2 - Intranet
79
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, le poids de l’arête lorsqu’elle existe et « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) k 21 février 2006 Cours de graphes 2 - Intranet
80
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, le poids de l’arête lorsqu’elle existe et « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> k 21 février 2006 Cours de graphes 2 - Intranet
81
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, le poids de l’arête lorsqu’elle existe et « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> Propriété : M^( 2 * i ) = M^i * M^i contient tous les chemins les plus légers de longueur au plus 2 * i (nombre d’arêtes). k 21 février 2006 Cours de graphes 2 - Intranet
82
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, le poids de l’arête lorsqu’elle existe et « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> Propriété : M^( 2 * i ) = M^i * M^i contient tous les chemins les plus légers de longueur au plus 2 * i (nombre d’arêtes). Il suffit de calculer M^k avec k >= | V |-1 à l’aide de O ( log( | V | ) ) élévations au carré ! k 21 février 2006 Cours de graphes 2 - Intranet
83
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Plus légers N O N ! 21 février 2006 Cours de graphes 2 - Intranet
84
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Plus légers N O N ! Le même programme ! 21 février 2006 Cours de graphes 2 - Intranet
85
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, le poids de l’arête si elle existe et des « +µ » sinon. 21 février 2006 Cours de graphes 2 - Intranet
86
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, le poids de l’arête si elle existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les chemins les plus légers construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) Le chemin le plus léger avec des sommets dans { 1 , , k } : peut, soit, ne pas passer par « k », peut, soit, passer par « k » ! M est la matrice recherchée ! (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) (n) 21 février 2006 Cours de graphes 2 - Intranet
87
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, le poids de l’arête si elle existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les chemins les plus légers construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) Le chemin le plus léger avec des sommets dans { 1 , , k } : peut, soit, ne pas passer par « k », peut, soit, passer par « k » ! M est la matrice recherchée ! Le reste ne change pas ! (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) (n) 21 février 2006 Cours de graphes 2 - Intranet
88
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Plus légers N O N ! Q ( | V |^3 ) 21 février 2006 Cours de graphes 2 - Intranet
89
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Plus légers N O N ! Q ( | V |^3 ) Le même programme ! 21 février 2006 Cours de graphes 2 - Intranet
90
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers OPTIMAUX ! La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Plus légers N O N ! Q ( | V |^3 ) 21 février 2006 Cours de graphes 2 - Intranet
91
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Et les graphes orientés ? ? ? 21 février 2006 Cours de graphes 2 - Intranet
92
Tout ce que nous venons de voir reste valable en orienté !
Connexité – chemins les plus légers Et les graphes orientés ? ? ? Tout ce que nous venons de voir reste valable en orienté ! 21 février 2006 Cours de graphes 2 - Intranet
93
Tout ce que nous venons de voir reste valable en orienté !
Connexité – chemins les plus légers Et les graphes orientés ? ? ? à ceci près que la connexité orientée par l’algorithme de la vague nécessite de répéter l’algorithme pour chaque sommet et introduit une complexité en Q ( | V | * | E | ) ! Tout ce que nous venons de voir reste valable en orienté ! 21 février 2006 Cours de graphes 2 - Intranet
94
Cours de graphes 2 - Intranet
Pour les graphes orientés La vague Multiplication Floyd-Warshall Connexité en orienté Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Plus légers N O N ! Q ( | V |^3 ) 21 février 2006 Cours de graphes 2 - Intranet
95
Cours de graphes 2 - Intranet
Pour les graphes orientés OPTIMAUX ! La vague Multiplication Floyd-Warshall Connexité en orienté Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) N O N ! Q ( | V |^3 ) Plus légers 21 février 2006 Cours de graphes 2 - Intranet
96
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Deux questions : La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets ! 21 février 2006 Cours de graphes 2 - Intranet
97
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Deux questions : La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets ! Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même complexité ? Oui, c’est l’algorithme de Dijkstra ! 21 février 2006 Cours de graphes 2 - Intranet
98
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Deux questions : La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets ! Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même complexité ? Oui, c’est l’algorithme de Dijkstra ! Nous avons dû exiger que les poids des arêtes soient positifs ou nuls ! 21 février 2006 Cours de graphes 2 - Intranet
99
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Deux questions : La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets ! Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même complexité ? Oui, c’est l’algorithme de Dijkstra ! Nous avons dû exiger que les poids des arêtes soient positifs ou nuls ! Pouvons-nous lever cette limitation, quitte à devoir détecter des cycles de poids négatifs ? Oui, c’est l’algorithme de Bellmann-Ford ! 21 février 2006 Cours de graphes 2 - Intranet
100
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Deux questions : La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets ! Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même complexité ? Oui, c’est l’algorithme de Dijkstra ! Nous avons dû exiger que les poids des arêtes soient positifs ou nuls ! Pouvons-nous lever cette limitation, quitte à devoir détecter des cycles de poids négatifs ? Oui, c’est l’algorithme de Bellmann-Ford ! Le graphe pourra être orienté ou non ! 21 février 2006 Cours de graphes 2 - Intranet
101
Cours de graphes 2 - Intranet
Connexité – plus courts chemins ‘ A L G O R I T H M E D E D I J K S T R A 21 février 2006 Cours de graphes 2 - Intranet
102
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! 21 février 2006 Cours de graphes 2 - Intranet
103
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. 21 février 2006 Cours de graphes 2 - Intranet
104
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. Pour chaque sommet « u » nous connaissons « D ( u ) » qui est un majorant du chemin le plus léger, 21 février 2006 Cours de graphes 2 - Intranet
105
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. Pour chaque sommet « u » nous connaissons « D ( u ) » qui est un majorant du chemin le plus léger, qui correspond au poids d’un chemin de « s » vers « u », 21 février 2006 Cours de graphes 2 - Intranet
106
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. Pour chaque sommet « u » nous connaissons « D ( u ) » qui est un majorant du chemin le plus léger, qui correspond au poids d’un chemin de « s » vers « u », qui vaut initialement « +µ » pour tout « u » différent de « s » 21 février 2006 Cours de graphes 2 - Intranet
107
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. Pour chaque sommet « u » nous connaissons « D ( u ) » qui est un majorant du chemin le plus léger, qui correspond au poids d’un chemin de « s » vers « u », qui vaut initialement « +µ » pour tout « u » différent de « s » et qui sera égal au chemin le plus léger à la fin du calcul. 21 février 2006 Cours de graphes 2 - Intranet
108
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. Pour chaque sommet « u » nous connaissons « D ( u ) » qui est un majorant du chemin le plus léger, qui correspond au poids d’un chemin de « s » vers « u », qui vaut initialement « +µ » pour tout « u » différent de « s » et qui sera égal au chemin le plus léger à la fin du calcul. De plus, pour tout « u » nous connaissons « P ( u ) » qui est le sommet qui précède « u » le long du meilleur chemin courant. 21 février 2006 Cours de graphes 2 - Intranet
109
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de base « relax ( x , v ) » demande si le meilleur chemin actuel ne peut pas être amélioré si le sommet « x » devient le prédécesseur de « v » ? 21 février 2006 Cours de graphes 2 - Intranet
110
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de base « relax ( x , v ) » demande si le meilleur chemin actuel ne peut pas être amélioré si le sommet « x » devient le prédécesseur de « v » ? D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ? 21 février 2006 Cours de graphes 2 - Intranet
111
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de base « relax ( x , v ) » demande si le meilleur chemin actuel ne peut pas être amélioré si le sommet « x » devient le prédécesseur de « v » ? D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ? NON RIEN ! 21 février 2006 Cours de graphes 2 - Intranet
112
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de base « relax ( x , v ) » demande si le meilleur chemin actuel ne peut pas être amélioré si le sommet « x » devient le prédécesseur de « v » ? D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ? NON OUI RIEN ! D ( v ) <- D ( x ) + M ( x , v ) et P ( v ) <- x 21 février 2006 Cours de graphes 2 - Intranet
113
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de base « relax ( x , v ) » demande si le meilleur chemin actuel ne peut pas être amélioré si le sommet « x » devient le prédécesseur de « v » ? D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ? NON OUI RIEN ! D ( v ) <- D ( x ) + M ( x , v ) et P ( v ) <- x Donc, D ( v ) décroît et correspond à un chemin du graphe ! 21 février 2006 Cours de graphes 2 - Intranet
114
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de relaxation « relax ( x , v ) » : fonction relax ( x , v ) si D ( x ) + M ( x , v ) < D ( v ) D ( v ) <- D ( x ) + M ( x , v ) ; P ( v ) <- x ; fsi 21 février 2006 Cours de graphes 2 - Intranet
115
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } 21 février 2006 Cours de graphes 2 - Intranet
116
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! 21 février 2006 Cours de graphes 2 - Intranet
117
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! Nous initialisons les prédécesseurs ! 21 février 2006 Cours de graphes 2 - Intranet
118
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! Nous initialisons les prédécesseurs ! Nous initialisons les sommets à parcourir ! 21 février 2006 Cours de graphes 2 - Intranet
119
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! Nous initialisons les prédécesseurs ! Nous initialisons les sommets à parcourir ! Tant qu’il reste un sommet à traiter . . . 21 février 2006 Cours de graphes 2 - Intranet
120
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! Nous initialisons les prédécesseurs ! Nous initialisons les sommets à parcourir ! Tant qu’il reste un sommet à traiter . . . Nous retirons le sommet « u » dont « D ( u ) » est minimal ! 21 février 2006 Cours de graphes 2 - Intranet
121
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! Nous initialisons les prédécesseurs ! Nous initialisons les sommets à parcourir ! Tant qu’il reste un sommet à traiter . . . Nous retirons le sommet « u » dont « D ( u ) » est minimal ! Nous relaxons ses voisins qui ne sont pas encore définitifs ! ! ! 21 février 2006 Cours de graphes 2 - Intranet
122
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 21 février 2006 Cours de graphes 2 - Intranet
123
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? 21 février 2006 Cours de graphes 2 - Intranet
124
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? / E <- E \ { s } 21 février 2006 Cours de graphes 2 - Intranet
125
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? / relax ( s , a ) E <- E \ { s } relax ( s , b ) 21 février 2006 Cours de graphes 2 - Intranet
126
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) E s a b c D µ P s s s ? / 21 février 2006 Cours de graphes 2 - Intranet
127
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / E s a b c D µ P s s s ? / E <- E \ { a } 21 février 2006 Cours de graphes 2 - Intranet
128
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) E s a b c D µ P s s s ? / / E <- E \ { a } relax ( a , b ) 21 février 2006 Cours de graphes 2 - Intranet
129
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) E s a b c D µ P s s s ? / / E <- E \ { a } relax ( a , b ) / E s a b c D µ P s s a ? / 21 février 2006 Cours de graphes 2 - Intranet
130
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / / E s a b c D µ P s s s ? E <- E \ { a } relax ( a , b ) E s a b c D µ P s s a ? / / / E <- E \ { b } 21 février 2006 Cours de graphes 2 - Intranet
131
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / / E s a b c D µ P s s s ? E <- E \ { a } relax ( a , b ) E s a b c D P s s a b / / / E <- E \ { b } relax ( b , c ) 21 février 2006 Cours de graphes 2 - Intranet
132
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / / E s a b c D µ P s s s ? E <- E \ { a } relax ( a , b ) E s a b c D P s s a b / / / / E <- E \ { b } relax ( b , c ) E <- E \ { c } 21 février 2006 Cours de graphes 2 - Intranet
133
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! 21 février 2006 Cours de graphes 2 - Intranet
134
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! 21 février 2006 Cours de graphes 2 - Intranet
135
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Ce serait la première erreur de l'algorithme ! 21 février 2006 Cours de graphes 2 - Intranet
136
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Ce serait la première erreur de l'algorithme ! Nous allons montrer qu'elle n'existe pas ! ! ! 21 février 2006 Cours de graphes 2 - Intranet
137
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u 21 février 2006 Cours de graphes 2 - Intranet
138
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! 21 février 2006 Cours de graphes 2 - Intranet
139
Le raisonnement reste le même si seul le sommet "s" a été extrait !
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Le raisonnement reste le même si seul le sommet "s" a été extrait ! 21 février 2006 Cours de graphes 2 - Intranet
140
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! 21 février 2006 Cours de graphes 2 - Intranet
141
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! 21 février 2006 Cours de graphes 2 - Intranet
142
Le raisonnement reste le même
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! Le raisonnement reste le même si les sommets "y" et "u" sont confondus ! 21 février 2006 Cours de graphes 2 - Intranet
143
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( u ) <= D ( y ) car « u » va être extrait ! 21 février 2006 Cours de graphes 2 - Intranet
144
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! 21 février 2006 Cours de graphes 2 - Intranet
145
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! 21 février 2006 Cours de graphes 2 - Intranet
146
Sans le savoir, nous avons déjà la bonne valeur pour D ( y ) !
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! Sans le savoir, nous avons déjà la bonne valeur pour D ( y ) ! 21 février 2006 Cours de graphes 2 - Intranet
147
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : Poids positifs ou nuls ! s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u ) 21 février 2006 Cours de graphes 2 - Intranet
148
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : Poids positifs ou nuls ! s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( y ) = d ( s , y ) = D ( u ) = d ( s , u ) D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u ) 21 février 2006 Cours de graphes 2 - Intranet
149
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Contradiction ! ! ! Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : Poids positifs ou nuls ! s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( y ) = d ( s , y ) = D ( u ) = d ( s , u ) D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u ) 21 février 2006 Cours de graphes 2 - Intranet
150
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs). 21 février 2006 Cours de graphes 2 - Intranet
151
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs). Tout sommet « u » est extrait avec une valeur « D ( u ) » qui est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » ! 21 février 2006 Cours de graphes 2 - Intranet
152
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs). Tout sommet « u » est extrait avec une valeur « D ( u ) » qui est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » ! La complexité vaut Q ( | V | + | E | ) , car nous parcourons, exactement une fois, tous les sommets et toutes les arêtes ! 21 février 2006 Cours de graphes 2 - Intranet
153
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs). Tout sommet « u » est extrait avec une valeur « D ( u ) » qui est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » ! La complexité vaut Q ( | V | + | E | ) , car nous parcourons, exactement une fois, tous les sommets et toutes les arêtes ! Et Q ( | V | + | E | ) = Q ( | E | ) car le graphe est connexe ! 21 février 2006 Cours de graphes 2 - Intranet
154
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs). Tout sommet « u » est extrait avec une valeur « D ( u ) » qui est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » ! La complexité vaut Q ( | V | + | E | ) , car nous parcourons, exactement une fois, tous les sommets et toutes les arêtes ! Et Q ( | V | + | E | ) = Q ( | E | ) car le graphe est connexe ! Attention, tout ceci est correct uniquement si les poids sont positifs ou nuls ! ! ! 21 février 2006 Cours de graphes 2 - Intranet
155
Cours de graphes 2 - Intranet
Connexité – plus courts chemins ‘ A L G O R I T H M E D E B E L L M A N N - F O R D 21 février 2006 Cours de graphes 2 - Intranet
156
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs). 21 février 2006 Cours de graphes 2 - Intranet
157
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs). Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids négatif. 21 février 2006 Cours de graphes 2 - Intranet
158
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs). Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids négatif. La complexité est en O ( | V |^3 ) , comme Floyd-Warshall ! 21 février 2006 Cours de graphes 2 - Intranet
159
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs). Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids négatif. La complexité est en O ( | V |^3 ) , comme Floyd-Warshall ! BF utilise la même relaxation que Dijkstra, mais ne considère jamais qu’une valeur d’un sommet est définitive (et que le sommet peut être retiré de l’ensemble « E »). 21 février 2006 Cours de graphes 2 - Intranet
160
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs). Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids négatif. La complexité est en O ( | V |^3 ) , comme Floyd-Warshall ! BF utilise la même relaxation que Dijkstra, mais ne considère jamais qu’une valeur d’un sommet est définitive (et que le sommet peut être retiré de l’ensemble « E »). Nous continuons tant qu’il y a des poids peuvent être réduits et que (nous verrons plus tard) ! 21 février 2006 Cours de graphes 2 - Intranet
161
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de relaxation « relax ( x , v ) » dit si, oui ou non, le poids du sommet « v » est resté stable. fonction relax ( x , v ) si D ( x ) + M ( x , v ) < D ( v ) D ( v ) <- D ( x ) + M ( x , v ) ; P ( v ) <- x ; rendre ( FAUX ) ; sinon rendre ( VRAI ) ; 21 février 2006 Cours de graphes 2 - Intranet
162
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de relaxation « relax ( x , v ) » dit si, oui ou non, le poids du sommet « v » est resté stable. fonction relax ( x , v ) si D ( x ) + M ( x , v ) < D ( v ) D ( v ) <- D ( x ) + M ( x , v ) ; P ( v ) <- x ; rendre ( FAUX ) ; sinon rendre ( VRAI ) ; 21 février 2006 Cours de graphes 2 - Intranet
163
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le code presque correct : pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; jusqua stable = VRAI ; 21 février 2006 Cours de graphes 2 - Intranet
164
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le code presque correct : pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; jusqua stable = VRAI ; La même initialisation ! 21 février 2006 Cours de graphes 2 - Intranet
165
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le code presque correct : pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; jusqua stable = VRAI ; La même initialisation ! Nous relaxons tout ! ! ! 21 février 2006 Cours de graphes 2 - Intranet
166
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le code presque correct : pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; jusqua stable = VRAI ; La même initialisation ! Nous nous arrêtons lorsqu’aucun poids n’a pu être réduit au dernier passage ! Nous relaxons tout ! ! ! 21 février 2006 Cours de graphes 2 - Intranet
167
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifs revient à ne considérer que des chemins simples ! ! ! ! ! ! 21 février 2006 Cours de graphes 2 - Intranet
168
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifs revient à ne considérer que des chemins simples ! ! ! ! ! ! L’algorithme que nous avons construit s’arrête dans ces cas ! 21 février 2006 Cours de graphes 2 - Intranet
169
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifs revient à ne considérer que des chemins simples ! ! ! ! ! ! L’algorithme que nous avons construit s’arrête dans ces cas ! S’il y a des cycles de poids négatifs : le chemin le plus léger ne sera plus un chemin simple, l’algorithme va boucler ! 21 février 2006 Cours de graphes 2 - Intranet
170
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifs revient à ne considérer que des chemins simples ! ! ! ! ! ! L’algorithme que nous avons construit s’arrête dans ces cas ! S’il y a des cycles de poids négatifs : le chemin le plus léger ne sera plus un chemin simple, l’algorithme va boucler ! Il faut un garde-fou : Pour « n » sommets, le chemin simple le plus long ne dépasse pas « n – 1 » étapes. 21 février 2006 Cours de graphes 2 - Intranet
171
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un code correct : . . . k <- 0 ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; k <- k + 1 ; jusqua stable = VRAI ou k > n – 1 si k > n – 1 Il y a des cycles de poids négatifs ; 21 février 2006 Cours de graphes 2 - Intranet
172
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un code correct : Nous comptons et limitons le nombre de tours de boucle ! . . . k <- 0 ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; k <- k + 1 ; jusqua stable = VRAI ou k > n – 1 si k > n – 1 Il y a des cycles de poids négatifs ; 21 février 2006 Cours de graphes 2 - Intranet
173
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un code correct : Nous comptons et limitons le nombre de tours de boucle ! . . . k <- 0 ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; k <- k + 1 ; jusqua stable = VRAI ou k > n – 1 si k > n – 1 Il y a des cycles de poids négatifs ; Si « k » atteint « n » c’est qu’il y a des boucles de poids négatifs ! 21 février 2006 Cours de graphes 2 - Intranet
174
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». 21 février 2006 Cours de graphes 2 - Intranet
175
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». Soit le chemin simple le plus léger de « s » vers « u » : avec f <= | V | - 1 et u = a . . . s a a 1 f f 21 février 2006 Cours de graphes 2 - Intranet
176
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». Soit le chemin simple le plus léger de « s » vers « u » : avec f <= | V | - 1 et u = a Après le i tour de boucle : D ( a ) = d ( s , a ) . . . . s a a 1 f f e i i 21 février 2006 Cours de graphes 2 - Intranet
177
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». Soit le chemin simple le plus léger de « s » vers « u » : avec f <= | V | - 1 et u = a Après le i tour de boucle : D ( a ) = d ( s , a ) . Trivial, pour i = 0 , c’est-à-dire pour « s » ! . . . s a a 1 f f e i i 21 février 2006 Cours de graphes 2 - Intranet
178
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». Soit le chemin simple le plus léger de « s » vers « u » : avec f <= | V | - 1 et u = a Après le i tour de boucle : D ( a ) = d ( s , a ) . Trivial, pour i = 0 , c’est-à-dire pour « s » ! Si c’est vrai pour « i », le i+1 tour calcule : D ( a ) = relax ( a , a ) = d ( s , a ) . . . s a a 1 f f e i i e i+1 i i+1 i+1 21 février 2006 Cours de graphes 2 - Intranet
179
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». Soit le chemin simple le plus léger de « s » vers « u » : avec f <= | V | - 1 et u = a Après le i tour de boucle : D ( a ) = d ( s , a ) . Trivial, pour i = 0 , c’est-à-dire pour « s » ! Si c’est vrai pour « i », le i+1 tour calcule : D ( a ) = relax ( a , a ) = d ( s , a ) Après le tour de boucle « f » : D ( u ) = D ( a ) = d ( s , a ) . . . s a a 1 f f e i i e i+1 i i+1 i+1 f f 21 février 2006 Cours de graphes 2 - Intranet
180
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». Soit le chemin simple le plus léger de « s » vers « u » : avec f <= | V | - 1 et u = a Après le i tour de boucle : D ( a ) = d ( s , a ) . Trivial, pour i = 0 , c’est-à-dire pour « s » ! Si c’est vrai pour « i », le i+1 tour calcule : D ( a ) = relax ( a , a ) = d ( s , a ) Après le tour de boucle « f » : D ( u ) = D ( a ) = d ( s , a ) . . . s a a 1 f f e i i e i+1 i i+1 i+1 f f 21 février 2006 Cours de graphes 2 - Intranet
181
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction (suite) : Au bout de « | V | - 1 » itérations nous avons tous les chemins simples les plus légers ! 21 février 2006 Cours de graphes 2 - Intranet
182
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction (suite) : Au bout de « | V | - 1 » itérations nous avons tous les chemins simples les plus légers ! S’il y a encore des modifications de poids au-delà de cette itération, c’est qu’il existe des cycles de poids négatifs ! 21 février 2006 Cours de graphes 2 - Intranet
183
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction (suite) : Au bout de « | V | - 1 » itérations nous avons tous les chemins simples les plus légers ! S’il y a encore des modifications de poids au-delà de cette itération, c’est qu’il existe des cycles de poids négatifs ! La complexité : en présence de cycles de poids négatifs : Q ( | V | * | E | ) 21 février 2006 Cours de graphes 2 - Intranet
184
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction (suite) : Au bout de « | V | - 1 » itérations nous avons tous les chemins simples les plus légers ! S’il y a encore des modifications de poids au-delà de cette itération, c’est qu’il existe des cycles de poids négatifs ! La complexité : en présence de cycles de poids négatifs : Q ( | V | * | E | ) en l’absence de cycles de poids négatifs : Q ( D ( G ) * | E | ) 21 février 2006 Cours de graphes 2 - Intranet
185
Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction (suite) : Au bout de « | V | - 1 » itérations nous avons tous les chemins simples les plus légers ! S’il y a encore des modifications de poids au-delà de cette itération, c’est qu’il existe des cycles de poids négatifs ! La complexité : en présence de cycles de poids négatifs : Q ( | V | * | E | ) en l’absence de cycles de poids négatifs : Q ( D ( G ) * | E | ) Le diamètre D ( G ) est la longueur du plus long chemin simple ! 21 février 2006 Cours de graphes 2 - Intranet
186
Synthèse -----------------------------------------------------------------
Les plus courts chemins, les chemins les plus légers : à l’aide de la vague, à l’aide de la multiplication, à l’aide de Floyd-Warshall. Algorithmes de Dijkstra et Bellmann-Ford. 21 février 2006 Cours de graphes 2 - Intranet
187
Cours de graphes 2 - Intranet
m E r C i e T O n N e J o U r N é E ! ! ! ‘ o U b L i E z P a S d E p R é P a R e R v O s T D ! ! ! 21 février 2006 Cours de graphes 2 - Intranet
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.