Cours de graphes Les plus courts chemins,

Présentations similaires


Présentation au sujet: "Cours de graphes Les plus courts chemins,"— Transcription de la présentation:

1 Cours de graphes Les plus courts chemins,
les chemins les plus légers : à l’aide de la vague, à l’aide de la multiplication, à l’aide de Floyd-Warshall. Algorithmes de Dijkstra et Bellmann-Ford. 21 février 2006 Cours de graphes 2 - Intranet

2 Les grandes lignes du cours
Définitions de base Connexité Les plus courts chemins Dijkstra et Bellmann-Ford Arbres Arbres de recouvrement minimaux Problèmes de flots Coloriage de graphes Couplage Chemins d’Euler et de Hamilton Problèmes NP-complets 21 février 2006 Cours de graphes 2 - Intranet

3 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Plus courts La suite Plus légers 21 février 2006 Cours de graphes 2 - Intranet

4 Cours de graphes 2 - Intranet
Connexité – plus courts chemins E S H E M I N S L U S C O U R T S 21 février 2006 Cours de graphes 2 - Intranet

5 Cours de graphes 2 - Intranet
Connexité – plus courts chemins Sur un graphe non orienté, nous allons calculer : les composantes connexes ! Sur une composante connexe, nous allons calculer : les plus courts chemins ! Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! FAIT ! 21 février 2006 Cours de graphes 2 - Intranet

6 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! 21 février 2006 Cours de graphes 2 - Intranet

7 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! L’algorithme de la « vague » : Nous choisissons un sommet « u » sec et le mouillons, 21 février 2006 Cours de graphes 2 - Intranet

8 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! L’algorithme de la « vague » : Nous choisissons un sommet « u » sec et le mouillons, à l’étape 1, nous mouillons ses voisins, 21 février 2006 Cours de graphes 2 - Intranet

9 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! L’algorithme de la « vague » : Nous choisissons un sommet « u » sec et le mouillons, à l’étape 1, nous mouillons ses voisins, à l’étape 2, nous mouillons les voisins des voisins , . . . 21 février 2006 Cours de graphes 2 - Intranet

10 A quelle étape un sommet a-t-il été mouillé ?
Connexité – plus courts chemins La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! L’algorithme de la « vague » : Nous choisissons un sommet « u » sec et le mouillons, à l’étape 1, nous mouillons ses voisins, à l’étape 2, nous mouillons les voisins des voisins , . . . A quelle étape un sommet a-t-il été mouillé ? 21 février 2006 Cours de graphes 2 - Intranet

11 A quelle étape un sommet a-t-il été mouillé ?
Connexité – plus courts chemins La notion de distance est donné par le nombre d’arêtes qu’il faut traverser au moins ! L’algorithme de la « vague » : Nous choisissons un sommet « u » sec et le mouillons, à l’étape 1, nous mouillons ses voisins, à l’étape 2, nous mouillons les voisins des voisins , . . . En temps Q ( | E | ) = O ( | V |^2 ) , nous connaissons les plus courts chemins du sommet « u » vers les autres ! A quelle étape un sommet a-t-il été mouillé ? 21 février 2006 Cours de graphes 2 - Intranet

12 Cours de graphes 2 - Intranet
Connexité – plus courts chemins 21 février 2006 Cours de graphes 2 - Intranet

13 Cours de graphes 2 - Intranet
Connexité – plus courts chemins Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

14 Cours de graphes 2 - Intranet
Connexité – plus courts chemins u Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

15 Cours de graphes 2 - Intranet
Connexité – plus courts chemins u Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

16 Cours de graphes 2 - Intranet
Connexité – plus courts chemins u Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

17 Cours de graphes 2 - Intranet
Connexité – plus courts chemins Touché une seconde fois ! u Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

18 Cours de graphes 2 - Intranet
Connexité – plus courts chemins Touché une seconde fois ! u Touché deux fois ! Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

19 Cours de graphes 2 - Intranet
Connexité – plus courts chemins u Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

20 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La connaissance de d ( u , v ) et d ( u , w ) ne permet pas de dire grand-chose sur d ( v , w ) ! 21 février 2006 Cours de graphes 2 - Intranet

21 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La connaissance de d ( u , v ) et d ( u , w ) ne permet pas de dire grand-chose sur d ( v , w ) ! v u w 21 février 2006 Cours de graphes 2 - Intranet

22 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La connaissance de d ( u , v ) et d ( u , w ) ne permet pas de dire grand-chose sur d ( v , w ) ! v u w u w v 21 février 2006 Cours de graphes 2 - Intranet

23 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La connaissance de d ( u , v ) et d ( u , w ) ne permet pas de dire grand-chose sur d ( v , w ) ! Il faut répéter la vague depuis chaque sommet « u » du graphe ! v u w u w v 21 février 2006 Cours de graphes 2 - Intranet

24 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La connaissance de d ( u , v ) et d ( u , w ) ne permet pas de dire grand-chose sur d ( v , w ) ! Il faut répéter la vague depuis chaque sommet « u » du graphe ! En temps Q ( | V | * | E | ) = O ( | V |^3 ) , nous connaissons les plus courts chemins de tout sommet à tout sommet ! v u w u w v 21 février 2006 Cours de graphes 2 - Intranet

25 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Plus courts Plus légers 21 février 2006 Cours de graphes 2 - Intranet

26 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La multiplication de matrices : 21 février 2006 Cours de graphes 2 - Intranet

