Cours de graphes Les plus courts chemins,

Slides:



Advertisements
Présentations similaires
La recherche de chemin optimal
Advertisements

Théorie des graphes.
Présentation générale Marc Gengler
Algorithmes et structures de données avancées Cours 7
Algorithmes et structures de données avancés

UMLV 1 Problème G = (S, A) graphe (orienté) Calculer H = (S, B) où B est la clôture réflexive et transitive de A. Note : (s,t) B ssi il existe un chemin.
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 10 / Intranet 1 19 décembre 2006 Cours dAlgorithmique Logique de Hoare (fin) : Les boucles et les invariants.
Cours d’Algorithmique
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Cours d’Algorithmique
Problème des 4 couleurs, graphes planaires.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
18 octobre 2007Cours de compilation 7 - Intranet1 Cours de compilation Génération de code Optimisation de code.
Cours de graphes Problèmes de flots. Théorème du Max-flow – Min-cut.
Quelques applications.
Cours d’Algorithmique
Cours d’Algorithmique
Cours d'algorithmique 9 - Intranet 1 12 décembre 2006 Cours dAlgorithmique Logique de Hoare (début) : Principes et constructions élémentaires.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
Cours d'algorithmique 4 - Intranet 1 16 novembre 2006 Cours dAlgorithmique Lalgorithme alpha-beta. Sous-arbres alpha et beta dun arbre minimax et propriétés.
Cours d’Algorithmique
Cours d'algorithmique 11 / Intranet 1 9 janvier 2006 Cours dAlgorithmique N P - complétude.
Cours d'algorithmique 5 - Intranet 1 17/21 novembre 2006 Cours dAlgorithmique Divide and Conquer : principes et applications. Calculabilité.Complexité.
Cours de compilation 2 - Intranet
Cours de compilation Marc Gengler 18h de cours avec un peu de TD
21 septembre 2007Cours de compilation 2 - Intranet1 Cours de compilation Evaluation partielle etcompilation.
Marc Gengler
Analyse syntaxique (intro)
Cours d'algorithmique 8 - Intranet 1 4 décembre 2006 Cours dAlgorithmique Dérécursion (fin) : Équivalences entre programmes récursifs et programmes itératifs.
24 septembre 2007Cours de compilation 4 - Intranet1 Cours de compilation Techniques danalyse descendantes.
Cours d’Algorithmique
28 février 2006Cours de graphes 3 - Intranet1 Cours de graphes Les arbres et arborescences. Les arbres de recouvrement. Les arbres de recouvrement minimaux.
Mise à Niveau en Recherche Opérationnelle
Bloc1 : Théorie des graphes et problèmes d’ordonnancement
A.Faÿ 1 Recherche opérationnelle Résumé de cours.
Cours d’Algorithmique
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Cours d’Algorithmique
Problème des 4 couleurs, graphes planaires.
Quelques applications.
Quelques graphes particuliers.
Théorie des graphes Un peu de vocabulaire.
Cours de graphes Les arbres et arborescences.
16 mars 2007Cours de graphes 7 - Intranet1 Cours de graphes Problèmes NP-complets. Réductions polynômiales.
Algorithme de Bellman-Ford
Structures de données IFT-2000
Structures de données IFT-2000
Coloration gap sommet identifiante de graphes
7. Problème de flot à coût minimum.


Algorithmes d ’approximation
Recherche Opérationnelle
- GRAPHES - Composantes et types
Cours de graphes Marc Gengler Alexandra Bac Sébastien Fournier
21 février 2006Cours de graphes 2 - Intranet1 Cours de graphes Les plus courts chemins, les chemins les plus légers : à laide de la vague, à laide de la.
Cours de graphes 6 - Intranet
23 février 2007Cours de graphes 4 - Intranet1 Cours de graphes Problèmes de flots. Théorème du Max-flow – Min-cut. Algos de Ford-Fulkerson et Edmonds-Karp.
Programmation dynamique
Pour le chemin le plus court pour tous les couples
Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK.
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
LE FLOT MAXIMAL et LA COUPE MINIMALE
6. Problème de flot à coût minimum.

Sixième étape : pondérer les graphes. Longueur d’une chaîne d’un graphe quelconque = nombre des arêtes qui la constituent. Distance entre deux sommets.
CSI2510 Structures de données et algorithmes Plus court chemin
Transcription de la présentation:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 0 - étape 1 - étape 2 - étape 3 21 février 2006 Cours de graphes 2 - Intranet

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 0 - étape 1 - étape 2 - étape 3 21 février 2006 Cours de graphes 2 - Intranet

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 0 - étape 1 - étape 2 - étape 3 21 février 2006 Cours de graphes 2 - Intranet

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 0 - étape 1 - étape 2 - étape 3 21 février 2006 Cours de graphes 2 - Intranet

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 0 - étape 1 - étape 2 - étape 3 21 février 2006 Cours de graphes 2 - Intranet

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 0 - étape 1 - étape 2 - étape 3 21 février 2006 Cours de graphes 2 - Intranet

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 0 - étape 1 - étape 2 - étape 3 21 février 2006 Cours de graphes 2 - Intranet

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 0 - étape 1 - étape 2 - étape 3 21 février 2006 Cours de graphes 2 - Intranet

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 0 - étape 1 - étape 2 - étape 3 21 février 2006 Cours de graphes 2 - Intranet

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 0 - étape 1 - étape 2 - étape 3 21 février 2006 Cours de graphes 2 - Intranet

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 0 - étape 1 - étape 2 - étape 3 21 février 2006 Cours de graphes 2 - Intranet

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 0 µ µ µ P s ? ? ? 21 février 2006 Cours de graphes 2 - Intranet

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 0 µ µ µ P s ? ? ? / E <- E \ { s } 21 février 2006 Cours de graphes 2 - Intranet

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 0 µ µ µ P s ? ? ? / relax ( s , a ) E <- E \ { s } relax ( s , b ) 21 février 2006 Cours de graphes 2 - Intranet

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 0 µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) E s a b c D 0 10 20 µ P s s s ? / 21 février 2006 Cours de graphes 2 - Intranet

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 0 µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / E s a b c D 0 10 20 µ P s s s ? / E <- E \ { a } 21 février 2006 Cours de graphes 2 - Intranet

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 0 µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) E s a b c D 0 10 20 µ P s s s ? / / E <- E \ { a } relax ( a , b ) 21 février 2006 Cours de graphes 2 - Intranet

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 0 µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) E s a b c D 0 10 20 µ P s s s ? / / E <- E \ { a } relax ( a , b ) / E s a b c D 0 10 15 µ P s s a ? / 21 février 2006 Cours de graphes 2 - Intranet

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 0 µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / / E s a b c D 0 10 20 µ P s s s ? E <- E \ { a } relax ( a , b ) E s a b c D 0 10 15 µ P s s a ? / / / E <- E \ { b } 21 février 2006 Cours de graphes 2 - Intranet

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 0 µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / / E s a b c D 0 10 20 µ P s s s ? E <- E \ { a } relax ( a , b ) E s a b c D 0 10 15 23 P s s a b / / / E <- E \ { b } relax ( b , c ) 21 février 2006 Cours de graphes 2 - Intranet

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 0 µ µ µ P s ? ? ? relax ( s , a ) E <- E \ { s } relax ( s , b ) / / E s a b c D 0 10 20 µ P s s s ? E <- E \ { a } relax ( a , b ) E s a b c D 0 10 15 23 P s s a b / / / / E <- E \ { b } relax ( b , c ) E <- E \ { c } 21 février 2006 Cours de graphes 2 - Intranet

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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