490 likes | 731 Vues
Cours de graphes. Les plus courts chemins, les chemins les plus légers : à l’aide de la vague, à l’aide de la multiplication, à l’aide de Floyd-Warshall. Algorithmes de Dijkstra et Bellmann-Ford. Les grandes lignes du cours. Définitions de base Connexité Les plus courts chemins
E N D
Cours de graphes • Les plus courts chemins, • les chemins les plus légers : • à l’aide de la vague, • à l’aide de la multiplication, • à l’aide de Floyd-Warshall. • Algorithmes de Dijkstra et Bellmann-Ford. Cours de graphes 2 - Intranet
Les grandes lignes du cours • Définitions de base • Connexité • Les plus courts chemins • Dijkstra et Bellmann-Ford • Arbres • Arbres de recouvrement minimaux • Problèmes de flots • Coloriage de graphes • Couplage • Chemins d’Euler et de Hamilton • Problèmes NP-complets Cours de graphes 2 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Plus courts La suite . . . Plus légers Cours de graphes 2 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- • Sur un graphe non orienté, nous allons calculer : • les composantes connexes ! • Sur une composante connexe, nous allons calculer : • les plus courts chemins ! • Nous rajoutons une pondération strictement positive et nous allons calculer : • les chemins les plus légers ! FAIT ! Cours de graphes 2 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- • La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! • L’algorithme de la « vague » : • Nous choisissons un sommet « u » sec et le mouillons, • à l’étape 1, nous mouillons ses voisins, • à l’étape 2, nous mouillons les voisins des voisins , . . . • En temps Q ( | E | ) = O( | V |^2 ) , nous connaissons les plus courts chemins du sommet « u » vers les autres ! A quelle étape un sommet a-t-il été mouillé ? Cours de graphes 2 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- Touché une seconde fois ! u Touché deux fois ! Etape 0-étape 1-étape 2- étape 3 Cours de graphes 2 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- • La connaissance de d ( u , v ) et d ( u , w ) ne permet pas de dire grand-chose sur d ( v , w ) ! • Il faut répéter la vague depuis • chaque sommet « u » du graphe ! • En temps Q ( | V | * | E | ) = O( | V |^3 ) , nous connaissons les plus courts chemins de tout sommet à tout sommet ! v u w u w v Cours de graphes 2 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Plus courts Plus légers Cours de graphes 2 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- • La multiplication de matrices : • Nous prenons une matrice avec des « 0 » sur la diagonale, • des « 1 » lorsque l’arête existe et des « +µ » sinon. • Nous effectuons le calcul suivant : • M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) • Nous calculons : M -> M^2 -> M^4 -> . . . • Propriété : M^( 2 * i ) = M^i * M^i contient tous les plus courts chemins de longueur au plus 2 * i , c’est-à-dire qu’elle contient des « +µ » et des valeurs dans { 0 , . . . , 2 * i } . • Il suffit de calculer M^k avec k >= | V |-1 à l’aide de O ( log( | V | ) ) élévations au carré ! k Cours de graphes 2 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- • Preuve de la propriété : • La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . • Hypothèse d’induction : M^i contient tous les . . . • M^( 2 * i ) ( u , v ) <> +µ • min_k M^i ( u , k ) + M^i ( k , v ) <> +µ • $ w tel que M^i ( u , w ) + M^i ( w , v ) <> +µ et de • valeur minimale. • M^i ( u , w ) <> +µ et M^i ( w , v ) <> +µ • Les plus courts chemins de ( u ; w ) et de ( w ; v ) sont • de longueur au plus i. • Le plus court chemin de « u » vers « v » est de • longueur au plus 2 * i et c’est ( u ; w ; v ) . Cours de graphes 2 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- • Preuve de la propriété : • La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . • Hypothèse d’induction : M^i contient tous les . . . • M^( 2 * i ) ( u , v ) <> +µ • min_k M^i ( u , k ) + M^i ( k , v ) <> +µ • $ w tel que M^i ( u , w ) + M^i ( w , v ) <> +µ et de • valeur minimale. • M^i ( u , w ) <> +µ et M^i ( w , v ) <> +µ • Les plus courts chemins de ( u ; w ) et de ( w ; v ) sont • de longueur au plus i. • Le plus court chemin de « u » vers « v » est de • longueur au plus 2 * i et c’est ( u ; w ; v ) . Lemme des plus courts chemins ! Cours de graphes 2 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Plus courts Plus légers Cours de graphes 2 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- (0) • M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. • M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , . . . , k-1 } . • M ( u , v ) = min ( , • ) • Le plus court chemin avec des sommets dans { 1 , . . . , k } : • peut, soit, ne pas passer par « k », • peut, soit, passer par « k » ! • M est la matrice recherchée ! (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) (n) Cours de graphes 2 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Plus légers Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Sur un graphe non orienté, nous allons calculer : • les composantes connexes ! • Sur une composante connexe, nous allons calculer : • les plus courts chemins ! • Nous rajoutons une pondération strictement positive et nous allons calculer : • les chemins les plus légers ! FAIT ! FAIT ! Les plus courts chemins en sont un cas particulier ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Nous rajoutons une pondération strictement positive et nous allons calculer : • les chemins les plus légers ! • En présence de poids négatifs, le problème pourrait ne plus avoir de sens, car il pourrait y avoir des cycles de poids négatif. 5 10 -15 5 Cycle de poids négatif ! 5 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Le problème des chemins les plus légers : • L’inégalité triangulaire peut ne pas être respectée ! • L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 15 Une vague qui se brise. Nous l’ignorons ! ! ! 5 8 0 30 40 30 10 5 Etape 0-étape 1-étape 2- étape 3 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Le problème des chemins les plus légers : • L’inégalité triangulaire peut ne pas être respectée ! • L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 15 Elle n’existe plus ! 5 8 0 30 40 30 10 5 Etape 0-étape 1-étape 2- étape 3 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Le problème des chemins les plus légers : • L’inégalité triangulaire peut ne pas être respectée ! • L’algorithme de la vague (unique) ne marche plus ! ! ! • Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . . • Quand est-ce que c’est fini ? ? ? 10 Ceci est à refaire ! 5 15 5 8 23 0 30 40 45 30 10 5 Etape 0-étape 1-étape 2-étape 3 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Un cas pathologique : 5 5 . . . 5 8 8 8 X Y T Z 20 20 20 2 vagues O ( n / 3 ) vagues ! ! ! 4 vagues dont 2 simultanées Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts N O N ! Plus légers C'est trop pénible ! ! ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • La multiplication de matrices : • Nous prenons une matrice avec des « 0 » sur la diagonale, • le poids de l’arête lorsqu’elle existe et « +µ » sinon. • Nous effectuons le calcul suivant : • M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) • Nous calculons : M -> M^2 -> M^4 -> . . . • Propriété : M^( 2 * i ) = M^i * M^i contient tous les chemins les plus légers de longueur au plus 2 * i (nombre d’arêtes). • Il suffit de calculer M^k avec k >= | V |-1 à l’aide de O ( log( | V | ) ) élévations au carré ! k Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) N O N ! Plus légers Le même programme ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- (0) • M est la matrice d’adjacence avec des « 0 » sur la diagonale, le poids de l’arête si elle existe et des « +µ » sinon. • M de Floyd-Warshall contient par hypothèse les chemins les plus légers construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , . . . , k-1 } . • M ( u , v ) = min ( , • ) • Le chemin le plus léger avec des sommets dans { 1 , . . . , k } : • peut, soit, ne pas passer par « k », • peut, soit, passer par « k » ! • M est la matrice recherchée ! (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) (n) Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) N O N ! Plus légers Le même programme ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Et les graphes orientés ? ? ? • à ceci près que la connexité orientée par l’algorithme de la vague • nécessite de répéter l’algorithme pour chaque sommet • et introduit une complexité en Q ( | V | * | E | ) ! Tout ce que nous venons de voir reste valable en orienté ! Cours de graphes 2 - Intranet
Pour les graphes orientés----------------------------------------------------------------- OPTIMAUX ! La vague Multiplication Floyd-Warshall Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Connexité en orienté Q ( | V |^3 ) Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) N O N ! Plus légers Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Deux questions : • La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets ! • Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même complexité ? • Oui, c’est l’algorithme de Dijkstra ! • Nous avons dû exiger que les poids des arêtes soient positifs ou nuls ! • Pouvons-nous lever cette limitation, quitte à devoir détecter des cycles de poids négatifs ? • Oui, c’est l’algorithme de Bellmann-Ford ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! • C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. • Pour chaque sommet « u » nous connaissons « D ( u ) » qui • est un majorant du chemin le plus léger, • qui correspond au poids d’un chemin de « s » vers « u », • qui vaut initialement « +µ » pour tout « u » différent de « s » • et qui sera égal au chemin le plus léger à la fin du calcul. • De plus, pour tout « u » nous connaissons « P ( u ) » qui est le sommet qui précède « u » le long du meilleur chemin courant. Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • L’opération de base « relax ( x , v ) » demande • si le meilleur chemin actuel ne peut pas être amélioré si • le sommet « x » devient le prédécesseur de « v » ? • D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ? NON OUI RIEN ! D ( v ) <- D ( x ) + M ( x , v ) et P ( v ) <- x Donc, D ( v ) décroît et correspond à un chemin du graphe ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • L’opération de relaxation « relax ( x , v ) » : fonction relax ( x , v ) si D ( x ) + M ( x , v ) < D ( v ) D ( v ) <- D ( x ) + M ( x , v ) ; P ( v ) <- x ; fsi Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! Nous initialisons les prédécesseurs ! Nous initialisons les sommets à parcourir ! Tant qu’il reste un sommet à traiter . . . Nous retirons le sommet « u » dont « D ( u ) » est minimal ! Nous relaxons ses voisins qui ne sont pas encore définitifs ! ! ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- a 10 5 c 8 s b 20 E s a b c D 0µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / / E sa b c D 010 20 µ P ss s ? E <- E \ { a } relax ( a , b ) / / / / E sabc D 0101523 P ssab E <- E \ { b } relax ( b , c ) E <- E \ { c } Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Correction de l’algorithme, par absurde ! • Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Ce serait la première erreur de l'algorithme ! Nous allons montrer qu'elle n'existe pas ! ! ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Correction de l’algorithme, par absurde ! • Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! • Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Le raisonnement reste le même si seul le sommet "s" a été extrait ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Correction de l’algorithme, par absurde ! • Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! • Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! Le raisonnement reste le même si les sommets "y" et "u" sont confondus ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Correction de l’algorithme, par absurde ! • Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! • Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! Sans le savoir, nous avons déjà la bonne valeur pour D ( y ) ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Correction de l’algorithme, par absurde ! • Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! • Soit le chemin de plus léger de « s » vers « u » : Poids positifs ou nuls ! s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( y ) = d ( s , y ) = D ( u ) = d ( s , u ) D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u ) Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- Contradiction ! ! ! • Correction de l’algorithme, par absurde ! • Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! • Soit le chemin de plus léger de « s » vers « u » : Poids positifs ou nuls ! s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( y ) = d ( s , y ) = D ( u ) = d ( s , u ) D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u ) Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs). • Tout sommet « u » est extrait avec une valeur « D ( u ) » qui est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » ! • La complexité vaut Q ( | V | + | E | ) , car nous parcourons, exactement une fois, tous les sommets et toutes les arêtes ! • Et Q ( | V | + | E | ) = Q ( | E | ) car le graphe est connexe ! • Attention, tout ceci est correct uniquement si les poids sont positifs ou nuls ! ! ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs). • Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids négatif. • La complexité est en O ( | V |^3 ) , comme Floyd-Warshall ! • BF utilise la même relaxation que Dijkstra, mais ne considère jamais qu’une valeur d’un sommet est définitive (et que le sommet peut être retiré de l’ensemble « E »). • Nous continuons tant qu’il y a des poids peuvent être réduits et que . . . (nous verrons plus tard) ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • L’opération de relaxation « relax ( x , v ) » dit si, oui ou non, le poids du sommet « v » est resté stable. fonction relax ( x , v ) si D ( x ) + M ( x , v ) < D ( v ) D ( v ) <- D ( x ) + M ( x , v ) ; P ( v ) <- x ; rendre ( FAUX ) ; sinon rendre ( VRAI ) ; Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Le code presque correct : pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; jusqua stable = VRAI ; La même initialisation ! Nous nous arrêtons lorsqu’aucun poids n’a pu être réduit au dernier passage ! Nous relaxons tout ! ! ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifs • revient à ne considérer que des chemins simples ! ! ! ! ! ! • L’algorithme que nous avons construit s’arrête dans ces cas ! • S’il y a des cycles de poids négatifs : • le chemin le plus léger ne sera plus un chemin simple, • l’algorithme va boucler ! • Il faut un garde-fou : • Pour « n » sommets, le chemin simple le plus long ne dépasse pas « n – 1 » étapes. Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • Un code correct : Nous comptons et limitons le nombre de tours de boucle ! . . . k <- 0 ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; k <- k + 1 ; jusqua stable = VRAI ou k > n – 1 si k > n – 1 Il y a des cycles de poids négatifs ; Si « k » atteint « n » c’est qu’il y a des boucles de poids négatifs ! Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • La preuve de correction : • La longueur d’aucun chemin simple n’excède « | V | - 1 ». • Soit le chemin simple le plus léger de « s » vers « u » : • avec f <= | V | - 1 et u = a • Après le i tour de boucle : D ( a ) = d ( s , a ) . • Trivial, pour i = 0 , c’est-à-dire pour « s » ! • Si c’est vrai pour « i », le i+1 tour calcule : • D ( a ) = relax ( a , a ) = d ( s , a ) • Après le tour de boucle « f » : D ( u ) = D ( a ) = d ( s , a ) . . . s a a f 1 f e i i e i+1 i i+1 i+1 f f Cours de graphes 2 - Intranet
Connexité – chemins les plus légers----------------------------------------------------------------- • La preuve de correction (suite) : • Au bout de « | V | - 1 » itérations nous avons tous les chemins simples les plus légers ! • S’il y a encore des modifications de poids au-delà de cette itération, c’est qu’il existe des cycles de poids négatifs ! • La complexité : • en présence de cycles de poids négatifs : Q ( | V | * | E | ) • en l’absence de cycles de poids négatifs : Q ( D ( G ) * | E | ) • Le diamètre D ( G ) est la longueur du plus long chemin simple ! Cours de graphes 2 - Intranet
Synthèse-----------------------------------------------------------------Synthèse----------------------------------------------------------------- • Les plus courts chemins, • les chemins les plus légers : • à l’aide de la vague, • à l’aide de la multiplication, • à l’aide de Floyd-Warshall. • Algorithmes de Dijkstra et Bellmann-Ford. Cours de graphes 2 - Intranet