27 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. 21 février 2006 Cours de graphes 2 - Intranet

28 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) k 21 février 2006 Cours de graphes 2 - Intranet

29 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> k 21 février 2006 Cours de graphes 2 - Intranet

30 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> Propriété : M^( 2 * i ) = M^i * M^i contient tous les plus courts chemins de longueur au plus 2 * i , c’est-à-dire qu’elle contient des « +µ » et des valeurs dans { 0 , , 2 * i } . k 21 février 2006 Cours de graphes 2 - Intranet

31 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> Propriété : M^( 2 * i ) = M^i * M^i contient tous les plus courts chemins de longueur au plus 2 * i , c’est-à-dire qu’elle contient des « +µ » et des valeurs dans { 0 , , 2 * i } . Il suffit de calculer M^k avec k >= | V |-1 à l’aide de O ( log( | V | ) ) élévations au carré ! k 21 février 2006 Cours de graphes 2 - Intranet

32 Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . 21 février 2006 Cours de graphes 2 - Intranet

33 Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . 21 février 2006 Cours de graphes 2 - Intranet

34 Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ 21 février 2006 Cours de graphes 2 - Intranet

35 Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ  min_k M^i ( u , k ) + M^i ( k , v ) <> +µ 21 février 2006 Cours de graphes 2 - Intranet

36 Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ  min_k M^i ( u , k ) + M^i ( k , v ) <> +µ  $ w tel que M^i ( u , w ) + M^i ( w , v ) <> +µ et de valeur minimale. 21 février 2006 Cours de graphes 2 - Intranet

37 Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ  min_k M^i ( u , k ) + M^i ( k , v ) <> +µ  $ w tel que M^i ( u , w ) + M^i ( w , v ) <> +µ et de valeur minimale.  M^i ( u , w ) <> +µ et M^i ( w , v ) <> +µ 21 février 2006 Cours de graphes 2 - Intranet

38 Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ  min_k M^i ( u , k ) + M^i ( k , v ) <> +µ  $ w tel que M^i ( u , w ) + M^i ( w , v ) <> +µ et de valeur minimale.  M^i ( u , w ) <> +µ et M^i ( w , v ) <> +µ  Les plus courts chemins de ( u ; w ) et de ( w ; v ) sont de longueur au plus i. 21 février 2006 Cours de graphes 2 - Intranet

39 Cours de graphes 2 - Intranet
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ  min_k M^i ( u , k ) + M^i ( k , v ) <> +µ  $ w tel que M^i ( u , w ) + M^i ( w , v ) <> +µ et de valeur minimale.  M^i ( u , w ) <> +µ et M^i ( w , v ) <> +µ  Les plus courts chemins de ( u ; w ) et de ( w ; v ) sont de longueur au plus i.  Le plus court chemin de « u » vers « v » est de longueur au plus 2 * i et c’est ( u ; w ; v ) . 21 février 2006 Cours de graphes 2 - Intranet

40 Lemme des plus courts chemins !
Connexité – plus courts chemins Preuve de la propriété : La matrice M = M^1 contient tou(te)s les (longueurs des) plus courts chemins de longueur au plus 1 . Hypothèse d’induction : M^i contient tous les . . . M^( 2 * i ) ( u , v ) <> +µ  min_k M^i ( u , k ) + M^i ( k , v ) <> +µ  $ w tel que M^i ( u , w ) + M^i ( w , v ) <> +µ et de valeur minimale.  M^i ( u , w ) <> +µ et M^i ( w , v ) <> +µ  Les plus courts chemins de ( u ; w ) et de ( w ; v ) sont de longueur au plus i.  Le plus court chemin de « u » vers « v » est de longueur au plus 2 * i et c’est ( u ; w ; v ) . Lemme des plus courts chemins ! 21 février 2006 Cours de graphes 2 - Intranet

41 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Plus courts Plus légers 21 février 2006 Cours de graphes 2 - Intranet

42 Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. 21 février 2006 Cours de graphes 2 - Intranet

43 Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . (k-1) 21 février 2006 Cours de graphes 2 - Intranet

44 Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) (k-1) (k) 21 février 2006 Cours de graphes 2 - Intranet

45 Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) (k-1) (k) (k-1) M ( u , v ) 21 février 2006 Cours de graphes 2 - Intranet

46 Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) 21 février 2006 Cours de graphes 2 - Intranet

47 Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) Le plus court chemin avec des sommets dans { 1 , , k } : peut, soit, ne pas passer par « k », (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) 21 février 2006 Cours de graphes 2 - Intranet

48 Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) Le plus court chemin avec des sommets dans { 1 , , k } : peut, soit, ne pas passer par « k », peut, soit, passer par « k » ! (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) 21 février 2006 Cours de graphes 2 - Intranet

49 Cours de graphes 2 - Intranet
Connexité – plus courts chemins (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, des « 1 » lorsque l’arête existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les plus courts chemins construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) Le plus court chemin avec des sommets dans { 1 , , k } : peut, soit, ne pas passer par « k », peut, soit, passer par « k » ! M est la matrice recherchée ! (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) (n) 21 février 2006 Cours de graphes 2 - Intranet

50 Cours de graphes 2 - Intranet
Connexité – plus courts chemins La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Plus légers 21 février 2006 Cours de graphes 2 - Intranet

51 Cours de graphes 2 - Intranet
Connexité – plus courts chemins E S H E M I N S L U S L E G E R S 21 février 2006 Cours de graphes 2 - Intranet

