540 likes | 695 Views
Mise à Niveau en Recherche Opérationnelle. Première partie Théorie des graphes Mohamed Ali Aloulou aloulou@lamsade.dauphine.fr Ce transparents ont été élaborés en se basant sur le document de Pierre Lopez, LAAS, Toulouse http://www.laas.fr/~lopez/cours/GRAPHES/graphes.html.
E N D
Mise à Niveau en Recherche Opérationnelle Première partie Théorie des graphes Mohamed Ali Aloulou aloulou@lamsade.dauphine.fr Ce transparents ont été élaborés en se basant sur le document de Pierre Lopez, LAAS, Toulousehttp://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 • Flots et réseaux de transports http://www.laas.fr/~lopez/cours/GRAPHES/graphes.html
Pourquoi la théorie des graphes ? • Modélisation • Plusieurs problèmes dans différentes disciplines (chimie, biologie, sciences sociales, applications industrielles, …) • Un graphe peut représenter simplement la structure, les connexions, les cheminements possibles d’un ensemble complexe comprenant un grand nombre de situations • Un graphe est une structure de données puissante pour l’informatique Exemples
Concepts généraux en théorie des graphes • Définitions • Représentations d’un graphe • Coloration des sommets d’un graphe • Connexité dans les graphes • Graphes particuliers
Concepts généraux en théorie des graphesDéfinitions • Concepts orientés • Un graphe G(X,U) est déterminé par • Un ensemble X={x1,…,xn} de sommets • Un ensemble U={u1, …, um} du produit cartésien X×X d’arcs. • Un p-graphe : pas plus que p arcs (xi,xj) Arc u=(xi,xj) boucle 3-graphe 1-graphe = graphe
Concepts généraux en théorie des graphesDéfinitions • Graphes et applications multivoques • xj est successeur de xi si (xi,xj)U • L’ensemble des successeurs de xi est noté (xi) • L’ensemble des prédécesseurs de xi est noté -1(xi) • est appelée une application multivoque • Pour un 1-graphe, G peut être parfaitement déterminé (ou caractérisé) par (X,)
Concepts généraux en théorie des graphesDéfinitions • Concepts non orientés • On s’intéresse à l’existence d’arcs entre deux sommets sans en préciser l’ordre • Arc = arête • U est constitué de paires non pas de couples • Multigraphe : plusieurs arêtes entre deux sommets • Graphe simple = non multigraphe + pas de boucles
Concepts généraux en théorie des graphesDéfinitions • D’autres définitions : Voir http://www.laas.fr/~lopez/cours/GRAPHES/graphes.html • Adjacence, degrés, Graphe complémentaire, partiel, sous graphe, sous graphe partiel • Graphe réflexif, irréflexif, symétrique, antisymétrique, transitif, complet … définitions
Concepts généraux en théorie des graphesReprésentations d’un graphe • Matrice d’adjacence Place mémoire : n² Pour un graphe numérisé : remplacer 1 par la valeur de l’arc
Concepts généraux en théorie des graphesReprésentations d’un graphe • Matrice d’incidence sommets-arcs Place mémoire : n x m
Concepts généraux en théorie des graphesReprésentations d’un graphe • Listes d’adjacence Place mémoire : n+1+m
Concepts généraux en théorie des graphesColoration d’un graphe
Concepts généraux en théorie des graphesColoration d’un graphe
Concepts généraux en théorie des graphesConnexité dans les graphes • Chaîne – Cycle • Chemin – Circuit
Concepts généraux en théorie des graphesConnexité dans les graphes • Le terme parcours regroupe les chemins, les chaînes, les circuits et les cycles • Un parcours peut être • élémentaire : tous les sommets sont distincts • simple : tous les arcs sont distincts • hamiltonien : passe une fois et une seule par chaque sommet • eulérien : passe une fois et une seule par chaque arc • préhamiltonien : ou moins une fois par chaque sommet • préeulérien : au moins une fois par chaque arc
Concepts généraux en théorie des graphesConnexité dans les graphes • Exemple • Le problème du voyageur de commerce : un voyageur de commerce doit visiter n villes données en passant par chaque ville exactement une fois et doit revenir à la ville de départ. • Trouver un circuit hamiltonien de coût minimal dans un graphe valué
Concepts généraux en théorie des graphesConnexité dans les graphes • Connexité
Concepts généraux en théorie des graphesConnexité dans les graphes • Forte connexité
Concepts généraux en théorie des graphes Graphes particuliers • Graphes sans circuit • Décomposition en niveaux • Graphe biparti • Graphe planaire • Hypergraphe • Arbre • Forêt • Arborescence
Le problème du plus court chemin • Définition • 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
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
Le problème du plus court cheminPrincipe 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}
j k w l(w)<0 i Le problème du plus court cheminCondition d’existence • Condition d’existence Le graphe n’admet pas de circuit de longueur négative
Le problème du plus court cheminGraphes 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 -4 1 1 2 1 6 5 3 9 3 5 6
Le problème du plus court cheminGraphes à 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 cheminGraphes à 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
4 B E 2 2 5 4 3 A D F H 2 2 3 2 1 G C Le problème du plus court cheminGraphes à valuations positives • Exemple 3
1 A C 6 2 S E 2 -4 2 3 3 D B Le problème du plus court cheminAlgorithme de Dijkstra et graphes à valuations quelconques
Le problème du plus court cheminGraphes à 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 cheminGraphes à valuations quelconques • Plus court chemin entre tous les couples de sommets • Algorithme matriciel de Floyd-Warshall
6 8 D E F 4 1 4 G J O 1 4 1 0 6 4 2 H A B C Début Fin 1 6 N 0 4 8 6 L M K 2 4 I 8 NIVEAU : 1 O 7 2 3 4 5 6 Le problème central de l’ordonnancementModélisation Le niveau d’une tâche X est le plus grand nombre d’arc sur un chemin entre Début et X
Le problème central de l’ordonnancementDates de début au plus tôt • La date début au plus tôt dptôt(i) d’une tâche i = longueur du plus long chemin de la tâche Début (ou 0) à i • Formule de récurrence • dptôt(i)=maxjPred(i)(dptôt(j)+durée(j)) • dptôt(0)=0
Le problème central de l’ordonnancementDates de fin au plus tard • On souhaite terminer le projet au plus tard à la date D=dptôt(n+1) • Date de début au plus tard de i = Date maximum à laquelle on peut exécuter i sans retarder le chantier • Longueur du plus long chemin de i à Fin (ou n+1) • Formule de récurrence • dptard(n+1)=D • dptard(i)=minjSucc(i)dptard(j)-durée(i)
Le problème central de l’ordonnancementMarges, chemin critique • La marge totale d’une tâche i est le retard total qu’on peut se permettre sur i sans remettre en cause la date de fin du projet • MT(i)=dptard(i)-dptôt(i). • Les tâches critiques ont une marge nulle. Tout retard sur leur exécution entraîne un retard global sur le projet • Un chemin est critique s’il relie Début à Fin et s’il ne contient que des tâches critiques
Flots dans les réseaux • Définition : Un flot dans un graphe G=(X,U) est un vecteur =[1,2,…,m]m tel que • La quantité de flot ou flux sur l’arc j j 0, pour tout j =1,…, m • Pour tout sommet xX, la 1ère loi de Kirchhoff est vérifiée
Flots dans les réseauxFlot dans un réseau de transport • On dit que le vecteur =[1,2,…,m] est flot de E à S dans G ssi la loi de Kirshhoff est vérifiée en tout sommet de G sauf pour E et S où on a • Donc, si =[1,2,…,m] est un flot dans G alors ’=[0,1,2,…,m] est un flot dans G0 • ’=[0,1,2,…,m] est un flot admissible dans G0 ssi pour tout j=0,…,m, b(j)jk(j)
a [0,10] [0,20] [0,30] 1 [0,15] [0,45] [0,5] [0,10] b [0,25] E 2 S [0,20] [0,5] [0,25] c [0,10] 3 [0,20] [0,30] [0,10] d Flots dans les réseauxFlot dans un réseau de transport • On veut acheminer un produit à partir de 3 entrepôts (1,2,3) vers 4 clients (a,b,c,d) • Quantités en stock : 45, 25, 25 • Demande des clients : 30,10, 20, 30 • Limitations en matière de transport d’un entrepôt à un client
a [0,10], 10 1 [0,20], 15 [0,30], 25 [0,15], 5 [0,45], 35 [0,10], 10 b [0,5], 5 [0,25], 25 E 2 S [0,20], 15 [0,5], 5 [0,25], 20 c [0,10], 10 3 [0,20], 20 [0,30], 30 [0,10], 10 d Flots dans les réseauxExemple de flot Valeur du flot = 80 Ce flot est un flot complet, c-à-d, tout chemin de E à S comporte au moins un arc saturé
Flots dans les réseauxQuelques problèmes qui se posent • Détermination d’un flot réalisable ou compatible : c’est le cas où il existe des arcs u tels que b(u)>0 • Détermination d’un flot maximum • Un flot complet n’est pas forcément maximum • Un flot maximum est forcément complet • Détermination d’un flot maximum de coût minimum
Flots dans les réseaux Détermination d’un flot maximum • Principe de l’algorithme de Ford-Fulkerson • Construire un flot complet • Améliorer itérativement ce flot • Construire un flot complet • Examiner tous les chemins de E à S de façon systématique • Pour chaque chemin faire passer un flot égal à la capacité résiduelle minimale de ce chemin
Flots dans les réseaux Détermination d’un flot maximum • Améliorer itérativement ce flot • Graphe d’écart : Soit un flot admissible sur G. Le graphe d’écart Ge()=(X, Üe()) est tel que • Pour tout arc jU on associe deux arcs dans Üe() • j+ de même sens que j et de capacité résiduelle k+(j)=k(j)- j • j- de sens opposé que j et de capacité k-(j)=j-b(j)
a [0,10], 10 [0,30], 25 [0,20], 15 1 [0,45], 35 [0,15], 5 [0,10], 10 [0,5], 5 b [0,25], 25 E 2 S [0,5], 5 c [0,20], 15 [0,10], 10 [0,25], 20 3 [0,20], 20 [0,30], 30 [0,10], 10 d 25 10 a 15 5 5 10 1 10 35 5 b 10 25 5 5 E 2 S 5 15 5 c 10 20 20 3 30 10 d Un flot complet Graphe d’écart
Flots dans les réseaux Détermination d’un flot maximum • Améliorer itérativement ce flot • Théorème : Un flot compatible est maximal ssi il n’existe pas de chemin de E à S dans Ge(). • Principe de l’amélioration • Chercher un chemin de E à S dans Ge() • Soit la plus petite capacité de • Pour j+ de , augmenter j de • Pour j- de , diminuer j de
30 20 5 5 0 0 40 10 0 5 Flots dans les réseaux Détermination d’un flot maximum 25 10 a 15 5 5 10 1 10 35 5 b 10 25 5 5 E 2 S 5 15 5 c 10 20 20 3 30 10 d Valeur du flot = 85 Capacité minimale = 5
Exemples En 1736, Euler a montré que c’est impossible !! retour