840 likes | 2.1k Views
Théorie des graphes. Plan du cours. Que peut-on faire avec la théorie des graphes ? Concepts généraux en théorie des graphes 2. Le problème du plus court chemin 3. Flots et réseaux de transport. Le problème du plus court chemin. Définition Exemples de formulation avec pcch
E N D
Plan du cours • Que peut-on faire avec la théorie des graphes ? Concepts généraux en théorie des graphes 2. Le problème du plus court chemin 3. Flots et réseaux de transport
Le problème du plus court chemin • Définition • Exemples de formulation avec pcch • Graphes sans circuit • Graphes à valuations quelconques - Algorithme de Ford - Algorithme de Bellman-Kalaba • Graphes à valuations positives • Algorithme de Moore-Dijkstra (1959)
Graphe orienté valué Un graphe orienté valuéG est défini par : • Un ensemble de sommetsX. • Un ensemble d’arcsU X2. • Une valuationV : U R qui à chaque arc du graphe associe une valeur réelle (longueur, poids..).
Exemple de graphe orienté valué 7 a d 4 2 3 f 1 4 3 e 5 1 c b
B E H C F I K A G J D 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 • …
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 Exemples • Exemple 3 : Problème de sac à dos • Un sac à dos de capacité b • n objets j=1…n • aj : poids de l’objet j • pj : profit de l’objet j • Objectif : déterminer un sous ensemble d’objets de profit maximal respectant la capacité du sac. • Maximiser j pjxj • s.c. • j aj xj b • avec xij = 1 si l’objet est choisi et 0 sinon
Le problème du plus court chemin Exemples • Exemple 3 : Problème de sac à dos • n(b+1) sommets notés j(k), j=1,2,…,n et k=0,1,…,b • Un sommet origine s et un sommet destination t • Un sommet j(k) a deux arcs entrants (s’ils existent): • Un arc de (j-1)(k) valué par 0 • Un arc de (j-1)(k-aj) valué par pj • Deux arcs de s vers 1(0) et 1(a1) valués par 0 et p1 • Un arc de valuation 0 entre chaque sommet n(k) et t • Un chemin de s à j(k) correspond a un sous ensemble des j premiers objets dont le poids total est égal à k. La longueur du chemin est la valeur du sous ensemble
Chemin de poids minimal Algorithme de Ford Initialisation λ1 = 0 ; j ≠1λj= +∞ λj= λi+ wij • (xi , xj) U : λj > λi + wij FIN OUI NON
Chemin de poids maximal Algorithme de Ford Initialisation λ1 = 0 ; j ≠1λj= - ∞ λj= λi+ wij • (xi , xj) U : λj < λi + wij FIN OUI NON
Chemin de poids minimal Algorithme de Bellman-Kalaba Initialisation k = 0 λ1(k)= 0 ; j ≠ 1λj(k)= +∞ k = k + 1 λ1(k) = 0 ; j ≠ 1λj(k)= min {λi(k-1) + wij } • xj X : λj (k) ≠λj(k-1) FIN NON OUI
Chemin de poids maximal Algorithme de Bellman-Kalaba Initialisation k = 0 λ1(k)= 0 ; j ≠ 1λj(k)= - ∞ k = k + 1 λ1(k) = 0 ; j ≠ 1λj(k)= max {λi(k-1) + wij } • xj X : λj (k) ≠λj(k-1) FIN NON OUI
Algorithme de Dijkstra • détermine les plus courts chemins d'un sommet x1 à tous les autres sommets d'un graphe G= (X,U). Il suppose que les longueurs sur les arcs sont positives ou nulles. L'idée de cet algorithme est de partager les sommets en deux groupes: ceux dont on connaît la distance la plus courte au sommet x1 (ensemble D) et ceux dont on ne connaît pas cette distance. On part avec x1 dans D et tous les autres sommets n’appartenant pas à D. Tous les sommets ont une distance infinie (p(x) = +oo) avec le point x1, excepté le point x1 lui-même qui a une distance nulle (p(x1) = 0). A chaque itération, on choisit le sommet x qui a la plus petite distance au sommet x1 . Ce sommet est déplacé dans D. Ensuite, pour chaque successeur y de x, on regarde si la distance la plus courte connue jusque là entre x1 et y ne peut pas être améliorée en passant par x. Si c'est le cas, p(y) est modifiée. Ensuite, on recommence avec un autre sommet.
Chemin de poids minimal Algorithme de Dijkstra Initialisation D = { x1 } ; λ1 = 0 ; j ≠ 1λj= w1j λk= min λj xj D D = D { xk } ; λj= min {λj , λk + wkj } xj D xn D FIN NON OUI
Chemin de poids minimal Obtention du chemin à partir des poids minimaux Initialisation xk = xn ; C = ( xn ) Chercher xj X : λk= λj + wjk xk = xj C = ( xk , C ) xk = x1 FIN NON OUI