52 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Sur un graphe non orienté, nous allons calculer : les composantes connexes ! Sur une composante connexe, nous allons calculer : les plus courts chemins ! Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! FAIT ! FAIT ! 21 février 2006 Cours de graphes 2 - Intranet

53 Les plus courts chemins en sont un cas particulier !
Connexité – chemins les plus légers Sur un graphe non orienté, nous allons calculer : les composantes connexes ! Sur une composante connexe, nous allons calculer : les plus courts chemins ! Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! FAIT ! FAIT ! Les plus courts chemins en sont un cas particulier ! 21 février 2006 Cours de graphes 2 - Intranet

54 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! 21 février 2006 Cours de graphes 2 - Intranet

55 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! En présence de poids négatifs, le problème pourrait ne plus avoir de sens, car il pourrait y avoir des cycles de poids négatif. 21 février 2006 Cours de graphes 2 - Intranet

56 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! En présence de poids négatifs, le problème pourrait ne plus avoir de sens, car il pourrait y avoir des cycles de poids négatif. 5 10 -15 5 5 21 février 2006 Cours de graphes 2 - Intranet

57 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Nous rajoutons une pondération strictement positive et nous allons calculer : les chemins les plus légers ! En présence de poids négatifs, le problème pourrait ne plus avoir de sens, car il pourrait y avoir des cycles de poids négatif. 5 10 -15 5 Cycle de poids négatif ! 5 21 février 2006 Cours de graphes 2 - Intranet

58 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! 21 février 2006 Cours de graphes 2 - Intranet

59 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 21 février 2006 Cours de graphes 2 - Intranet

60 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 8 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

61 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 8 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

62 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 5 8 30 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

63 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 15 5 8 30 40 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

64 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 15 Une vague qui se brise. Nous l’ignorons ! ! ! 5 8 30 40 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

65 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 15 Elle n’existe plus ! 5 8 30 40 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

66 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 5 15 5 8 23 30 40 45 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

67 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! 10 Ceci est à refaire ! 5 15 5 8 23 30 40 45 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

68 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . . 10 Ceci est à refaire ! 5 15 5 8 23 30 40 45 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

69 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . . Quand est-ce que c’est fini ? ? ? 10 Ceci est à refaire ! 5 15 5 8 23 30 40 45 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

70 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le problème des chemins les plus légers : L’inégalité triangulaire peut ne pas être respectée ! L’algorithme de la vague (unique) ne marche plus ! ! ! Il peut y avoir « 2 » ou « 3 » vagues, ou « 4 », . . . Quand est-ce que c’est fini ? ? ? STOP ! ! ! 10 Ceci est à refaire ! 5 15 5 8 23 30 40 45 30 10 5 Etape étape étape étape 3 21 février 2006 Cours de graphes 2 - Intranet

71 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un cas pathologique : 5 8 5 8 . . . 5 8 X 20 20 20 21 février 2006 Cours de graphes 2 - Intranet

72 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un cas pathologique : 5 8 5 8 . . . 5 8 X Y 20 20 20 2 vagues 21 février 2006 Cours de graphes 2 - Intranet

73 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un cas pathologique : 5 8 5 8 . . . 5 8 X Y T 20 20 20 2 vagues 4 vagues dont 2 simultanées 21 février 2006 Cours de graphes 2 - Intranet

74 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un cas pathologique : 5 8 5 8 . . . 5 8 X Y T Z 20 20 20 2 vagues O ( n / 3 ) vagues ! ! ! 4 vagues dont 2 simultanées 21 février 2006 Cours de graphes 2 - Intranet

75 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Plus légers N O N ! 21 février 2006 Cours de graphes 2 - Intranet

76 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Plus légers N O N ! C'est trop pénible ! ! ! 21 février 2006 Cours de graphes 2 - Intranet

77 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La multiplication de matrices : 21 février 2006 Cours de graphes 2 - Intranet

78 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, le poids de l’arête lorsqu’elle existe et « +µ » sinon. 21 février 2006 Cours de graphes 2 - Intranet

79 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, le poids de l’arête lorsqu’elle existe et « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) k 21 février 2006 Cours de graphes 2 - Intranet

80 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, le poids de l’arête lorsqu’elle existe et « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> k 21 février 2006 Cours de graphes 2 - Intranet

81 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, le poids de l’arête lorsqu’elle existe et « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> Propriété : M^( 2 * i ) = M^i * M^i contient tous les chemins les plus légers de longueur au plus 2 * i (nombre d’arêtes). k 21 février 2006 Cours de graphes 2 - Intranet

82 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La multiplication de matrices : Nous prenons une matrice avec des « 0 » sur la diagonale, le poids de l’arête lorsqu’elle existe et « +µ » sinon. Nous effectuons le calcul suivant : M * M’ ( i , j ) = min M ( i , k ) + M’ ( k , j ) Nous calculons : M -> M^2 -> M^4 -> Propriété : M^( 2 * i ) = M^i * M^i contient tous les chemins les plus légers de longueur au plus 2 * i (nombre d’arêtes). Il suffit de calculer M^k avec k >= | V |-1 à l’aide de O ( log( | V | ) ) élévations au carré ! k 21 février 2006 Cours de graphes 2 - Intranet

83 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Plus légers N O N ! 21 février 2006 Cours de graphes 2 - Intranet

