La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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


Télécharger ppt "Cours de graphes Les plus courts chemins,"

Présentations similaires


Annonces Google