21 février 2006 Cours de graphes 2 - Intranet 1
Cours de graphesCours de graphes
Les plus courts chemins,Les plus courts chemins,
les chemins les plus légers :les chemins les plus légers :
à l’aide de la vague,à l’aide de la vague,
à l’aide de la multiplication,à l’aide de la multiplication,
à l’aide de Floyd-Warshall.à l’aide de Floyd-Warshall.
Algorithmes de Dijkstra et Bellmann-Algorithmes de Dijkstra et Bellmann-Ford.Ford.
21 février 2006 Cours de graphes 2 - Intranet 2
Les grandes lignes du coursLes grandes lignes du cours
•Définitions de baseDéfinitions de base•ConnexitéConnexité•Les plus courts cheminsLes plus courts chemins•Dijkstra et Bellmann-FordDijkstra et Bellmann-Ford•ArbresArbres•Arbres de recouvrement minimaux Arbres de recouvrement minimaux •Problèmes de flotsProblèmes de flots•Coloriage de graphesColoriage de graphes•CouplageCouplage•Chemins d’Euler et de HamiltonChemins d’Euler et de Hamilton•Problèmes NP-completsProblèmes NP-complets
21 février 2006 Cours de graphes 2 - Intranet 3
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
ConnexitéConnexité
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | E | ) =( | E | ) = O ( | V |^2 )O ( | V |^2 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
21 février 2006 Cours de graphes 2 - Intranet 4
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 5
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• Sur un graphe non orienté, nous allons calculer :Sur un graphe non orienté, nous allons calculer :
– les composantes connexes !les composantes connexes !
• Sur une composante connexe, nous allons calculer :Sur une composante connexe, nous allons calculer :
– les plus courts chemins ! les plus courts chemins !
• Nous rajoutons une pondération strictement positive Nous rajoutons une pondération strictement positive et nous allons calculer :et nous allons calculer :
– les chemins les plus légers ! les chemins les plus légers !
21 février 2006 Cours de graphes 2 - Intranet 6
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La notion de distance est donné par le nombre La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins !d’arêtes qu’il faut traverser au moins !
21 février 2006 Cours de graphes 2 - Intranet 7
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La notion de distance est donné par le nombre La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins !d’arêtes qu’il faut traverser au moins !
• L’algorithme de la « vague » :L’algorithme de la « vague » :
– Nous choisissons un sommet « u » sec et le mouillons, Nous choisissons un sommet « u » sec et le mouillons,
21 février 2006 Cours de graphes 2 - Intranet 8
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La notion de distance est donné par le nombre La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins !d’arêtes qu’il faut traverser au moins !
• L’algorithme de la « vague » :L’algorithme de la « vague » :
– Nous choisissons un sommet « u » sec et le mouillons, Nous choisissons un sommet « u » sec et le mouillons, – à l’étape 1, nous mouillons ses voisins,à l’étape 1, nous mouillons ses voisins,
21 février 2006 Cours de graphes 2 - Intranet 9
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La notion de distance est donné par le nombre La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins !d’arêtes qu’il faut traverser au moins !
• L’algorithme de la « vague » :L’algorithme de la « vague » :
– Nous choisissons un sommet « u » sec et le mouillons, Nous choisissons un sommet « u » sec et le mouillons, – à l’étape 1, nous mouillons ses voisins,à l’étape 1, nous mouillons ses voisins,– à l’étape 2, nous mouillons les voisins des voisins , . . . à l’étape 2, nous mouillons les voisins des voisins , . . .
21 février 2006 Cours de graphes 2 - Intranet 10
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La notion de distance est donné par le nombre La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins !d’arêtes qu’il faut traverser au moins !
• L’algorithme de la « vague » :L’algorithme de la « vague » :
– Nous choisissons un sommet « u » sec et le mouillons, Nous choisissons un sommet « u » sec et le mouillons, – à l’étape 1, nous mouillons ses voisins,à l’étape 1, nous mouillons ses voisins,– à l’étape 2, nous mouillons les voisins des voisins , . . . à l’étape 2, nous mouillons les voisins des voisins , . . .
21 février 2006 Cours de graphes 2 - Intranet 11
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La notion de distance est donné par le nombre d’arêtes La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins !qu’il faut traverser au moins !
• L’algorithme de la « vague » :L’algorithme de la « vague » :
– Nous choisissons un sommet « u » sec et le mouillons, Nous choisissons un sommet « u » sec et le mouillons, – à l’étape 1, nous mouillons ses voisins,à l’étape 1, nous mouillons ses voisins,– à l’étape 2, nous mouillons les voisins des voisins , . . . à l’étape 2, nous mouillons les voisins des voisins , . . .
• En temps En temps ( | E | ) = O ( | E | ) = O( | V |^2 ) , nous connaissons les ( | V |^2 ) , nous connaissons les plus courts chemins du sommet « u » vers les autres !plus courts chemins du sommet « u » vers les autres !
21 février 2006 Cours de graphes 2 - Intranet 12
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 13
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
Etape 0 Etape 0 -- étape 1 étape 1 -- étape 2 étape 2 -- étape 3 étape 3
21 février 2006 Cours de graphes 2 - Intranet 14
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
uu
Etape 0Etape 0 -- étape 1 étape 1 -- étape 2 étape 2 -- étape 3 étape 3
21 février 2006 Cours de graphes 2 - Intranet 15
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
uu
Etape 0Etape 0 -- étape 1étape 1 -- étape 2 étape 2 -- étape 3 étape 3
21 février 2006 Cours de graphes 2 - Intranet 16
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
uu
Etape 0Etape 0 -- étape 1étape 1 -- étape 2étape 2 -- étape 3 étape 3
21 février 2006 Cours de graphes 2 - Intranet 17
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
uu
Etape 0Etape 0 -- étape 1étape 1 -- étape 2étape 2 -- étape 3 étape 3
Touché une seconde fois !Touché une seconde fois !
21 février 2006 Cours de graphes 2 - Intranet 18
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
uu
Etape 0Etape 0 -- étape 1étape 1 -- étape 2étape 2 -- étape 3 étape 3
Touché une seconde fois !Touché une seconde fois !
Touché deux fois !Touché deux fois !
21 février 2006 Cours de graphes 2 - Intranet 19
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
uu
Etape 0Etape 0 -- étape 1étape 1 -- étape 2étape 2 -- étape 3étape 3
21 février 2006 Cours de graphes 2 - Intranet 20
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La connaissance de d ( u , La connaissance de d ( u , vv ) et d ( u , ) et d ( u , ww ) ne permet ) ne permet pas de dire grand-chose sur d ( pas de dire grand-chose sur d ( vv , , ww ) ! ) !
21 février 2006 Cours de graphes 2 - Intranet 21
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La connaissance de d ( u , La connaissance de d ( u , vv ) et d ( u , ) et d ( u , ww ) ne permet ) ne permet pas de dire grand-chose sur d ( pas de dire grand-chose sur d ( vv , , ww ) ! ) !
uuvv ww
21 février 2006 Cours de graphes 2 - Intranet 22
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La connaissance de d ( u , La connaissance de d ( u , vv ) et d ( u , ) et d ( u , ww ) ne permet ) ne permet pas de dire grand-chose sur d ( pas de dire grand-chose sur d ( vv , , ww ) ! ) !
uuvv ww
uu
vv
ww
21 février 2006 Cours de graphes 2 - Intranet 23
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La connaissance de d ( u , La connaissance de d ( u , vv ) et d ( u , ) et d ( u , ww ) ne permet ) ne permet pas de dire grand-chose sur d ( pas de dire grand-chose sur d ( vv , , ww ) ! ) !
• Il faut répéter la vague depuisIl faut répéter la vague depuis chaque sommet « u » du graphe !chaque sommet « u » du graphe !
uuvv ww
uu
vv
ww
21 février 2006 Cours de graphes 2 - Intranet 24
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La connaissance de d ( u , La connaissance de d ( u , vv ) et d ( u , ) et d ( u , ww ) ne permet pas ) ne permet pas de dire grand-chose sur d ( de dire grand-chose sur d ( vv , , ww ) ! ) !
• Il faut répéter la vague depuisIl faut répéter la vague depuis chaque sommet « u » du graphe !chaque sommet « u » du graphe !
• En temps En temps ( | V | * | E | ) = O ( | V | * | E | ) = O( | V |^3 ) , nous ( | V |^3 ) , nous connaissons les plus courts chemins de tout sommet à tout connaissons les plus courts chemins de tout sommet à tout sommet !sommet !
uuvv ww
uu
vv
ww
21 février 2006 Cours de graphes 2 - Intranet 25
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
ConnexitéConnexité
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | E | ) =( | E | ) = O ( | V |^2 )O ( | V |^2 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
21 février 2006 Cours de graphes 2 - Intranet 26
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La multiplication de matrices :La multiplication de matrices :
21 février 2006 Cours de graphes 2 - Intranet 27
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La multiplication de matrices :La multiplication de matrices :
– Nous prenons une matrice avec des « 0 » sur la Nous prenons une matrice avec des « 0 » sur la diagonale,diagonale,
– des « 1 » lorsque l’arête existe et des « des « 1 » lorsque l’arête existe et des « » sinon » sinon
21 février 2006 Cours de graphes 2 - Intranet 28
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La multiplication de matrices :La multiplication de matrices :
– Nous prenons une matrice avec des « 0 » sur la Nous prenons une matrice avec des « 0 » sur la diagonale,diagonale,
– des « 1 » lorsque l’arête existe et des « des « 1 » lorsque l’arête existe et des « » sinon » sinon
• Nous effectuons le calcul suivant : Nous effectuons le calcul suivant :
M * M’ ( i , j ) = M * M’ ( i , j ) = minmin M ( i , k ) + M’ ( k , j ) M ( i , k ) + M’ ( k , j )kk
21 février 2006 Cours de graphes 2 - Intranet 29
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La multiplication de matrices :La multiplication de matrices :
– Nous prenons une matrice avec des « 0 » sur la Nous prenons une matrice avec des « 0 » sur la diagonale,diagonale,
– des « 1 » lorsque l’arête existe et des « des « 1 » lorsque l’arête existe et des « » sinon » sinon
• Nous effectuons le calcul suivant : Nous effectuons le calcul suivant :
M * M’ ( i , j ) = M * M’ ( i , j ) = minmin M ( i , k ) + M’ ( k , j ) M ( i , k ) + M’ ( k , j )
• Nous calculons : M Nous calculons : M --> M^2 > M^2 --> M^4 > M^4 --> . . . > . . .
kk
21 février 2006 Cours de graphes 2 - Intranet 30
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La multiplication de matrices :La multiplication de matrices :
– Nous prenons une matrice avec des « 0 » sur la diagonale,Nous prenons une matrice avec des « 0 » sur la diagonale,– des « 1 » lorsque l’arête existe et des « des « 1 » lorsque l’arête existe et des « » sinon » sinon
• Nous effectuons le calcul suivant : Nous effectuons le calcul suivant :
M * M’ ( i , j ) = M * M’ ( i , j ) = minmin M ( i , k ) + M’ ( k , j ) M ( i , k ) + M’ ( k , j )
• Nous calculons : M Nous calculons : M --> M^2 > M^2 --> M^4 > M^4 --> . . . > . . .
• Propriété : M^( 2 * i ) = M^i * M^i contient tous les plus 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 courts chemins de longueur au plus 2 * i , c’est-à-dire qu’elle contient des « +contient des « + » et des valeurs dans { 0 , . . . , 2 * i } . » et des valeurs dans { 0 , . . . , 2 * i } .
kk
21 février 2006 Cours de graphes 2 - Intranet 31
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• La multiplication de matrices :La multiplication de matrices :
– Nous prenons une matrice avec des « 0 » sur la diagonale,Nous prenons une matrice avec des « 0 » sur la diagonale,– des « 1 » lorsque l’arête existe et des « des « 1 » lorsque l’arête existe et des « » sinon » sinon
• Nous effectuons le calcul suivant : Nous effectuons le calcul suivant :
M * M’ ( i , j ) = M * M’ ( i , j ) = minmin M ( i , k ) + M’ ( k , j ) M ( i , k ) + M’ ( k , j )
• Nous calculons : M Nous calculons : M --> M^2 > M^2 --> M^4 > M^4 --> . . . > . . .
• Propriété : M^( 2 * i ) = M^i * M^i contient tous les plus courts 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 chemins de longueur au plus 2 * i , c’est-à-dire qu’elle contient des « +« + » et des valeurs dans { 0 , . . . , 2 * i } . » et des valeurs dans { 0 , . . . , 2 * i } .
• Il suffit de calculer M^k avec k >= | V |Il suffit de calculer M^k avec k >= | V |--1 à l’aide de 1 à l’aide de O O ( log( | V | ) ) élévations au carré !( log( | V | ) ) élévations au carré !
kk
21 février 2006 Cours de graphes 2 - Intranet 32
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• Preuve de la propriété :Preuve de la propriété :
– La matrice M = M^1 contient tou(te)s les La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur (longueurs des) plus courts chemins de longueur au plus 1 .au plus 1 .
21 février 2006 Cours de graphes 2 - Intranet 33
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• Preuve de la propriété :Preuve de la propriété :
– La matrice M = M^1 contient tou(te)s les La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur (longueurs des) plus courts chemins de longueur au plus 1 .au plus 1 .
– Hypothèse d’induction : M^i contient tous les . . .Hypothèse d’induction : M^i contient tous les . . .
21 février 2006 Cours de graphes 2 - Intranet 34
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• Preuve de la propriété :Preuve de la propriété :
– La matrice M = M^1 contient tou(te)s les La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur (longueurs des) plus courts chemins de longueur au plus 1 .au plus 1 .
– Hypothèse d’induction : M^i contient tous les . . .Hypothèse d’induction : M^i contient tous les . . .
M^( 2 * i ) ( u , v ) <> +M^( 2 * i ) ( u , v ) <> +
21 février 2006 Cours de graphes 2 - Intranet 35
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• Preuve de la propriété :Preuve de la propriété :
– La matrice M = M^1 contient tou(te)s les La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur (longueurs des) plus courts chemins de longueur au plus 1 .au plus 1 .
– Hypothèse d’induction : M^i contient tous les . . .Hypothèse d’induction : M^i contient tous les . . .
M^( 2 * i ) ( u , v ) <> +M^( 2 * i ) ( u , v ) <> + min_k M^i ( u , k ) + M^i ( k , v ) <> +min_k M^i ( u , k ) + M^i ( k , v ) <> +
21 février 2006 Cours de graphes 2 - Intranet 36
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• Preuve de la propriété :Preuve de la propriété :
– La matrice M = M^1 contient tou(te)s les La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au (longueurs des) plus courts chemins de longueur au plus 1 .plus 1 .
– Hypothèse d’induction : M^i contient tous les . . .Hypothèse d’induction : M^i contient tous les . . .
M^( 2 * i ) ( u , v ) <> +M^( 2 * i ) ( u , v ) <> + min_k M^i ( u , k ) + M^i ( k , v ) <> +min_k M^i ( u , k ) + M^i ( k , v ) <> + w tel que M^i ( u , w ) + M^i ( w , v ) <> +w tel que M^i ( u , w ) + M^i ( w , v ) <> +
et deet de valeur minimale.valeur minimale.
21 février 2006 Cours de graphes 2 - Intranet 37
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• Preuve de la propriété :Preuve de la propriété :
– La matrice M = M^1 contient tou(te)s les (longueurs La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 .des) plus courts chemins de longueur au plus 1 .
– Hypothèse d’induction : M^i contient tous les . . .Hypothèse d’induction : M^i contient tous les . . .
M^( 2 * i ) ( u , v ) <> +M^( 2 * i ) ( u , v ) <> + min_k M^i ( u , k ) + M^i ( k , v ) <> +min_k M^i ( u , k ) + M^i ( k , v ) <> + w tel que M^i ( u , w ) + M^i ( w , v ) <> +w tel que M^i ( u , w ) + M^i ( w , v ) <> + et et
dede valeur minimale.valeur minimale. M^i ( u , w ) <> +M^i ( u , w ) <> + et M^i ( w , v ) <> + et M^i ( w , v ) <> +
21 février 2006 Cours de graphes 2 - Intranet 38
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• Preuve de la propriété :Preuve de la propriété :
– La matrice M = M^1 contient tou(te)s les (longueurs des) La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 .plus courts chemins de longueur au plus 1 .
– Hypothèse d’induction : M^i contient tous les . . .Hypothèse d’induction : M^i contient tous les . . .
M^( 2 * i ) ( u , v ) <> +M^( 2 * i ) ( u , v ) <> + min_k M^i ( u , k ) + M^i ( k , v ) <> +min_k M^i ( u , k ) + M^i ( k , v ) <> + w tel que M^i ( u , w ) + M^i ( w , v ) <> +w tel que M^i ( u , w ) + M^i ( w , v ) <> + et de et de valeur minimale.valeur minimale. M^i ( u , w ) <> +M^i ( u , w ) <> + et M^i ( w , v ) <> + et M^i ( w , v ) <> + Les plus courts chemins de ( u ; w ) et de ( w ; v ) sontLes plus courts chemins de ( u ; w ) et de ( w ; v ) sont de longueur au plus i.de longueur au plus i.
21 février 2006 Cours de graphes 2 - Intranet 39
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• Preuve de la propriété :Preuve de la propriété :
– La matrice M = M^1 contient tou(te)s les (longueurs des) plus La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 .courts chemins de longueur au plus 1 .
– Hypothèse d’induction : M^i contient tous les . . .Hypothèse d’induction : M^i contient tous les . . .
M^( 2 * i ) ( u , v ) <> +M^( 2 * i ) ( u , v ) <> + min_k M^i ( u , k ) + M^i ( k , v ) <> +min_k M^i ( u , k ) + M^i ( k , v ) <> + w tel que M^i ( u , w ) + M^i ( w , v ) <> +w tel que M^i ( u , w ) + M^i ( w , v ) <> + et de et de valeur minimale.valeur minimale. M^i ( u , w ) <> +M^i ( u , w ) <> + et M^i ( w , v ) <> + et M^i ( w , v ) <> + Les plus courts chemins de ( u ; w ) et de ( w ; v ) sontLes plus courts chemins de ( u ; w ) et de ( w ; v ) sont de longueur au plus i.de longueur au plus i. Le plus court chemin de « u » vers « v » est deLe plus court chemin de « u » vers « v » est de longueur au plus 2 * i et c’est ( u ; w ; v ) .longueur au plus 2 * i et c’est ( u ; w ; v ) .
21 février 2006 Cours de graphes 2 - Intranet 40
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• Preuve de la propriété :Preuve de la propriété :
– La matrice M = M^1 contient tou(te)s les (longueurs des) plus La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 .courts chemins de longueur au plus 1 .
– Hypothèse d’induction : M^i contient tous les . . .Hypothèse d’induction : M^i contient tous les . . .
M^( 2 * i ) ( u , v ) <> +M^( 2 * i ) ( u , v ) <> + min_k M^i ( u , k ) + M^i ( k , v ) <> +min_k M^i ( u , k ) + M^i ( k , v ) <> + ww tel que M^i ( u , w ) + M^i ( w , v ) <> + tel que M^i ( u , w ) + M^i ( w , v ) <> + et de et de valeur minimale.valeur minimale. M^i ( u , w ) <> +M^i ( u , w ) <> + et M^i ( w , v ) <> + et M^i ( w , v ) <> + Les plus courts chemins de ( u ; w ) et de ( w ; v ) sontLes plus courts chemins de ( u ; w ) et de ( w ; v ) sont de longueur au plus i.de longueur au plus i. Le plus court chemin de « u » vers « v » est deLe plus court chemin de « u » vers « v » est de longueur au plus 2 * i et c’est longueur au plus 2 * i et c’est ( u ; w ; v )( u ; w ; v ) . .
21 février 2006 Cours de graphes 2 - Intranet 41
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
ConnexitéConnexité
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | E | ) =( | E | ) = O ( | V |^2 )O ( | V |^2 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
21 février 2006 Cours de graphes 2 - Intranet 42
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• M est la matrice d’adjacence avec des « 0 » sur la M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « diagonale, des « 1 » lorsque l’arête existe et des « » » sinonsinon
(0)(0)
21 février 2006 Cours de graphes 2 - Intranet 43
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• M est la matrice d’adjacence avec des « 0 » sur la M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « diagonale, des « 1 » lorsque l’arête existe et des « » » sinonsinon
• M de Floyd-Warshall contient par hypothèse les M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , . . . , k-1 } .intermédiaires dans l’ensemble { 0 , . . . , k-1 } .
(0)(0)
(k-1)(k-1)
21 février 2006 Cours de graphes 2 - Intranet 44
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• M est la matrice d’adjacence avec des « 0 » sur la M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « diagonale, des « 1 » lorsque l’arête existe et des « » » sinonsinon
• M de Floyd-Warshall contient par hypothèse les M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , . . . , k-1 } .intermédiaires dans l’ensemble { 0 , . . . , k-1 } .
M ( u , v ) = M ( u , v ) = minmin ( , ( ,
))
(0)(0)
(k)(k)
(k-1)(k-1)
21 février 2006 Cours de graphes 2 - Intranet 45
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• M est la matrice d’adjacence avec des « 0 » sur la M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « diagonale, des « 1 » lorsque l’arête existe et des « » » sinonsinon
• M de Floyd-Warshall contient par hypothèse les M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , . . . , k-1 } .intermédiaires dans l’ensemble { 0 , . . . , k-1 } .
M ( u , v ) = M ( u , v ) = minmin ( , ( ,
))
(0)(0)
M ( u , v )M ( u , v )(k(k--1)1)(k)(k)
(k-1)(k-1)
21 février 2006 Cours de graphes 2 - Intranet 46
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• M est la matrice d’adjacence avec des « 0 » sur la M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « diagonale, des « 1 » lorsque l’arête existe et des « » » sinonsinon
• M de Floyd-Warshall contient par hypothèse les M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , . . . , k-1 } .intermédiaires dans l’ensemble { 0 , . . . , k-1 } .
M ( u , v ) = M ( u , v ) = minmin ( , ( ,
))
(0)(0)
M ( u , k ) + M ( k , v )M ( u , k ) + M ( k , v )(k(k--1)1)
M ( u , v )M ( u , v )(k(k--1)1)
(k(k--1)1)
(k)(k)
(k-1)(k-1)
21 février 2006 Cours de graphes 2 - Intranet 47
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• M est la matrice d’adjacence avec des « 0 » sur la M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « diagonale, des « 1 » lorsque l’arête existe et des « » sinon » sinon
• M de Floyd-Warshall contient par hypothèse les plus M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , . . . , k-1 } .dans l’ensemble { 0 , . . . , k-1 } .
M ( u , v ) = M ( u , v ) = minmin ( , ( ,
))
• Le plus court chemin avec des sommets dans { 1 , . . . , k } :Le plus court chemin avec des sommets dans { 1 , . . . , k } :
– peut, soit, ne pas peut, soit, ne pas passer par « k »,passer par « k »,
(0)(0)
M ( u , k ) + M ( k , v )M ( u , k ) + M ( k , v )(k(k--1)1)
M ( u , v )M ( u , v )(k(k--1)1)
(k(k--1)1)
(k)(k)
(k-1)(k-1)
21 février 2006 Cours de graphes 2 - Intranet 48
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• M est la matrice d’adjacence avec des « 0 » sur la diagonale, M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « des « 1 » lorsque l’arête existe et des « » sinon » sinon
• M de Floyd-Warshall contient par hypothèse les plus M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , . . . , k-1 } .dans l’ensemble { 0 , . . . , k-1 } .
M ( u , v ) = M ( u , v ) = minmin ( , ( ,
))
• Le plus court chemin avec des sommets dans { 1 , . . . , k } :Le plus court chemin avec des sommets dans { 1 , . . . , k } :
– peut, soit, ne pas peut, soit, ne pas passer par « k »,passer par « k »,– peut, soit, passer par « k » !peut, soit, passer par « k » !
(0)(0)
M ( u , k ) + M ( k , v )M ( u , k ) + M ( k , v )(k(k--1)1)
M ( u , v )M ( u , v )(k(k--1)1)
(k(k--1)1)
(k)(k)
(k-1)(k-1)
21 février 2006 Cours de graphes 2 - Intranet 49
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
• M est la matrice d’adjacence avec des « 0 » sur la diagonale, M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « des « 1 » lorsque l’arête existe et des « » sinon » sinon
• M de Floyd-Warshall contient par hypothèse les plus courts M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , . . . , k-1 } .l’ensemble { 0 , . . . , k-1 } .
M ( u , v ) = M ( u , v ) = minmin ( , ( ,
))
• Le plus court chemin avec des sommets dans { 1 , . . . , k } :Le plus court chemin avec des sommets dans { 1 , . . . , k } :
– peut, soit, ne pas peut, soit, ne pas passer par « k »,passer par « k »,– peut, soit, passer par « k » !peut, soit, passer par « k » !
• M est la matrice recherchée !M est la matrice recherchée !
(0)(0)
M ( u , k ) + M ( k , v )M ( u , k ) + M ( k , v )(k(k--1)1)
M ( u , v )M ( u , v )(k(k--1)1)
(k(k--1)1)
(n)(n)
(k)(k)
(k-1)(k-1)
21 février 2006 Cours de graphes 2 - Intranet 50
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
ConnexitéConnexité
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | E | ) =( | E | ) = O ( | V |^2 )O ( | V |^2 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
21 février 2006 Cours de graphes 2 - Intranet 51
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 52
• Sur un graphe non orienté, nous allons calculer :Sur un graphe non orienté, nous allons calculer :
– les composantes connexes !les composantes connexes !
• Sur une composante connexe, nous allons calculer :Sur une composante connexe, nous allons calculer :
– les plus courts chemins ! les plus courts chemins !
• Nous rajoutons une pondération strictement positive Nous rajoutons une pondération strictement positive et nous allons calculer :et nous allons calculer :
– les chemins les plus légers ! les chemins les plus légers !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 53
• Sur un graphe non orienté, nous allons calculer :Sur un graphe non orienté, nous allons calculer :
– les composantes connexes !les composantes connexes !
• Sur une composante connexe, nous allons calculer :Sur une composante connexe, nous allons calculer :
– les plus courts chemins ! les plus courts chemins !
• Nous rajoutons une pondération strictement positive Nous rajoutons une pondération strictement positive et nous allons calculer :et nous allons calculer :
– les chemins les plus légers ! les chemins les plus légers !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 54
• Nous rajoutons une pondération strictement Nous rajoutons une pondération strictement positive et nous allons calculer :positive et nous allons calculer :
– les chemins les plus légers ! les chemins les plus légers !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 55
• Nous rajoutons une pondération strictement Nous rajoutons une pondération strictement positive et nous allons calculer :positive et nous allons calculer :
– les chemins les plus légers ! les chemins les plus légers !
• En présence de poids négatifs, le problème pourrait En présence de poids négatifs, le problème pourrait ne plus avoir de sens, car il pourrait y avoir des ne plus avoir de sens, car il pourrait y avoir des cycles de poids négatif.cycles de poids négatif.
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 56
• Nous rajoutons une pondération strictement Nous rajoutons une pondération strictement positive et nous allons calculer :positive et nous allons calculer :
– les chemins les plus légers ! les chemins les plus légers !
• En présence de poids négatifs, le problème pourrait En présence de poids négatifs, le problème pourrait ne plus avoir de sens, car il pourrait y avoir des ne plus avoir de sens, car il pourrait y avoir des cycles de poids négatif.cycles de poids négatif.
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
55
55
55
--1515
1010
21 février 2006 Cours de graphes 2 - Intranet 57
• Nous rajoutons une pondération strictement Nous rajoutons une pondération strictement positive et nous allons calculer :positive et nous allons calculer :
– les chemins les plus légers ! les chemins les plus légers !
• En présence de poids négatifs, le problème pourrait En présence de poids négatifs, le problème pourrait ne plus avoir de sens, car il pourrait y avoir des ne plus avoir de sens, car il pourrait y avoir des cycles de poids négatif.cycles de poids négatif.
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
55
55
55
--1515
1010
Cycle de poids négatif !Cycle de poids négatif !
21 février 2006 Cours de graphes 2 - Intranet 58
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des chemins les plus légers :Le problème des chemins les plus légers :
– L’inégalité triangulaire peut ne pas être L’inégalité triangulaire peut ne pas être respectée !respectée !
21 février 2006 Cours de graphes 2 - Intranet 59
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des chemins les plus légers :Le problème des chemins les plus légers :
– L’inégalité triangulaire peut ne pas être L’inégalité triangulaire peut ne pas être respectée !respectée !
• L’algorithme de la vague (unique) ne marche plus ! ! !L’algorithme de la vague (unique) ne marche plus ! ! !
21 février 2006 Cours de graphes 2 - Intranet 60
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des chemins les plus légers :Le problème des chemins les plus légers :
– L’inégalité triangulaire peut ne pas être L’inégalité triangulaire peut ne pas être respectée !respectée !
• L’algorithme de la vague (unique) ne marche plus ! ! !L’algorithme de la vague (unique) ne marche plus ! ! !
3030 1010 55
55
1010
88
Etape 0 Etape 0 -- étape 1 étape 1 -- étape 2 étape 2 -- étape 3 étape 3
21 février 2006 Cours de graphes 2 - Intranet 61
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des chemins les plus légers :Le problème des chemins les plus légers :
– L’inégalité triangulaire peut ne pas être L’inégalité triangulaire peut ne pas être respectée !respectée !
• L’algorithme de la vague (unique) ne marche plus ! ! !L’algorithme de la vague (unique) ne marche plus ! ! !
001010 55
55
1010
88
Etape 0Etape 0 -- étape 1 étape 1 -- étape 2 étape 2 -- étape 3 étape 3
3030
21 février 2006 Cours de graphes 2 - Intranet 62
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des chemins les plus légers :Le problème des chemins les plus légers :
– L’inégalité triangulaire peut ne pas être L’inégalité triangulaire peut ne pas être respectée !respectée !
• L’algorithme de la vague (unique) ne marche plus ! ! !L’algorithme de la vague (unique) ne marche plus ! ! !
003030 1010
303055
5555
1010
88
Etape 0Etape 0 -- étape 1étape 1 -- étape 2 étape 2 -- étape 3 étape 3
21 février 2006 Cours de graphes 2 - Intranet 63
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des chemins les plus légers :Le problème des chemins les plus légers :
– L’inégalité triangulaire peut ne pas être L’inégalité triangulaire peut ne pas être respectée !respectée !
• L’algorithme de la vague (unique) ne marche plus ! ! !L’algorithme de la vague (unique) ne marche plus ! ! !
003030 1010
3030 404055
5555
10101515
88
Etape 0Etape 0 -- étape 1étape 1 -- étape 2étape 2 -- étape 3 étape 3
21 février 2006 Cours de graphes 2 - Intranet 64
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des chemins les plus légers :Le problème des chemins les plus légers :
– L’inégalité triangulaire peut ne pas être L’inégalité triangulaire peut ne pas être respectée !respectée !
• L’algorithme de la vague (unique) ne marche plus ! ! !L’algorithme de la vague (unique) ne marche plus ! ! !
003030 1010
3030 404055
5555
10101515
88
Etape 0Etape 0 -- étape 1étape 1 -- étape 2étape 2 -- étape 3 étape 3
Une vague qui se brise.Une vague qui se brise.Nous l’ignorons ! ! !Nous l’ignorons ! ! !
21 février 2006 Cours de graphes 2 - Intranet 65
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des chemins les plus légers :Le problème des chemins les plus légers :
– L’inégalité triangulaire peut ne pas être L’inégalité triangulaire peut ne pas être respectée !respectée !
• L’algorithme de la vague (unique) ne marche plus ! ! !L’algorithme de la vague (unique) ne marche plus ! ! !
003030 1010
3030 404055
5555
10101515
88
Etape 0Etape 0 -- étape 1étape 1 -- étape 2étape 2 -- étape 3 étape 3
Elle n’existe plus !Elle n’existe plus !
21 février 2006 Cours de graphes 2 - Intranet 66
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des chemins les plus légers :Le problème des chemins les plus légers :
– L’inégalité triangulaire peut ne pas être L’inégalité triangulaire peut ne pas être respectée !respectée !
• L’algorithme de la vague (unique) ne marche plus ! ! !L’algorithme de la vague (unique) ne marche plus ! ! !
003030 1010
3030 404055
4545
5555
10101515
88
Etape 0Etape 0 -- étape 1étape 1 -- étape 2étape 2 -- étape 3étape 3
2323
21 février 2006 Cours de graphes 2 - Intranet 67
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des chemins les plus légers :Le problème des chemins les plus légers :
– L’inégalité triangulaire peut ne pas être L’inégalité triangulaire peut ne pas être respectée !respectée !
• L’algorithme de la vague (unique) ne marche plus ! ! !L’algorithme de la vague (unique) ne marche plus ! ! !
003030 1010
3030 404055
4545
5555
10101515
88
Etape 0Etape 0 -- étape 1étape 1 -- étape 2étape 2 -- étape 3étape 3
2323
21 février 2006 Cours de graphes 2 - Intranet 68
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des 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’inégalité triangulaire peut ne pas être respectée !
• L’algorithme de la vague (unique) ne marche plus ! ! !L’algorithme de la vague (unique) ne marche plus ! ! !
• Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . .Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . .
003030 1010
3030 404055
4545
5555
10101515
88
Etape 0Etape 0 -- étape 1étape 1 -- étape 2étape 2 -- étape 3étape 3
2323
21 février 2006 Cours de graphes 2 - Intranet 69
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des 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’inégalité triangulaire peut ne pas être respectée !
• L’algorithme de la vague (unique) ne marche plus ! ! !L’algorithme de la vague (unique) ne marche plus ! ! !
• Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . .Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . .
• Quand est-ce que c’est fini ? ? ?Quand est-ce que c’est fini ? ? ?
003030 1010
3030 404055
4545
5555
10101515
88
Etape 0Etape 0 -- étape 1étape 1 -- étape 2étape 2 -- étape 3étape 3
2323
21 février 2006 Cours de graphes 2 - Intranet 70
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le problème des 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’inégalité triangulaire peut ne pas être respectée !
• L’algorithme de la vague (unique) ne marche plus ! ! !L’algorithme de la vague (unique) ne marche plus ! ! !
• Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . .Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . .
• Quand est-ce que c’est fini ? ? ?Quand est-ce que c’est fini ? ? ?
003030 1010
3030 404055
4545
5555
10101515
88
Etape 0Etape 0 -- étape 1étape 1 -- étape 2étape 2 -- étape 3étape 3
2323
21 février 2006 Cours de graphes 2 - Intranet 71
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Un cas pathologique :Un cas pathologique :
XX2020
88 55
2020
8855 55
2020
88
. . .. . .
21 février 2006 Cours de graphes 2 - Intranet 72
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Un cas pathologique :Un cas pathologique :
XX2020
88 55
2020
8855 55
2020
88
. . .. . .YY
2 vagues2 vagues
21 février 2006 Cours de graphes 2 - Intranet 73
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Un cas pathologique :Un cas pathologique :
XX2020
88 55
2020
8855 55
2020
88
. . .. . .YY
2 vagues2 vagues
TT
4 vagues4 vaguesdont 2 simultanéesdont 2 simultanées
21 février 2006 Cours de graphes 2 - Intranet 74
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Un cas pathologique :Un cas pathologique :
2020
88 55
2020
8855 55
2020
88
. . .. . .YY
2 vagues2 vagues
TT
4 vagues4 vaguesdont 2 simultanéesdont 2 simultanées
O ( n / 3 )O ( n / 3 )vagues ! ! !vagues ! ! !
XX ZZ
21 février 2006 Cours de graphes 2 - Intranet 75
ConnexitéConnexité
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | E | ) =( | E | ) = O ( | V |^2 )O ( | V |^2 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
N O N !N O N !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 76
ConnexitéConnexité
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | E | ) =( | E | ) = O ( | V |^2 )O ( | V |^2 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
N O N !N O N !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 77
• La multiplication de matrices :La multiplication de matrices :
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 78
• La multiplication de matrices :La multiplication de matrices :
– Nous prenons une matrice avec des « 0 » sur la Nous prenons une matrice avec des « 0 » sur la diagonale,diagonale,
– le poids de l’arête lorsqu’elle existe et « le poids de l’arête lorsqu’elle existe et « » sinon » sinon
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 79
• La multiplication de matrices :La multiplication de matrices :
– Nous prenons une matrice avec des « 0 » sur la Nous prenons une matrice avec des « 0 » sur la diagonale,diagonale,
– le poids de l’arête lorsqu’elle existe et « le poids de l’arête lorsqu’elle existe et « » sinon » sinon
• Nous effectuons le calcul suivant : Nous effectuons le calcul suivant :
M * M’ ( i , j ) = M * M’ ( i , j ) = minmin M ( i , k ) + M’ ( k , j ) M ( i , k ) + M’ ( k , j )kk
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 80
• La multiplication de matrices :La multiplication de matrices :
– Nous prenons une matrice avec des « 0 » sur la Nous prenons une matrice avec des « 0 » sur la diagonale,diagonale,
– le poids de l’arête lorsqu’elle existe et « le poids de l’arête lorsqu’elle existe et « » sinon » sinon
• Nous effectuons le calcul suivant : Nous effectuons le calcul suivant :
M * M’ ( i , j ) = M * M’ ( i , j ) = minmin M ( i , k ) + M’ ( k , j ) M ( i , k ) + M’ ( k , j )
• Nous calculons : M Nous calculons : M --> M^2 > M^2 --> M^4 > M^4 --> . . . > . . .
kk
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 81
• La multiplication de matrices :La multiplication de matrices :
– Nous prenons une matrice avec des « 0 » sur la diagonale,Nous prenons une matrice avec des « 0 » sur la diagonale,– le poids de l’arête lorsqu’elle existe et « le poids de l’arête lorsqu’elle existe et « » sinon » sinon
• Nous effectuons le calcul suivant : Nous effectuons le calcul suivant :
M * M’ ( i , j ) = M * M’ ( i , j ) = minmin M ( i , k ) + M’ ( k , j ) M ( i , k ) + M’ ( k , j )
• Nous calculons : M Nous calculons : M --> M^2 > M^2 --> M^4 > M^4 --> . . . > . . .
• Propriété : M^( 2 * i ) = M^i * M^i contient tous les Propriété : M^( 2 * i ) = M^i * M^i contient tous les chemins les plus légers de longueur au plus 2 * i (nombre chemins les plus légers de longueur au plus 2 * i (nombre d’arêtes).d’arêtes).
kk
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 82
• La multiplication de matrices :La multiplication de matrices :
– Nous prenons une matrice avec des « 0 » sur la diagonale,Nous prenons une matrice avec des « 0 » sur la diagonale,– le poids de l’arête lorsqu’elle existe et « le poids de l’arête lorsqu’elle existe et « » sinon » sinon
• Nous effectuons le calcul suivant : Nous effectuons le calcul suivant :
M * M’ ( i , j ) = M * M’ ( i , j ) = minmin M ( i , k ) + M’ ( k , j ) M ( i , k ) + M’ ( k , j )
• Nous calculons : M Nous calculons : M --> M^2 > M^2 --> M^4 > M^4 --> . . . > . . .
• Propriété : M^( 2 * i ) = M^i * M^i contient tous les chemins 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).les plus légers de longueur au plus 2 * i (nombre d’arêtes).
• Il suffit de calculer M^k avec k >= | V |Il suffit de calculer M^k avec k >= | V |--1 à l’aide de 1 à l’aide de O O ( log( | V | ) ) élévations au carré !( log( | V | ) ) élévations au carré !
kk
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 83
ConnexitéConnexité
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | E | ) =( | E | ) = O ( | V |^2 )O ( | V |^2 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
N O N !N O N ! ( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 84
ConnexitéConnexité
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | E | ) =( | E | ) = O ( | V |^2 )O ( | V |^2 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
N O N !N O N ! ( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
Le même programme !Le même programme !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 85
• M est la matrice d’adjacence avec des « 0 » sur la M est la matrice d’adjacence avec des « 0 » sur la diagonale, diagonale, le poids de l’arête si elle existele poids de l’arête si elle existe et des « et des « » » sinonsinon
(0)(0)
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 86
• M est la matrice d’adjacence avec des « 0 » sur la diagonale, M est la matrice d’adjacence avec des « 0 » sur la diagonale, le le poids de l’arête si elle existepoids de l’arête si elle existe et des « et des « » sinon » sinon
• M de Floyd-Warshall contient par hypothèse les chemins les M de Floyd-Warshall contient par hypothèse les chemins les plus légers construits à l’aide de sommets intermédiaires dans plus légers construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , . . . , k-1 } .l’ensemble { 0 , . . . , k-1 } .
M ( u , v ) = M ( u , v ) = minmin ( , ( ,
))
• Le chemin le plus léger avec des sommets dans { 1 , . . . , k } :Le chemin le plus léger avec des sommets dans { 1 , . . . , k } :
– peut, soit, ne pas peut, soit, ne pas passer par « k »,passer par « k »,– peut, soit, passer par « k » !peut, soit, passer par « k » !
• M est la matrice recherchée !M est la matrice recherchée !
(0)(0)
M ( u , k ) + M ( k , v )M ( u , k ) + M ( k , v )(k(k--1)1)
M ( u , v )M ( u , v )(k(k--1)1)
(k(k--1)1)
(n)(n)
(k)(k)
(k-1)(k-1)
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 87
• M est la matrice d’adjacence avec des « 0 » sur la diagonale, M est la matrice d’adjacence avec des « 0 » sur la diagonale, le le poids de l’arête si elle existepoids de l’arête si elle existe et des « et des « » sinon » sinon
• M de Floyd-Warshall contient par hypothèse les chemins les M de Floyd-Warshall contient par hypothèse les chemins les plus légers construits à l’aide de sommets intermédiaires dans plus légers construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , . . . , k-1 } .l’ensemble { 0 , . . . , k-1 } .
M ( u , v ) = M ( u , v ) = minmin ( , ( ,
))
• Le chemin le plus léger avec des sommets dans { 1 , . . . , k } :Le chemin le plus léger avec des sommets dans { 1 , . . . , k } :
– peut, soit, ne pas peut, soit, ne pas passer par « k »,passer par « k »,– peut, soit, passer par « k » !peut, soit, passer par « k » !
• M est la matrice recherchée !M est la matrice recherchée !
(0)(0)
M ( u , k ) + M ( k , v )M ( u , k ) + M ( k , v )(k(k--1)1)
M ( u , v )M ( u , v )(k(k--1)1)
(k(k--1)1)
(n)(n)
(k)(k)
(k-1)(k-1)
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 88
ConnexitéConnexité
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | E | ) =( | E | ) = O ( | V |^2 )O ( | V |^2 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
N O N !N O N ! ( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) ) ( | V |^3 )( | V |^3 )
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 89
ConnexitéConnexité
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | E | ) =( | E | ) = O ( | V |^2 )O ( | V |^2 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
N O N !N O N ! ( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) ) ( | V |^3 )( | V |^3 )
Le même programme !Le même programme !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 90
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
ConnexitéConnexité
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | E | ) =( | E | ) = O ( | V |^2 )O ( | V |^2 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
N O N !N O N ! ( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) ) ( | V |^3 )( | V |^3 )
21 février 2006 Cours de graphes 2 - Intranet 91
• Et les graphes orientés ? ? ?Et les graphes orientés ? ? ?
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 92
• Et les graphes orientés ? ? ?Et les graphes orientés ? ? ?
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 93
• Et les graphes orientés ? ? ?Et les graphes orientés ? ? ?
à ceci près que la connexité orientée par l’algorithme de la vagueà 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 nécessite de répéter l’algorithme pour chaque sommet
– et introduit une complexité en et introduit une complexité en ( | V | * | E | ) ! ( | V | * | E | ) !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 94
Pour les graphes orientésPour les graphes orientés----------------------------------------------------------------------------------------------------------------------------------
ConnexitéConnexitéen orientéen orienté
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
N O N !N O N ! ( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) ) ( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
21 février 2006 Cours de graphes 2 - Intranet 95
Pour les graphes orientésPour les graphes orientés----------------------------------------------------------------------------------------------------------------------------------
ConnexitéConnexitéen orientéen orienté
Plus courtsPlus courts
Plus légersPlus légers
La vagueLa vague MultiplicationMultiplication Floyd-WarshallFloyd-Warshall
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) )
( | V |^3 )( | V |^3 )
N O N !N O N ! ( | V |^3 *( | V |^3 * log( | V | ) )log( | V | ) ) ( | V |^3 )( | V |^3 )
( | V | * | E | ) =( | V | * | E | ) = O ( | V |^3 )O ( | V |^3 )
21 février 2006 Cours de graphes 2 - Intranet 96
• Deux questions : Deux questions :
• La vague construit en temps O ( | E | ) le plus court La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les chemin d’un sommet « u » quelconque vers tous les autres sommets !autres sommets !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 97
• Deux questions : Deux questions :
• La vague construit en temps O ( | E | ) le plus court La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les chemin d’un sommet « u » quelconque vers tous les autres sommets !autres sommets !
– Pouvons-nous calculer les chemins les plus légers de Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même « u » vers les autres sommets avec la même complexité ?complexité ?
– Oui, c’est l’algorithme de Dijkstra !Oui, c’est l’algorithme de Dijkstra !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 98
• Deux questions : Deux questions :
• La vague construit en temps O ( | E | ) le plus court La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les chemin d’un sommet « u » quelconque vers tous les autres sommets !autres sommets !
– Pouvons-nous calculer les chemins les plus légers de Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même « u » vers les autres sommets avec la même complexité ?complexité ?
– Oui, c’est l’algorithme de Dijkstra !Oui, c’est l’algorithme de Dijkstra !
• Nous avons dû exiger que les poids des arêtes soient Nous avons dû exiger que les poids des arêtes soient positifs ou nuls ! positifs ou nuls !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 99
• Deux questions : Deux questions :
• La vague construit en temps O ( | E | ) le plus court chemin d’un La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets !sommet « u » quelconque vers tous les autres sommets !
– Pouvons-nous calculer les chemins les plus légers de « u » Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même complexité ?vers les autres sommets avec la même complexité ?
– Oui, c’est l’algorithme de Dijkstra !Oui, c’est l’algorithme de Dijkstra !
• Nous avons dû exiger que les poids des arêtes soient positifs ou Nous avons dû exiger que les poids des arêtes soient positifs ou nuls ! nuls !
– Pouvons-nous lever cette limitation, quitte à devoir détecter Pouvons-nous lever cette limitation, quitte à devoir détecter des cycles de poids négatifs ? des cycles de poids négatifs ?
– Oui, c’est l’algorithme de Bellmann-Ford !Oui, c’est l’algorithme de Bellmann-Ford !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 100
• Deux questions : Deux questions :
• La vague construit en temps O ( | E | ) le plus court chemin d’un La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets !sommet « u » quelconque vers tous les autres sommets !
– Pouvons-nous calculer les chemins les plus légers de « u » Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même complexité ?vers les autres sommets avec la même complexité ?
– Oui, c’est l’algorithme de Dijkstra !Oui, c’est l’algorithme de Dijkstra !
• Nous avons dû exiger que les poids des arêtes soient positifs ou Nous avons dû exiger que les poids des arêtes soient positifs ou nuls ! nuls !
– Pouvons-nous lever cette limitation, quitte à devoir détecter Pouvons-nous lever cette limitation, quitte à devoir détecter des cycles de poids négatifs ? des cycles de poids négatifs ?
– Oui, c’est l’algorithme de Bellmann-Ford !Oui, c’est l’algorithme de Bellmann-Ford !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 101
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
‘‘
21 février 2006 Cours de graphes 2 - Intranet 102
• L’algorithme de Dijkstra calcule les chemins les plus L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets !légers de « s » vers tous les autres sommets !
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 103
• L’algorithme de Dijkstra calcule les chemins les plus L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets !légers de « s » vers tous les autres sommets !
• C’est un algorithme de « relaxation », qui est un C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle.schéma classique en recherche opérationnelle.
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 104
• L’algorithme de Dijkstra calcule les chemins les plus L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets !légers de « s » vers tous les autres sommets !
• C’est un algorithme de « relaxation », qui est un C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle.schéma classique en recherche opérationnelle.
• Pour chaque sommet « u » nous connaissons « D ( u ) » Pour chaque sommet « u » nous connaissons « D ( u ) » quiqui
– est un majorant du chemin le plus léger,est un majorant du chemin le plus léger,
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 105
• L’algorithme de Dijkstra calcule les chemins les plus L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets !légers de « s » vers tous les autres sommets !
• C’est un algorithme de « relaxation », qui est un C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle.schéma classique en recherche opérationnelle.
• Pour chaque sommet « u » nous connaissons « D ( u ) » Pour chaque sommet « u » nous connaissons « D ( u ) » quiqui
– est un majorant du chemin le plus léger,est un majorant du chemin le plus léger,
– qui correspond au poids d’un chemin de « s » vers « u »,qui correspond au poids d’un chemin de « s » vers « u »,
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 106
• L’algorithme de Dijkstra calcule les chemins les plus L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets !légers de « s » vers tous les autres sommets !
• C’est un algorithme de « relaxation », qui est un C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle.schéma classique en recherche opérationnelle.
• Pour chaque sommet « u » nous connaissons « D ( u ) » Pour chaque sommet « u » nous connaissons « D ( u ) » quiqui
– est un majorant du chemin le plus léger,est un majorant du chemin le plus léger,
– qui correspond au poids d’un chemin de « s » vers « u »,qui correspond au poids d’un chemin de « s » vers « u »,
– qui vaut initialement « +qui vaut initialement « + » pour tout « u » différent de » pour tout « u » différent de « s »« s »
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 107
• L’algorithme de Dijkstra calcule les chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets !de « s » vers tous les autres sommets !
• C’est un algorithme de « relaxation », qui est un schéma C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle.classique en recherche opérationnelle.
• Pour chaque sommet « u » nous connaissons « D ( u ) » quiPour chaque sommet « u » nous connaissons « D ( u ) » qui
– est un majorant du chemin le plus léger,est un majorant du chemin le plus léger,
– qui correspond au poids d’un chemin de « s » vers « u »,qui correspond au poids d’un chemin de « s » vers « u »,
– qui vaut initialement « +qui vaut initialement « + » pour tout « u » différent de « s » » pour tout « u » différent de « s »
– et qui sera égal au chemin le plus léger à la fin du calcul.et qui sera égal au chemin le plus léger à la fin du calcul.
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 108
• L’algorithme de Dijkstra calcule les chemins les plus légers de L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets !« s » vers tous les autres sommets !
• C’est un algorithme de « relaxation », qui est un schéma classique C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle.en recherche opérationnelle.
• Pour chaque sommet « u » nous connaissons « D ( u ) » quiPour chaque sommet « u » nous connaissons « D ( u ) » qui
– est un majorant du chemin le plus léger,est un majorant du chemin le plus léger,
– qui correspond au poids d’un chemin de « s » vers « u »,qui correspond au poids d’un chemin de « s » vers « u »,
– qui vaut initialement « +qui vaut initialement « + » pour tout « u » différent de « s » » pour tout « u » différent de « s »
– et qui sera égal au chemin le plus léger à la fin du calcul.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 De plus, pour tout « u » nous connaissons « P ( u ) » qui est le sommet qui précède « u » le long du meilleur chemin courant.sommet qui précède « u » le long du meilleur chemin courant.
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 109
• L’opération de base « relax ( x , v ) » demandeL’opération de base « relax ( x , v ) » demande
– si le meilleur chemin actuel ne peut pas être amélioré sisi le meilleur chemin actuel ne peut pas être amélioré si
le sommet « x » devient le prédécesseur de « v » ?le sommet « x » devient le prédécesseur de « v » ?
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 110
• L’opération de base « relax ( x , v ) » demandeL’opération de base « relax ( x , v ) » demande
– si le meilleur chemin actuel ne peut pas être amélioré sisi le meilleur chemin actuel ne peut pas être amélioré si
le sommet « x » devient le prédécesseur de « v » ?le sommet « x » devient le prédécesseur de « v » ?
D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ?D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ?
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
21 février 2006 Cours de graphes 2 - Intranet 111
• L’opération de base « relax ( x , v ) » demandeL’opération de base « relax ( x , v ) » demande
– si le meilleur chemin actuel ne peut pas être amélioré sisi le meilleur chemin actuel ne peut pas être amélioré si
le sommet « x » devient le prédécesseur de « v » ?le sommet « x » devient le prédécesseur de « v » ?
D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ?D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ?
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
NONNON
RIEN !RIEN !
21 février 2006 Cours de graphes 2 - Intranet 112
• L’opération de base « relax ( x , v ) » demandeL’opération de base « relax ( x , v ) » demande
– si le meilleur chemin actuel ne peut pas être amélioré sisi le meilleur chemin actuel ne peut pas être amélioré si
le sommet « x » devient le prédécesseur de « v » ?le sommet « x » devient le prédécesseur de « v » ?
D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ?D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ?
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
OUIOUI
D ( v ) <D ( v ) <-- D ( x ) + M ( x , v ) et P ( v ) < D ( x ) + M ( x , v ) et P ( v ) <-- x x
NONNON
RIEN !RIEN !
21 février 2006 Cours de graphes 2 - Intranet 113
• L’opération de base « relax ( x , v ) » demandeL’opération de base « relax ( x , v ) » demande
– si le meilleur chemin actuel ne peut pas être amélioré sisi le meilleur chemin actuel ne peut pas être amélioré si
le sommet « x » devient le prédécesseur de « v » ?le sommet « x » devient le prédécesseur de « v » ?
D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ?D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ?
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
OUIOUI
D ( v ) <D ( v ) <-- D ( x ) + M ( x , v ) et P ( v ) < D ( x ) + M ( x , v ) et P ( v ) <-- x x
NONNON
RIEN !RIEN !
Donc, D ( v ) décroît et correspond à un chemin du graphe !Donc, D ( v ) décroît et correspond à un chemin du graphe !
21 février 2006 Cours de graphes 2 - Intranet 114
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• L’opération de relaxation « relax ( x , v ) » : 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
Connexité – chemins les plus légersConnexité – 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 <>
{ 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
Connexité – chemins les plus légersConnexité – 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 <>
{ 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 distances !
21 février 2006 Cours de graphes 2 - Intranet 117
Connexité – chemins les plus légersConnexité – 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 <>
{ 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 distances !
Nous initialisons les prédécesseurs !Nous initialisons les prédécesseurs !
21 février 2006 Cours de graphes 2 - Intranet 118
Connexité – chemins les plus légersConnexité – 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 <>
{ 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 distances !
Nous initialisons les prédécesseurs !Nous initialisons les prédécesseurs !
Nous initialisons les sommets à parcourir !Nous initialisons les sommets à parcourir !
21 février 2006 Cours de graphes 2 - Intranet 119
Connexité – chemins les plus légersConnexité – 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 <>
{ 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 distances !
Nous initialisons les prédécesseurs !Nous initialisons les prédécesseurs !
Nous initialisons les sommets à parcourir !Nous initialisons les sommets à parcourir !
Tant qu’il reste un sommet à traiter . . .Tant qu’il reste un sommet à traiter . . .
21 février 2006 Cours de graphes 2 - Intranet 120
Connexité – chemins les plus légersConnexité – 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 <>
{ 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 distances !
Nous initialisons les prédécesseurs !Nous initialisons les prédécesseurs !
Nous initialisons les sommets à parcourir !Nous initialisons les sommets à parcourir !
Tant qu’il reste un sommet à traiter . . .Tant qu’il reste un sommet à traiter . . .
Nous retirons le sommet « u »Nous retirons le sommet « u »dont « D ( u ) » est minimal !dont « D ( u ) » est minimal !
21 février 2006 Cours de graphes 2 - Intranet 121
Connexité – chemins les plus légersConnexité – 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 <>
{ 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 distances !
Nous initialisons les prédécesseurs !Nous initialisons les prédécesseurs !
Nous initialisons les sommets à parcourir !Nous initialisons les sommets à parcourir !
Tant qu’il reste un sommet à traiter . . .Tant qu’il reste un sommet à traiter . . .
Nous retirons le sommet « u »Nous retirons le sommet « u »dont « D ( u ) » est minimal !dont « D ( u ) » est minimal !
Nous relaxons ses voisins quiNous relaxons ses voisins quine sont pas encore définitifs ! ! !ne sont pas encore définitifs ! ! !
21 février 2006 Cours de graphes 2 - Intranet 122
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
ss
aa
bb
cc
2020
101055 88
21 février 2006 Cours de graphes 2 - Intranet 123
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
ss
aa
bb
cc
2020
101055 88
E s a b cE s a b c
D D 0 0
P s ? ? ?P s ? ? ?
21 février 2006 Cours de graphes 2 - Intranet 124
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
ss
aa
bb
cc
2020
101055 88
E E ss a b c a b c
D D 00
P P ss ? ? ? ? ? ?
E <E <-- E \ { s } E \ { s }
//
21 février 2006 Cours de graphes 2 - Intranet 125
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
ss
aa
bb
cc
2020
101055 88
E E ss a b c a b c
D D 00
P P ss ? ? ? ? ? ?
E <E <-- E \ { s } E \ { s }relax ( s , a )relax ( s , a )
relax ( s , b )relax ( s , b )
//
21 février 2006 Cours de graphes 2 - Intranet 126
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
ss
aa
bb
cc
2020
101055 88
E E ss a b c a b c
D D 00
P P ss ? ? ? ? ? ?
E <E <-- E \ { s } E \ { s }relax ( s , a )relax ( s , a )
relax ( s , b )relax ( s , b )
E E ss a b c a b c
D D 00 1010
P P ss ss ss ? ?
//
21 février 2006 Cours de graphes 2 - Intranet 127
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
ss
aa
bb
cc
2020
101055 88
E E ss a b c a b c
D D 00
P P ss ? ? ? ? ? ?
E <E <-- E \ { s } E \ { s }relax ( s , a )relax ( s , a )
relax ( s , b )relax ( s , b )
E E ss aa b c b c
D D 00 1010
P P ss ss s ? s ?
//
E <E <-- E \ { a } E \ { a }
//
21 février 2006 Cours de graphes 2 - Intranet 128
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
ss
aa
bb
cc
2020
101055 88
E E ss a b c a b c
D D 00
P P ss ? ? ? ? ? ?
E <E <-- E \ { s } E \ { s }relax ( s , a )relax ( s , a )
relax ( s , b )relax ( s , b )
E E ss aa b c b c
D D 00 1010
P P ss ss s ? s ?
//
E <E <-- E \ { a } E \ { a } relax ( a , b )relax ( a , b )
//
21 février 2006 Cours de graphes 2 - Intranet 129
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
ss
aa
bb
cc
2020
101055 88
E E ss a b c a b c
D D 00
P P ss ? ? ? ? ? ?
E <E <-- E \ { s } E \ { s }relax ( s , a )relax ( s , a )
relax ( s , b )relax ( s , b )
E E ss aa b c b c
D D 00 1010
P P ss ss s ? s ?
//
E <E <-- E \ { a } E \ { a } relax ( a , b )relax ( a , b )
//
E E ss aa b b c c
D D 00 1010
P P ss ss aa ? ?
// //
21 février 2006 Cours de graphes 2 - Intranet 130
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
ss
aa
bb
cc
2020
101055 88
E E ss a b c a b c
D D 00
P P ss ? ? ? ? ? ?
E <E <-- E \ { s } E \ { s }relax ( s , a )relax ( s , a )
relax ( s , b )relax ( s , b )
E E ss aa b c b c
D D 00 1010
P P ss ss s ? s ?
//
E <E <-- E \ { a } E \ { a } relax ( a , b )relax ( a , b )
//
E E ss aa bb c c
D D 00 1010
P P ss ss aa ? ?
// //E <E <-- E \ { b } E \ { b }
//
21 février 2006 Cours de graphes 2 - Intranet 131
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
ss
aa
bb
cc
2020
101055 88
E E ss a b c a b c
D D 00
P P ss ? ? ? ? ? ?
E <E <-- E \ { s } E \ { s }relax ( s , a )relax ( s , a )
relax ( s , b )relax ( s , b )
E E ss aa b c b c
D D 00 1010
P P ss ss s ? s ?
//
E <E <-- E \ { a } E \ { a } relax ( a , b )relax ( a , b )
//
E E ss aa bb c c
D D 00 1010 2323
P P ss ss aa bb
// //E <E <-- E \ { b } E \ { b }
//relax ( b , c )relax ( b , c )
21 février 2006 Cours de graphes 2 - Intranet 132
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
ss
aa
bb
cc
2020
101055 88
E E ss a b c a b c
D D 00
P P ss ? ? ? ? ? ?
E <E <-- E \ { s } E \ { s }relax ( s , a )relax ( s , a )
relax ( s , b )relax ( s , b )
E E ss aa b c b c
D D 00 1010
P P ss ss s ? s ?
//
E <E <-- E \ { a } E \ { a } relax ( a , b )relax ( a , b )
//
E E ss aa bb cc
D D 00 1010 2323
P P ss ss aa bb
// //E <E <-- E \ { b } E \ { b }
//relax ( b , c )relax ( b , c )
//
E <E <-- E \ { c } E \ { c }
21 février 2006 Cours de graphes 2 - Intranet 133
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
21 février 2006 Cours de graphes 2 - Intranet 134
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
21 février 2006 Cours de graphes 2 - Intranet 135
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
21 février 2006 Cours de graphes 2 - Intranet 136
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
21 février 2006 Cours de graphes 2 - Intranet 137
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
21 février 2006 Cours de graphes 2 - Intranet 138
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
Pas dans E !Pas dans E !
21 février 2006 Cours de graphes 2 - Intranet 139
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
Pas dans E !Pas dans E !
21 février 2006 Cours de graphes 2 - Intranet 140
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
Pas dans E !Pas dans E ! Dans E !Dans E !
21 février 2006 Cours de graphes 2 - Intranet 141
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
Pas dans E !Pas dans E ! Dans E !Dans E ! Dans E !Dans E !
21 février 2006 Cours de graphes 2 - Intranet 142
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
Pas dans E !Pas dans E ! Dans E !Dans E ! Dans E !Dans E !
21 février 2006 Cours de graphes 2 - Intranet 143
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
Pas dans E !Pas dans E ! Dans E !Dans E ! Dans E !Dans E !
D ( u ) <= D ( y ) carD ( u ) <= D ( y ) car« u » va être extrait !« u » va être extrait !
21 février 2006 Cours de graphes 2 - Intranet 144
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
Pas dans E !Pas dans E ! Dans E !Dans E ! Dans E !Dans E !
D ( u ) <= D ( y ) carD ( u ) <= D ( y ) car« u » va être extrait !« u » va être extrait !
D ( x ) = d ( s , x ) , car ilD ( x ) = d ( s , x ) , car iln’ y a pas eu d’erreur avant !n’ y a pas eu d’erreur avant !
21 février 2006 Cours de graphes 2 - Intranet 145
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
Pas dans E !Pas dans E ! Dans E !Dans E ! Dans E !Dans E !
D ( u ) <= D ( y ) carD ( u ) <= D ( y ) car« u » va être extrait !« u » va être extrait !
D ( x ) = d ( s , x ) , car ilD ( x ) = d ( s , x ) , car iln’ y a pas eu d’erreur avant !n’ y a pas eu d’erreur avant !
D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! !D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! !
21 février 2006 Cours de graphes 2 - Intranet 146
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
Pas dans E !Pas dans E ! Dans E !Dans E ! Dans E !Dans E !
D ( u ) <= D ( y ) carD ( u ) <= D ( y ) car« u » va être extrait !« u » va être extrait !
D ( x ) = d ( s , x ) , car ilD ( x ) = d ( s , x ) , car iln’ y a pas eu d’erreur avant !n’ y a pas eu d’erreur avant !
D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! !D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! !
21 février 2006 Cours de graphes 2 - Intranet 147
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
Pas dans E !Pas dans E ! Dans E !Dans E ! Dans E !Dans E !
D ( u ) <= D ( y ) carD ( u ) <= D ( y ) car« u » va être extrait !« u » va être extrait !
D ( x ) = d ( s , x ) , car ilD ( x ) = d ( s , x ) , car iln’ y a pas eu d’erreur avant !n’ y a pas eu d’erreur avant !
D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! !D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! !
D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u )D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u )
21 février 2006 Cours de graphes 2 - Intranet 148
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
Pas dans E !Pas dans E ! Dans E !Dans E ! Dans E !Dans E !
D ( u ) <= D ( y ) carD ( u ) <= D ( y ) car« u » va être extrait !« u » va être extrait !
D ( x ) = d ( s , x ) , car ilD ( x ) = d ( s , x ) , car iln’ y a pas eu d’erreur avant !n’ y a pas eu d’erreur avant !
D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! !D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! !
D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u )D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u )
D ( y ) = d ( s , y ) = D ( u ) = d ( s , u ) D ( y ) = d ( s , y ) = D ( u ) = d ( s , u )
21 février 2006 Cours de graphes 2 - Intranet 149
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Correction de l’algorithme, par absurde !Correction de l’algorithme, par absurde !
• Soit « u » le premier sommet extrait avec « D ( u ) > d Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » !( s , u ) » !
• Soit le chemin de plus léger de « s » vers « u » :Soit le chemin de plus léger de « s » vers « u » :ss . . .. . . xx yy . . .. . . uu
Pas dans E !Pas dans E ! Dans E !Dans E ! Dans E !Dans E !
D ( u ) <= D ( y ) carD ( u ) <= D ( y ) car« u » va être extrait !« u » va être extrait !
D ( x ) = d ( s , x ) , car ilD ( x ) = d ( s , x ) , car iln’ y a pas eu d’erreur avant !n’ y a pas eu d’erreur avant !
D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! !D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! !
D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u )D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u )
D ( y ) = d ( s , y ) = D ( u ) = d ( s , u ) D ( y ) = d ( s , y ) = D ( u ) = d ( s , u )
21 février 2006 Cours de graphes 2 - Intranet 150
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Dijkstra calcule les chemins les plus légers d’un Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest sommet vers tous les autres (one-to-all shortest pairs).pairs).
21 février 2006 Cours de graphes 2 - Intranet 151
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Dijkstra calcule les chemins les plus légers d’un Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest sommet vers tous les autres (one-to-all shortest pairs).pairs).
• Tout sommet « u » est extrait avec une valeur « D Tout sommet « u » est extrait avec une valeur « D ( u ) » qui est bien égale au chemin le plus léger et ( u ) » qui est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » !dont le poids est « d ( s , u ) » !
21 février 2006 Cours de graphes 2 - Intranet 152
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Dijkstra calcule les chemins les plus légers d’un Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest sommet vers tous les autres (one-to-all shortest pairs).pairs).
• Tout sommet « u » est extrait avec une valeur « D Tout sommet « u » est extrait avec une valeur « D ( u ) » qui est bien égale au chemin le plus léger et ( u ) » qui est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » !dont le poids est « d ( s , u ) » !
• La complexité vaut La complexité vaut ( | V | + | E | ) , car nous ( | V | + | E | ) , car nous parcourons, exactement une fois, tous les sommets et parcourons, exactement une fois, tous les sommets et toutes les arêtes !toutes les arêtes !
21 février 2006 Cours de graphes 2 - Intranet 153
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Dijkstra calcule les chemins les plus légers d’un sommet Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs).vers tous les autres (one-to-all shortest pairs).
• Tout sommet « u » est extrait avec une valeur « D ( u ) » Tout sommet « u » est extrait avec une valeur « D ( u ) » qui est bien égale au chemin le plus léger et dont le qui est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » !poids est « d ( s , u ) » !
• La complexité vaut La complexité vaut ( | V | + | E | ) , car nous ( | V | + | E | ) , car nous parcourons, exactement une fois, tous les sommets et parcourons, exactement une fois, tous les sommets et toutes les arêtes !toutes les arêtes !
• Et Et ( | V | + | E | ) = ( | V | + | E | ) = ( | E | ) car le graphe est ( | E | ) car le graphe est connexe !connexe !
21 février 2006 Cours de graphes 2 - Intranet 154
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Dijkstra calcule les chemins les plus légers d’un sommet vers Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs).tous les autres (one-to-all shortest pairs).
• Tout sommet « u » est extrait avec une valeur « D ( u ) » qui 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 est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » !( s , u ) » !
• La complexité vaut La complexité vaut ( | V | + | E | ) , car nous parcourons, ( | V | + | E | ) , car nous parcourons, exactement une fois, tous les sommets et toutes les arêtes !exactement une fois, tous les sommets et toutes les arêtes !
• Et Et ( | V | + | E | ) = ( | V | + | E | ) = ( | E | ) car le graphe est connexe ! ( | E | ) car le graphe est connexe !
• Attention, tout ceci est correct uniquement si les poids sont Attention, tout ceci est correct uniquement si les poids sont positifs ou nuls ! ! ! positifs ou nuls ! ! !
21 février 2006 Cours de graphes 2 - Intranet 155
Connexité – plus courts cheminsConnexité – plus courts chemins----------------------------------------------------------------------------------------------------------------------------------
‘‘
21 février 2006 Cours de graphes 2 - Intranet 156
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Bellmann-Ford calcule les chemins les plus légers pour Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs).toutes les paires de sommets (all-to-all shortest pairs).
21 février 2006 Cours de graphes 2 - Intranet 157
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Bellmann-Ford calcule les chemins les plus légers pour Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs).toutes les paires de sommets (all-to-all shortest pairs).
• Les poids peuvent être négatifs, car il indique au Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids passage la présence éventuelle de cycles de poids négatif. négatif.
21 février 2006 Cours de graphes 2 - Intranet 158
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Bellmann-Ford calcule les chemins les plus légers pour Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs).toutes les paires de sommets (all-to-all shortest pairs).
• Les poids peuvent être négatifs, car il indique au Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids passage la présence éventuelle de cycles de poids négatif. négatif.
• La complexité est en O ( | V |^3 ) , comme Floyd-La complexité est en O ( | V |^3 ) , comme Floyd-Warshall ! Warshall !
21 février 2006 Cours de graphes 2 - Intranet 159
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Bellmann-Ford calcule les chemins les plus légers pour Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs).toutes les paires de sommets (all-to-all shortest pairs).
• Les poids peuvent être négatifs, car il indique au Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids passage la présence éventuelle de cycles de poids négatif. négatif.
• La complexité est en O ( | V |^3 ) , comme Floyd-La complexité est en O ( | V |^3 ) , comme Floyd-Warshall ! Warshall !
• BF utilise la même relaxation que Dijkstra, mais ne BF utilise la même relaxation que Dijkstra, mais ne considère jamais qu’une valeur d’un sommet est considère jamais qu’une valeur d’un sommet est définitive (et que le sommet peut être retiré de définitive (et que le sommet peut être retiré de l’ensemble « E »).l’ensemble « E »).
21 février 2006 Cours de graphes 2 - Intranet 160
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Bellmann-Ford calcule les chemins les plus légers pour Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs).toutes les paires de sommets (all-to-all shortest pairs).
• Les poids peuvent être négatifs, car il indique au passage Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids négatif. la présence éventuelle de cycles de poids négatif.
• La complexité est en O ( | V |^3 ) , comme Floyd-La complexité est en O ( | V |^3 ) , comme Floyd-Warshall ! Warshall !
• BF utilise la même relaxation que Dijkstra, mais ne BF utilise la même relaxation que Dijkstra, mais ne considère jamais qu’une valeur d’un sommet est définitive considère jamais qu’une valeur d’un sommet est définitive (et que le sommet peut être retiré de l’ensemble « E »).(et que le sommet peut être retiré de l’ensemble « E »).
• Nous continuons tant qu’il y a des poids peuvent être Nous continuons tant qu’il y a des poids peuvent être réduits et que . . . (nous verrons plus tard) !réduits et que . . . (nous verrons plus tard) !
21 février 2006 Cours de graphes 2 - Intranet 161
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• L’opération de relaxation « relax ( x , v ) » dit si, oui ou L’opération de relaxation « relax ( x , v ) » dit si, oui ou non, le poids du sommet « v » est resté stable. 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
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• L’opération de relaxation « relax ( x , v ) » dit si, oui ou L’opération de relaxation « relax ( x , v ) » dit si, oui ou non, le poids du sommet « v » est resté stable. 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
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le code presque correct :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
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le code presque correct :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 !La même initialisation !
21 février 2006 Cours de graphes 2 - Intranet 165
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le code presque correct :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 !La même initialisation !
Nous relaxons tout ! ! !Nous relaxons tout ! ! !
21 février 2006 Cours de graphes 2 - Intranet 166
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Le code presque correct :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 !La même initialisation !
Nous relaxons tout ! ! !Nous relaxons tout ! ! !
Nous nous arrêtons lorsqu’aucun poidsNous nous arrêtons lorsqu’aucun poidsn’a pu être réduit au dernier passage !n’a pu être réduit au dernier passage !
21 février 2006 Cours de graphes 2 - Intranet 167
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Calculer les plus courts chemins ou les chemins les plus Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifslégers avec des poids positifs
– revient à ne considérer que des chemins simples ! ! ! revient à ne considérer que des chemins simples ! ! ! ! ! !! ! !
21 février 2006 Cours de graphes 2 - Intranet 168
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Calculer les plus courts chemins ou les chemins les plus Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifslégers avec des poids positifs
– revient à ne considérer que des chemins simples ! ! ! revient à ne considérer que des chemins simples ! ! ! ! ! !! ! !
• L’algorithme que nous avons construit s’arrête dans L’algorithme que nous avons construit s’arrête dans ces cas ! ces cas !
21 février 2006 Cours de graphes 2 - Intranet 169
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Calculer les plus courts chemins ou les chemins les plus Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifslégers avec des poids positifs
– revient à ne considérer que des chemins simples ! ! ! revient à ne considérer que des chemins simples ! ! ! ! ! !! ! !
• L’algorithme que nous avons construit s’arrête dans L’algorithme que nous avons construit s’arrête dans ces cas ! ces cas !
• S’il y a des cycles de poids négatifs :S’il y a des cycles de poids négatifs :
– le chemin le plus léger ne sera plus un chemin simple,le chemin le plus léger ne sera plus un chemin simple,– l’algorithme va boucler !l’algorithme va boucler !
21 février 2006 Cours de graphes 2 - Intranet 170
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Calculer les plus courts chemins ou les chemins les plus légers Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifsavec des poids positifs
– revient à ne considérer que des chemins simples ! ! ! ! ! !revient à ne considérer que des chemins simples ! ! ! ! ! !
• L’algorithme que nous avons construit s’arrête dans ces cas ! L’algorithme que nous avons construit s’arrête dans ces cas !
• S’il y a des cycles de poids négatifs :S’il y a des cycles de poids négatifs :
– le chemin le plus léger ne sera plus un chemin simple,le chemin le plus léger ne sera plus un chemin simple,– l’algorithme va boucler !l’algorithme va boucler !
• Il faut un garde-fou :Il faut un garde-fou :
– Pour « n » sommets, le chemin simple le plus long ne Pour « n » sommets, le chemin simple le plus long ne dépasse pas « n dépasse pas « n –– 1 » étapes. 1 » étapes.
21 février 2006 Cours de graphes 2 - Intranet 171
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Un code correct :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
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Un code correct :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 ;
Nous comptons et limitons leNous comptons et limitons lenombre de tours de boucle !nombre de tours de boucle !
21 février 2006 Cours de graphes 2 - Intranet 173
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• Un code correct :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 ;
Nous comptons et limitons leNous comptons et limitons lenombre de tours de boucle !nombre de tours de boucle !
Si « k » atteint « n » c’est qu’il ySi « k » atteint « n » c’est qu’il ya des boucles de poids négatifs !a des boucles de poids négatifs !
21 février 2006 Cours de graphes 2 - Intranet 174
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• La preuve de correction :La preuve de correction :
• La longueur d’aucun chemin simple n’excède « | V | La longueur d’aucun chemin simple n’excède « | V | -- 1 ».1 ».
21 février 2006 Cours de graphes 2 - Intranet 175
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• La preuve de correction :La preuve de correction :
• La longueur d’aucun chemin simple n’excède « | V | La longueur d’aucun chemin simple n’excède « | V | -- 1 ».1 ».
• Soit le chemin simple le plus léger de « s » vers « u » :Soit le chemin simple le plus léger de « s » vers « u » :
avec f <= | V | avec f <= | V | -- 1 et u 1 et u = a= a
ss aa . . .. . .11
aaff ff
21 février 2006 Cours de graphes 2 - Intranet 176
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• La preuve de correction :La preuve de correction :
• La longueur d’aucun chemin simple n’excède « | V | La longueur d’aucun chemin simple n’excède « | V | -- 1 ».1 ».
• Soit le chemin simple le plus léger de « s » vers « u » :Soit le chemin simple le plus léger de « s » vers « u » :
avec f <= | V | avec f <= | V | -- 1 et u 1 et u = a= a
• Après le i tour de boucle : D ( a ) = d ( s , a ) .Après le i tour de boucle : D ( a ) = d ( s , a ) .
ss aa . . .. . .11
aaff ff
eeii ii
21 février 2006 Cours de graphes 2 - Intranet 177
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• La preuve de correction :La preuve de correction :
• La longueur d’aucun chemin simple n’excède « | V | La longueur d’aucun chemin simple n’excède « | V | -- 1 ».1 ».
• Soit le chemin simple le plus léger de « s » vers « u » :Soit le chemin simple le plus léger de « s » vers « u » :
avec f <= | V | avec f <= | V | -- 1 et u 1 et u = a= a
• Après le i tour de boucle : D ( a ) = d ( s , a ) .Après le i tour de boucle : D ( a ) = d ( s , a ) .
– Trivial, pour i = 0 , c’est-à-dire pour « s » !Trivial, pour i = 0 , c’est-à-dire pour « s » !
ss aa . . .. . .11
aaff ff
eeii ii
21 février 2006 Cours de graphes 2 - Intranet 178
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• La preuve de correction :La preuve de correction :
• La longueur d’aucun chemin simple n’excède « | V | La longueur d’aucun chemin simple n’excède « | V | -- 1 ». 1 ».
• Soit le chemin simple le plus léger de « s » vers « u » :Soit le chemin simple le plus léger de « s » vers « u » :
avec f <= | V | avec f <= | V | -- 1 et u = a 1 et u = a
• Après le i tour de boucle : D ( a ) = d ( s , a ) .Après le i tour de boucle : D ( a ) = d ( s , a ) .
– Trivial, pour i = 0 , c’est-à-dire pour « s » !Trivial, pour i = 0 , c’est-à-dire pour « s » !
– Si c’est vrai pour « i », le i+1 tour calcule : Si c’est vrai pour « i », le i+1 tour calcule :
D ( a ) = relax ( a , a ) = d ( s , a )D ( a ) = relax ( a , a ) = d ( s , a )
ss aa . . .. . .11
aaff ff
eeii ii
ee
iii+1i+1 i+1i+1 i+1i+1
21 février 2006 Cours de graphes 2 - Intranet 179
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• La preuve de correction :La preuve de correction :
• La longueur d’aucun chemin simple n’excède « | V | La longueur d’aucun chemin simple n’excède « | V | -- 1 ». 1 ».
• Soit le chemin simple le plus léger de « s » vers « u » :Soit le chemin simple le plus léger de « s » vers « u » :
avec f <= | V | avec f <= | V | -- 1 et u = a 1 et u = a
• Après le i tour de boucle : D ( a ) = d ( s , a ) .Après le i tour de boucle : D ( a ) = d ( s , a ) .
– Trivial, pour i = 0 , c’est-à-dire pour « s » !Trivial, pour i = 0 , c’est-à-dire pour « s » !
– Si c’est vrai pour « i », le i+1 tour calcule : Si c’est vrai pour « i », le i+1 tour calcule :
D ( a ) = relax ( a , a ) = d ( s , a )D ( a ) = relax ( a , a ) = d ( s , a )
• Après le tour de boucle « f » : D ( u ) = D ( a ) = d ( s , a )Après le tour de boucle « f » : D ( u ) = D ( a ) = d ( s , a )
ss aa . . .. . .11
aaff ff
eeii ii
ee
iii+1i+1 i+1i+1 i+1i+1
ff ff
21 février 2006 Cours de graphes 2 - Intranet 180
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• La preuve de correction :La preuve de correction :
• La longueur d’aucun chemin simple n’excède « | V | La longueur d’aucun chemin simple n’excède « | V | -- 1 ». 1 ».
• Soit le chemin simple le plus léger de « s » vers « u » :Soit le chemin simple le plus léger de « s » vers « u » :
avec f <= | V | avec f <= | V | -- 1 et u = a 1 et u = a
• Après le i tour de boucle : D ( a ) = d ( s , a ) .Après le i tour de boucle : D ( a ) = d ( s , a ) .
– Trivial, pour i = 0 , c’est-à-dire pour « s » !Trivial, pour i = 0 , c’est-à-dire pour « s » !
– Si c’est vrai pour « i », le i+1 tour calcule : Si c’est vrai pour « i », le i+1 tour calcule :
D ( a ) = relax ( a , a ) = d ( s , a )D ( a ) = relax ( a , a ) = d ( s , a )
• Après le tour de boucle « f » : D ( u ) = D ( a ) = d ( s , a )Après le tour de boucle « f » : D ( u ) = D ( a ) = d ( s , a )
ss aa . . .. . .11
aaff ff
eeii ii
ee
iii+1i+1 i+1i+1 i+1i+1
ff ff
21 février 2006 Cours de graphes 2 - Intranet 181
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• La preuve de correction (suite) :La preuve de correction (suite) :
• Au bout de « | V | Au bout de « | V | -- 1 » itérations nous avons tous les 1 » itérations nous avons tous les chemins simples les plus légers !chemins simples les plus légers !
21 février 2006 Cours de graphes 2 - Intranet 182
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• La preuve de correction (suite) :La preuve de correction (suite) :
• Au bout de « | V | Au bout de « | V | -- 1 » itérations nous avons tous les 1 » itérations nous avons tous les chemins simples les plus légers !chemins simples les plus légers !
• S’il y a encore des modifications de poids au-delà de S’il y a encore des modifications de poids au-delà de cette itération, c’est qu’il existe des cycles de poids cette itération, c’est qu’il existe des cycles de poids négatifs ! négatifs !
21 février 2006 Cours de graphes 2 - Intranet 183
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• La preuve de correction (suite) :La preuve de correction (suite) :
• Au bout de « | V | Au bout de « | V | -- 1 » itérations nous avons tous les 1 » itérations nous avons tous les chemins simples les plus légers !chemins simples les plus légers !
• S’il y a encore des modifications de poids au-delà de cette 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 ! itération, c’est qu’il existe des cycles de poids négatifs !
• La complexité :La complexité :
– en présence de cycles de poids négatifs : en présence de cycles de poids négatifs : ( | V | * | E ( | V | * | E | )| )
21 février 2006 Cours de graphes 2 - Intranet 184
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• La preuve de correction (suite) :La preuve de correction (suite) :
• Au bout de « | V | Au bout de « | V | -- 1 » itérations nous avons tous les chemins 1 » itérations nous avons tous les chemins simples les plus légers !simples les plus légers !
• S’il y a encore des modifications de poids au-delà de cette itération, 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 ! c’est qu’il existe des cycles de poids négatifs !
• La complexité :La complexité :
– en présence de cycles de poids négatifs : en présence de cycles de poids négatifs : ( | V | * | E | ) ( | V | * | E | )
– en l’absence de cycles de poids négatifs : en l’absence de cycles de poids négatifs : ( ( ( G ) * | E | ) ( G ) * | E | )
21 février 2006 Cours de graphes 2 - Intranet 185
Connexité – chemins les plus légersConnexité – chemins les plus légers----------------------------------------------------------------------------------------------------------------------------------
• La preuve de correction (suite) :La preuve de correction (suite) :
• Au bout de « | V | Au bout de « | V | -- 1 » itérations nous avons tous les chemins simples les 1 » itérations nous avons tous les chemins simples les plus légers !plus légers !
• S’il y a encore des modifications de poids au-delà de cette itération, 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 ! c’est qu’il existe des cycles de poids négatifs !
• La complexité :La complexité :
– en présence de cycles de poids négatifs : en présence de cycles de poids négatifs : ( | V | * | E | ) ( | V | * | E | )
– en l’absence de cycles de poids négatifs : en l’absence de cycles de poids négatifs : ( ( ( G ) * | E | ) ( G ) * | E | )
• Le diamètre Le diamètre ( G ) est la longueur du plus long chemin simple ! ( G ) est la longueur du plus long chemin simple !
21 février 2006 Cours de graphes 2 - Intranet 186
SynthèseSynthèse----------------------------------------------------------------------------------------------------------------------------------
• Les plus courts chemins,Les plus courts chemins,• les chemins les plus légers :les chemins les plus légers :
– à l’aide de la vague,à l’aide de la vague,– à l’aide de la multiplication,à l’aide de la multiplication,– à l’aide de Floyd-Warshall.à l’aide de Floyd-Warshall.
– Algorithmes de Dijkstra et Bellmann-Ford.Algorithmes de Dijkstra et Bellmann-Ford.
21 février 2006 Cours de graphes 2 - Intranet 187
‘‘