84 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Plus légers N O N ! Le même programme ! 21 février 2006 Cours de graphes 2 - Intranet

85 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, le poids de l’arête si elle existe et des « +µ » sinon. 21 février 2006 Cours de graphes 2 - Intranet

86 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, le poids de l’arête si elle existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les chemins les plus légers construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) Le chemin le plus léger avec des sommets dans { 1 , , k } : peut, soit, ne pas passer par « k », peut, soit, passer par « k » ! M est la matrice recherchée ! (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) (n) 21 février 2006 Cours de graphes 2 - Intranet

87 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers (0) M est la matrice d’adjacence avec des « 0 » sur la diagonale, le poids de l’arête si elle existe et des « +µ » sinon. M de Floyd-Warshall contient par hypothèse les chemins les plus légers construits à l’aide de sommets intermédiaires dans l’ensemble { 0 , , k-1 } . M ( u , v ) = min ( , ) Le chemin le plus léger avec des sommets dans { 1 , , k } : peut, soit, ne pas passer par « k », peut, soit, passer par « k » ! M est la matrice recherchée ! Le reste ne change pas ! (k-1) (k) (k-1) M ( u , v ) (k-1) (k-1) M ( u , k ) + M ( k , v ) (n) 21 février 2006 Cours de graphes 2 - Intranet

88 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Plus légers N O N ! Q ( | V |^3 ) 21 février 2006 Cours de graphes 2 - Intranet

89 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Plus légers N O N ! Q ( | V |^3 ) Le même programme ! 21 février 2006 Cours de graphes 2 - Intranet

90 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers OPTIMAUX ! La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Connexité Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Plus légers N O N ! Q ( | V |^3 ) 21 février 2006 Cours de graphes 2 - Intranet

91 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Et les graphes orientés ? ? ? 21 février 2006 Cours de graphes 2 - Intranet

92 Tout ce que nous venons de voir reste valable en orienté !
Connexité – chemins les plus légers Et les graphes orientés ? ? ? Tout ce que nous venons de voir reste valable en orienté ! 21 février 2006 Cours de graphes 2 - Intranet

93 Tout ce que nous venons de voir reste valable en orienté !
Connexité – chemins les plus légers Et les graphes orientés ? ? ? à ceci près que la connexité orientée par l’algorithme de la vague nécessite de répéter l’algorithme pour chaque sommet et introduit une complexité en Q ( | V | * | E | ) ! Tout ce que nous venons de voir reste valable en orienté ! 21 février 2006 Cours de graphes 2 - Intranet

94 Cours de graphes 2 - Intranet
Pour les graphes orientés La vague Multiplication Floyd-Warshall Connexité en orienté Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) Plus légers N O N ! Q ( | V |^3 ) 21 février 2006 Cours de graphes 2 - Intranet

95 Cours de graphes 2 - Intranet
Pour les graphes orientés OPTIMAUX ! La vague Multiplication Floyd-Warshall Connexité en orienté Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Q ( | V | * | E | ) = O ( | V |^3 ) Q ( | V |^3 * log( | V | ) ) Q ( | V |^3 ) Plus courts Q ( | V |^3 * log( | V | ) ) N O N ! Q ( | V |^3 ) Plus légers 21 février 2006 Cours de graphes 2 - Intranet

96 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Deux questions : La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets ! 21 février 2006 Cours de graphes 2 - Intranet

97 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Deux questions : La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets ! Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même complexité ? Oui, c’est l’algorithme de Dijkstra ! 21 février 2006 Cours de graphes 2 - Intranet

98 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Deux questions : La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets ! Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même complexité ? Oui, c’est l’algorithme de Dijkstra ! Nous avons dû exiger que les poids des arêtes soient positifs ou nuls ! 21 février 2006 Cours de graphes 2 - Intranet

99 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Deux questions : La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets ! Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même complexité ? Oui, c’est l’algorithme de Dijkstra ! Nous avons dû exiger que les poids des arêtes soient positifs ou nuls ! Pouvons-nous lever cette limitation, quitte à devoir détecter des cycles de poids négatifs ? Oui, c’est l’algorithme de Bellmann-Ford ! 21 février 2006 Cours de graphes 2 - Intranet

100 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Deux questions : La vague construit en temps O ( | E | ) le plus court chemin d’un sommet « u » quelconque vers tous les autres sommets ! Pouvons-nous calculer les chemins les plus légers de « u » vers les autres sommets avec la même complexité ? Oui, c’est l’algorithme de Dijkstra ! Nous avons dû exiger que les poids des arêtes soient positifs ou nuls ! Pouvons-nous lever cette limitation, quitte à devoir détecter des cycles de poids négatifs ? Oui, c’est l’algorithme de Bellmann-Ford ! Le graphe pourra être orienté ou non ! 21 février 2006 Cours de graphes 2 - Intranet

101 Cours de graphes 2 - Intranet
Connexité – plus courts chemins ‘ A L G O R I T H M E D E D I J K S T R A 21 février 2006 Cours de graphes 2 - Intranet

102 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! 21 février 2006 Cours de graphes 2 - Intranet

103 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. 21 février 2006 Cours de graphes 2 - Intranet

104 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. Pour chaque sommet « u » nous connaissons « D ( u ) » qui est un majorant du chemin le plus léger, 21 février 2006 Cours de graphes 2 - Intranet

