Bloc1 : Théorie des graphes et problèmes d’ordonnancement Aide à la décision Bloc1 : Théorie des graphes et problèmes d’ordonnancement Séance 2 Mohamed Ali Aloulou aloulou@lamsade.dauphine.fr Une partie de ces transparents a été élaborée en se basant sur le document de Pierre Lopez, LAAS, Toulouse http://www.laas.fr/~lopez/cours/GRAPHES/graphes.html
Plan du cours Qu’est ce qu’on peut faire avec la théorie des graphes ? Concepts généraux en théorie des graphes Le problème du plus court chemin Problème central de l’ordonnancement http://www.lamsade.dauphine.fr/~aloulou/cours/L3STCF_Bloc1_Graphes.pdf
Le problème du plus court chemin Définition du problème Exemples de formulation avec pcch Principe d’optimalité et conditions d’existence Graphes sans circuit Graphes à valuations positives Algorithme de Moore-Dijkstra (1959) Graphes à valuations quelconques Contre-exemple Algorithme de Bellman-Ford
Le problème du plus court chemin Définition du problème Soit G=(X,U) un graphe sans boucle Pour tout arc u=(xi,xj)U on associe une valuation a(u) = aij : durée, distance ... La valeur d’un chemin : v() = a(u), u S A B C E D 6 1 2 3 -4
Le problème du plus court chemin Définition du problème On peut s’intéresser aux problème de plus court chemin (valeur min) de plus long chemin (valeur max) S A B C E D 6 1 2 3 -4
Le problème du plus court chemin Exemples Exemple 1 : Construire une autoroute entre deux villes A et K Arcs = tronçons possibles de l’autoroute Valuation des arcs peut être coût de réalisation correspondant longueur du trajet … A B C D E F H I J K G
Le problème du plus court chemin Exemples Exemple 2 : Chemin le plus fiable dans un réseau de télécommunication Arêtes = liens physiques Valuation des arêtes (i,j) est pij: fiabilité du lien (la probabilité pour que le lien fonctionne) La fiabilité d’un chemin est le produit des probabilités des liens qui le constituent Le problème devient un problème de pcch en remplaçant chaque probabilité par aij = - log pij
Le problème du plus court chemin Les 3 types de problèmes Recheche des chemins extrêmaux d’un sommet xk vers un sommet xj Recherche des chemins extrêmaux d’un sommet xk vers tous les autres sommets Recherche des chemins extrêmaux entre tout couple de sommets
Le problème du plus court chemin Principe d’optimalité aij = longueur de l’arc (i,j) si l’arc existe sinon + uj : longueur du pcch de l’origine 1 vers le sommet j Equations de Bellman u1 =0 uj = min {kj, uk + akj}
Le problème du plus court chemin Condition d’existence Condition d’existence Le graphe n’admet pas de circuit de longueur négative i j k w l(w)<0
Le problème du plus court chemin Graphes acycliques Un graphe est acyclique ssi il existe une numérotation des sommets telle qu’un arc existe entre i et j seulement si i < j Les équations de Bellman deviennent u1 =0 uj = min {k < j, uk + akj} -6 3 2 4 2 1 -4 1 2 1 6 5 3 9 3 5 6
Le problème du plus court chemin Graphes à valuations positives Algorithme de Dijkstra : plus court chemin de l’origine à tous les autres sommets Utilise des labels pour les sommets Les labels permanents représentent la valeur du pcch de l’origine jusqu’au sommet correspondant Les labels temporaires représentent une borne supérieure de ce pcch A chaque itération un label temporaire est transformé en label permanent
Le problème du plus court chemin Graphes à valuations positives Algorithme de Dijkstra Etape 0 u1 =0; uj =a1j, pour j=2,…, n P={1}, T={2, …, n} Etape 2 (Désignation du label permanent) Déterminer kT, tq uk=min{j T, uj} T=T\{k} et P=P{k} Si T=vide, stop Etape 3 (Révision des labels temporaires) uj=min{uj, uk+akj} pour tout j T Aller à l’étape 1
Le problème du plus court chemin Graphes à valuations positives Exemple A B D C E F H G 2 4 3 1 5 3
Le problème du plus court chemin Algorithme de Dijkstra et graphes à valuations quelconques 6 1 2 3 -4
Le problème du plus court chemin Graphes à valuations quelconques Algorithme de Bellman-Ford uj(m) = longueur du pcch de 1 vers j tel que le chemin ne contient pas plus que m arcs u1(1)= 0 uj(1) = a1j uj(m+1) = min{uj(m) , min{kj, uk(m) + akj}} Si le graphe ne contient pas de circuit de valeur négative alors uj = uj(n-1)
Le problème du plus court chemin Graphes à valuations quelconques Algorithme de Bellman-Ford Etape 0 u1(0)= 0, uj(0) = + pour tout j1, m:=0 Etape 1 (On modifie les marques à partir des marques de l’étaqe pécédente) Pour tout j1 uj(m+1) = min{uj(m) , min{kj, uk(m) + akj}} Etape 2 Si pour tout j, uj(m+1) = uj(m) alors FIN Sinon Si m<n-1 alors poser m:=m+1 et aller à l’étape 1 Sinon Si m=n-1, alors G admet au moins un circuit absorbant
Le problème du plus court chemin Graphes à valuations quelconques Plus court chemin entre tous les couples de sommets Algorithme matriciel de Floyd-Warshall