105 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. Pour chaque sommet « u » nous connaissons « D ( u ) » qui est un majorant du chemin le plus léger, qui correspond au poids d’un chemin de « s » vers « u », 21 février 2006 Cours de graphes 2 - Intranet

106 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. Pour chaque sommet « u » nous connaissons « D ( u ) » qui est un majorant du chemin le plus léger, qui correspond au poids d’un chemin de « s » vers « u », qui vaut initialement « +µ » pour tout « u » différent de « s » 21 février 2006 Cours de graphes 2 - Intranet

107 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. Pour chaque sommet « u » nous connaissons « D ( u ) » qui est un majorant du chemin le plus léger, qui correspond au poids d’un chemin de « s » vers « u », qui vaut initialement « +µ » pour tout « u » différent de « s » et qui sera égal au chemin le plus léger à la fin du calcul. 21 février 2006 Cours de graphes 2 - Intranet

108 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’algorithme de Dijkstra calcule les chemins les plus légers de « s » vers tous les autres sommets ! C’est un algorithme de « relaxation », qui est un schéma classique en recherche opérationnelle. Pour chaque sommet « u » nous connaissons « D ( u ) » qui est un majorant du chemin le plus léger, qui correspond au poids d’un chemin de « s » vers « u », qui vaut initialement « +µ » pour tout « u » différent de « s » et qui sera égal au chemin le plus léger à la fin du calcul. De plus, pour tout « u » nous connaissons « P ( u ) » qui est le sommet qui précède « u » le long du meilleur chemin courant. 21 février 2006 Cours de graphes 2 - Intranet

109 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de base « relax ( x , v ) » demande si le meilleur chemin actuel ne peut pas être amélioré si le sommet « x » devient le prédécesseur de « v » ? 21 février 2006 Cours de graphes 2 - Intranet

110 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de base « relax ( x , v ) » demande si le meilleur chemin actuel ne peut pas être amélioré si le sommet « x » devient le prédécesseur de « v » ? D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ? 21 février 2006 Cours de graphes 2 - Intranet

111 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de base « relax ( x , v ) » demande si le meilleur chemin actuel ne peut pas être amélioré si le sommet « x » devient le prédécesseur de « v » ? D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ? NON RIEN ! 21 février 2006 Cours de graphes 2 - Intranet

112 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de base « relax ( x , v ) » demande si le meilleur chemin actuel ne peut pas être amélioré si le sommet « x » devient le prédécesseur de « v » ? D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ? NON OUI RIEN ! D ( v ) <- D ( x ) + M ( x , v ) et P ( v ) <- x 21 février 2006 Cours de graphes 2 - Intranet

113 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de base « relax ( x , v ) » demande si le meilleur chemin actuel ne peut pas être amélioré si le sommet « x » devient le prédécesseur de « v » ? D ( x ) + M ( x , v ) < D ( v ) ? ? ? ? ? NON OUI RIEN ! D ( v ) <- D ( x ) + M ( x , v ) et P ( v ) <- x Donc, D ( v ) décroît et correspond à un chemin du graphe ! 21 février 2006 Cours de graphes 2 - Intranet

114 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de relaxation « relax ( x , v ) » : fonction relax ( x , v ) si D ( x ) + M ( x , v ) < D ( v ) D ( v ) <- D ( x ) + M ( x , v ) ; P ( v ) <- x ; fsi 21 février 2006 Cours de graphes 2 - Intranet

115 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } 21 février 2006 Cours de graphes 2 - Intranet

116 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! 21 février 2006 Cours de graphes 2 - Intranet

117 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! Nous initialisons les prédécesseurs ! 21 février 2006 Cours de graphes 2 - Intranet

118 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! Nous initialisons les prédécesseurs ! Nous initialisons les sommets à parcourir ! 21 février 2006 Cours de graphes 2 - Intranet

119 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! Nous initialisons les prédécesseurs ! Nous initialisons les sommets à parcourir ! Tant qu’il reste un sommet à traiter . . . 21 février 2006 Cours de graphes 2 - Intranet

120 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! Nous initialisons les prédécesseurs ! Nous initialisons les sommets à parcourir ! Tant qu’il reste un sommet à traiter . . . Nous retirons le sommet « u » dont « D ( u ) » est minimal ! 21 février 2006 Cours de graphes 2 - Intranet

121 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; E <- V ; tantque E <> f { u <- sommet_min_D ( E ) ; E <- E \ { u } ; pour tout v dans E et voisin de u relax ( u , v ) ; } Nous initialisons les distances ! Nous initialisons les prédécesseurs ! Nous initialisons les sommets à parcourir ! Tant qu’il reste un sommet à traiter . . . Nous retirons le sommet « u » dont « D ( u ) » est minimal ! Nous relaxons ses voisins qui ne sont pas encore définitifs ! ! ! 21 février 2006 Cours de graphes 2 - Intranet

122 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 21 février 2006 Cours de graphes 2 - Intranet

123 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? 21 février 2006 Cours de graphes 2 - Intranet

124 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? / E <- E \ { s } 21 février 2006 Cours de graphes 2 - Intranet

125 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? / relax ( s , a ) E <- E \ { s } relax ( s , b ) 21 février 2006 Cours de graphes 2 - Intranet

126 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) E s a b c D µ P s s s ? / 21 février 2006 Cours de graphes 2 - Intranet

127 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / E s a b c D µ P s s s ? / E <- E \ { a } 21 février 2006 Cours de graphes 2 - Intranet

128 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) E s a b c D µ P s s s ? / / E <- E \ { a } relax ( a , b ) 21 février 2006 Cours de graphes 2 - Intranet

129 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) E s a b c D µ P s s s ? / / E <- E \ { a } relax ( a , b ) / E s a b c D µ P s s a ? / 21 février 2006 Cours de graphes 2 - Intranet

130 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / / E s a b c D µ P s s s ? E <- E \ { a } relax ( a , b ) E s a b c D µ P s s a ? / / / E <- E \ { b } 21 février 2006 Cours de graphes 2 - Intranet

131 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / / E s a b c D µ P s s s ? E <- E \ { a } relax ( a , b ) E s a b c D P s s a b / / / E <- E \ { b } relax ( b , c ) 21 février 2006 Cours de graphes 2 - Intranet

132 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers 10 a 5 c 8 s b 20 E s a b c D µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / / E s a b c D µ P s s s ? E <- E \ { a } relax ( a , b ) E s a b c D P s s a b / / / / E <- E \ { b } relax ( b , c ) E <- E \ { c } 21 février 2006 Cours de graphes 2 - Intranet

133 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! 21 février 2006 Cours de graphes 2 - Intranet

134 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! 21 février 2006 Cours de graphes 2 - Intranet

135 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Ce serait la première erreur de l'algorithme ! 21 février 2006 Cours de graphes 2 - Intranet

136 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Ce serait la première erreur de l'algorithme ! Nous allons montrer qu'elle n'existe pas ! ! ! 21 février 2006 Cours de graphes 2 - Intranet

137 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u 21 février 2006 Cours de graphes 2 - Intranet

138 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! 21 février 2006 Cours de graphes 2 - Intranet

139 Le raisonnement reste le même si seul le sommet "s" a été extrait !
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Le raisonnement reste le même si seul le sommet "s" a été extrait ! 21 février 2006 Cours de graphes 2 - Intranet

140 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! 21 février 2006 Cours de graphes 2 - Intranet

141 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! 21 février 2006 Cours de graphes 2 - Intranet

142 Le raisonnement reste le même
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! Le raisonnement reste le même si les sommets "y" et "u" sont confondus ! 21 février 2006 Cours de graphes 2 - Intranet

143 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( u ) <= D ( y ) car « u » va être extrait ! 21 février 2006 Cours de graphes 2 - Intranet

144 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! 21 février 2006 Cours de graphes 2 - Intranet

145 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! 21 février 2006 Cours de graphes 2 - Intranet

146 Sans le savoir, nous avons déjà la bonne valeur pour D ( y ) !
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! Sans le savoir, nous avons déjà la bonne valeur pour D ( y ) ! 21 février 2006 Cours de graphes 2 - Intranet

147 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : Poids positifs ou nuls ! s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u ) 21 février 2006 Cours de graphes 2 - Intranet

148 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : Poids positifs ou nuls ! s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( y ) = d ( s , y ) = D ( u ) = d ( s , u ) D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u ) 21 février 2006 Cours de graphes 2 - Intranet

149 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Contradiction ! ! ! Correction de l’algorithme, par absurde ! Soit « u » le premier sommet extrait avec « D ( u ) > d ( s , u ) » ! Soit le chemin de plus léger de « s » vers « u » : Poids positifs ou nuls ! s . . . x y . . . u Pas dans E ! Dans E ! Dans E ! D ( y ) = d ( s , y ) = D ( u ) = d ( s , u ) D ( x ) = d ( s , x ) , car il n’ y a pas eu d’erreur avant ! D ( u ) <= D ( y ) car « u » va être extrait ! D ( y ) = relax ( x , y ) = d ( s , y ) ! ! ! ! ! D ( y ) = d ( s , y ) <= d ( s , u ) <= D ( u ) 21 février 2006 Cours de graphes 2 - Intranet

150 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs). 21 février 2006 Cours de graphes 2 - Intranet

151 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs). Tout sommet « u » est extrait avec une valeur « D ( u ) » qui est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » ! 21 février 2006 Cours de graphes 2 - Intranet

152 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs). Tout sommet « u » est extrait avec une valeur « D ( u ) » qui est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » ! La complexité vaut Q ( | V | + | E | ) , car nous parcourons, exactement une fois, tous les sommets et toutes les arêtes ! 21 février 2006 Cours de graphes 2 - Intranet

153 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs). Tout sommet « u » est extrait avec une valeur « D ( u ) » qui est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » ! La complexité vaut Q ( | V | + | E | ) , car nous parcourons, exactement une fois, tous les sommets et toutes les arêtes ! Et Q ( | V | + | E | ) = Q ( | E | ) car le graphe est connexe ! 21 février 2006 Cours de graphes 2 - Intranet

154 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Dijkstra calcule les chemins les plus légers d’un sommet vers tous les autres (one-to-all shortest pairs). Tout sommet « u » est extrait avec une valeur « D ( u ) » qui est bien égale au chemin le plus léger et dont le poids est « d ( s , u ) » ! La complexité vaut Q ( | V | + | E | ) , car nous parcourons, exactement une fois, tous les sommets et toutes les arêtes ! Et Q ( | V | + | E | ) = Q ( | E | ) car le graphe est connexe ! Attention, tout ceci est correct uniquement si les poids sont positifs ou nuls ! ! ! 21 février 2006 Cours de graphes 2 - Intranet

155 Cours de graphes 2 - Intranet
Connexité – plus courts chemins ‘ A L G O R I T H M E D E B E L L M A N N - F O R D 21 février 2006 Cours de graphes 2 - Intranet

156 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs). 21 février 2006 Cours de graphes 2 - Intranet

157 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs). Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids négatif. 21 février 2006 Cours de graphes 2 - Intranet

158 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs). Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids négatif. La complexité est en O ( | V |^3 ) , comme Floyd-Warshall ! 21 février 2006 Cours de graphes 2 - Intranet

159 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs). Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids négatif. La complexité est en O ( | V |^3 ) , comme Floyd-Warshall ! BF utilise la même relaxation que Dijkstra, mais ne considère jamais qu’une valeur d’un sommet est définitive (et que le sommet peut être retiré de l’ensemble « E »). 21 février 2006 Cours de graphes 2 - Intranet

160 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Bellmann-Ford calcule les chemins les plus légers pour toutes les paires de sommets (all-to-all shortest pairs). Les poids peuvent être négatifs, car il indique au passage la présence éventuelle de cycles de poids négatif. La complexité est en O ( | V |^3 ) , comme Floyd-Warshall ! BF utilise la même relaxation que Dijkstra, mais ne considère jamais qu’une valeur d’un sommet est définitive (et que le sommet peut être retiré de l’ensemble « E »). Nous continuons tant qu’il y a des poids peuvent être réduits et que (nous verrons plus tard) ! 21 février 2006 Cours de graphes 2 - Intranet

161 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de relaxation « relax ( x , v ) » dit si, oui ou non, le poids du sommet « v » est resté stable. fonction relax ( x , v ) si D ( x ) + M ( x , v ) < D ( v ) D ( v ) <- D ( x ) + M ( x , v ) ; P ( v ) <- x ; rendre ( FAUX ) ; sinon rendre ( VRAI ) ; 21 février 2006 Cours de graphes 2 - Intranet

162 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers L’opération de relaxation « relax ( x , v ) » dit si, oui ou non, le poids du sommet « v » est resté stable. fonction relax ( x , v ) si D ( x ) + M ( x , v ) < D ( v ) D ( v ) <- D ( x ) + M ( x , v ) ; P ( v ) <- x ; rendre ( FAUX ) ; sinon rendre ( VRAI ) ; 21 février 2006 Cours de graphes 2 - Intranet

163 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le code presque correct : pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; jusqua stable = VRAI ; 21 février 2006 Cours de graphes 2 - Intranet

164 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le code presque correct : pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; jusqua stable = VRAI ; La même initialisation ! 21 février 2006 Cours de graphes 2 - Intranet

165 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le code presque correct : pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; jusqua stable = VRAI ; La même initialisation ! Nous relaxons tout ! ! ! 21 février 2006 Cours de graphes 2 - Intranet

166 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Le code presque correct : pour tout u : D ( u ) <- +µ ; D ( s ) <- 0 ; pour tout u : P ( u ) <- ?? ; P ( s ) <- s ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; jusqua stable = VRAI ; La même initialisation ! Nous nous arrêtons lorsqu’aucun poids n’a pu être réduit au dernier passage ! Nous relaxons tout ! ! ! 21 février 2006 Cours de graphes 2 - Intranet

167 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifs revient à ne considérer que des chemins simples ! ! ! ! ! ! 21 février 2006 Cours de graphes 2 - Intranet

168 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifs revient à ne considérer que des chemins simples ! ! ! ! ! ! L’algorithme que nous avons construit s’arrête dans ces cas ! 21 février 2006 Cours de graphes 2 - Intranet

169 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifs revient à ne considérer que des chemins simples ! ! ! ! ! ! L’algorithme que nous avons construit s’arrête dans ces cas ! S’il y a des cycles de poids négatifs : le chemin le plus léger ne sera plus un chemin simple, l’algorithme va boucler ! 21 février 2006 Cours de graphes 2 - Intranet

170 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Calculer les plus courts chemins ou les chemins les plus légers avec des poids positifs revient à ne considérer que des chemins simples ! ! ! ! ! ! L’algorithme que nous avons construit s’arrête dans ces cas ! S’il y a des cycles de poids négatifs : le chemin le plus léger ne sera plus un chemin simple, l’algorithme va boucler ! Il faut un garde-fou : Pour « n » sommets, le chemin simple le plus long ne dépasse pas « n – 1 » étapes. 21 février 2006 Cours de graphes 2 - Intranet

171 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un code correct : . . . k <- 0 ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; k <- k + 1 ; jusqua stable = VRAI ou k > n – 1 si k > n – 1 Il y a des cycles de poids négatifs ; 21 février 2006 Cours de graphes 2 - Intranet

172 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un code correct : Nous comptons et limitons le nombre de tours de boucle ! . . . k <- 0 ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; k <- k + 1 ; jusqua stable = VRAI ou k > n – 1 si k > n – 1 Il y a des cycles de poids négatifs ; 21 février 2006 Cours de graphes 2 - Intranet

173 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers Un code correct : Nous comptons et limitons le nombre de tours de boucle ! . . . k <- 0 ; repeter stable <- VRAI ; pour tout u différent de s pour tout v qui est voisin de u stable <- stable & relax ( u , v ) ; k <- k + 1 ; jusqua stable = VRAI ou k > n – 1 si k > n – 1 Il y a des cycles de poids négatifs ; Si « k » atteint « n » c’est qu’il y a des boucles de poids négatifs ! 21 février 2006 Cours de graphes 2 - Intranet

174 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». 21 février 2006 Cours de graphes 2 - Intranet

175 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». Soit le chemin simple le plus léger de « s » vers « u » : avec f <= | V | - 1 et u = a . . . s a a 1 f f 21 février 2006 Cours de graphes 2 - Intranet

176 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». Soit le chemin simple le plus léger de « s » vers « u » : avec f <= | V | - 1 et u = a Après le i tour de boucle : D ( a ) = d ( s , a ) . . . . s a a 1 f f e i i 21 février 2006 Cours de graphes 2 - Intranet

177 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». Soit le chemin simple le plus léger de « s » vers « u » : avec f <= | V | - 1 et u = a Après le i tour de boucle : D ( a ) = d ( s , a ) . Trivial, pour i = 0 , c’est-à-dire pour « s » ! . . . s a a 1 f f e i i 21 février 2006 Cours de graphes 2 - Intranet

178 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». Soit le chemin simple le plus léger de « s » vers « u » : avec f <= | V | - 1 et u = a Après le i tour de boucle : D ( a ) = d ( s , a ) . Trivial, pour i = 0 , c’est-à-dire pour « s » ! Si c’est vrai pour « i », le i+1 tour calcule : D ( a ) = relax ( a , a ) = d ( s , a ) . . . s a a 1 f f e i i e i+1 i i+1 i+1 21 février 2006 Cours de graphes 2 - Intranet

179 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». Soit le chemin simple le plus léger de « s » vers « u » : avec f <= | V | - 1 et u = a Après le i tour de boucle : D ( a ) = d ( s , a ) . Trivial, pour i = 0 , c’est-à-dire pour « s » ! Si c’est vrai pour « i », le i+1 tour calcule : D ( a ) = relax ( a , a ) = d ( s , a ) Après le tour de boucle « f » : D ( u ) = D ( a ) = d ( s , a ) . . . s a a 1 f f e i i e i+1 i i+1 i+1 f f 21 février 2006 Cours de graphes 2 - Intranet

180 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction : La longueur d’aucun chemin simple n’excède « | V | - 1 ». Soit le chemin simple le plus léger de « s » vers « u » : avec f <= | V | - 1 et u = a Après le i tour de boucle : D ( a ) = d ( s , a ) . Trivial, pour i = 0 , c’est-à-dire pour « s » ! Si c’est vrai pour « i », le i+1 tour calcule : D ( a ) = relax ( a , a ) = d ( s , a ) Après le tour de boucle « f » : D ( u ) = D ( a ) = d ( s , a ) . . . s a a 1 f f e i i e i+1 i i+1 i+1 f f 21 février 2006 Cours de graphes 2 - Intranet

181 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction (suite) : Au bout de « | V | - 1 » itérations nous avons tous les chemins simples les plus légers ! 21 février 2006 Cours de graphes 2 - Intranet

182 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction (suite) : Au bout de « | V | - 1 » itérations nous avons tous les chemins simples les plus légers ! S’il y a encore des modifications de poids au-delà de cette itération, c’est qu’il existe des cycles de poids négatifs ! 21 février 2006 Cours de graphes 2 - Intranet

183 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction (suite) : Au bout de « | V | - 1 » itérations nous avons tous les chemins simples les plus légers ! S’il y a encore des modifications de poids au-delà de cette itération, c’est qu’il existe des cycles de poids négatifs ! La complexité : en présence de cycles de poids négatifs : Q ( | V | * | E | ) 21 février 2006 Cours de graphes 2 - Intranet

184 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction (suite) : Au bout de « | V | - 1 » itérations nous avons tous les chemins simples les plus légers ! S’il y a encore des modifications de poids au-delà de cette itération, c’est qu’il existe des cycles de poids négatifs ! La complexité : en présence de cycles de poids négatifs : Q ( | V | * | E | ) en l’absence de cycles de poids négatifs : Q ( D ( G ) * | E | ) 21 février 2006 Cours de graphes 2 - Intranet

185 Cours de graphes 2 - Intranet
Connexité – chemins les plus légers La preuve de correction (suite) : Au bout de « | V | - 1 » itérations nous avons tous les chemins simples les plus légers ! S’il y a encore des modifications de poids au-delà de cette itération, c’est qu’il existe des cycles de poids négatifs ! La complexité : en présence de cycles de poids négatifs : Q ( | V | * | E | ) en l’absence de cycles de poids négatifs : Q ( D ( G ) * | E | ) Le diamètre D ( G ) est la longueur du plus long chemin simple ! 21 février 2006 Cours de graphes 2 - Intranet

186 Synthèse -----------------------------------------------------------------
Les plus courts chemins, les chemins les plus légers : à l’aide de la vague, à l’aide de la multiplication, à l’aide de Floyd-Warshall. Algorithmes de Dijkstra et Bellmann-Ford. 21 février 2006 Cours de graphes 2 - Intranet

187 Cours de graphes 2 - Intranet
m E r C i e T O n N e J o U r N é E ! ! ! ‘ o U b L i E z P a S d E p R é P a R e R v O s T D ! ! ! 21 février 2006 Cours de graphes 2 - Intranet


Download ppt "Cours de graphes Les plus courts chemins,"
Ads by Google