Telechargé par c.asti.e.lvi.n.ce.nt369

01 Cours complet RO

publicité
Recherche Opérationnelle
Enseignants: Dr. Sameh NAJEH
Dr. Zouheir BEN JEMAA
2017-2018
1
Un peu d’Histoire (1/2)
 En 1781: Gaspard Monge est le premier à inventer le problème, popularisé sous le
nom de « Brouette de Monge » qui le premier exemple historique de recherche
opérationnelle.
« Dès le XVIIIe siècle, Gaspard Monge, dans son
mémoire sur la théorie des déblais et des remblais,
étudiait un problème des plus concrets (déplacer au
mieux un tas de sable !) en lui appliquant une
méthode rigoureuse, « optimale » dirions-nous
aujourd'hui. On parle de « recherche opérationnelle »
pour désigner les méthodes qui permettent ainsi de
traiter de manière systématique et efficace des
problèmes combinatoires. Une théorie encore très
vivace aujourd'hui ! » (interstices.info, publié le
15/02/2007).
2016/2017
2
Un peu d’Histoire (2/2)
 En 1935: Leonid Kantorovich: un des quelques
mathématiciens lauréats du prix Nobel d'économie, il a
repris les travaux de Gaspard Monge, en découvrant
la programmation linéaire, l’optimisation linéaire et ses
applications à l'optimisation de la production économique
planifiée.
 En 1958: Claude Berge contribue notamment au
développement de la théorie des graphes et de l’analyse
combinatoire, et crée la notion de graphe parfait.
2016/2017
3
Plan du cours
Partie I : Programmation Linéaire
1.
2.
3.
4.
5.
Introduction à la programmation linéaire.
Théorie de la programmation linéaire.
Algorithme primal du simplexe à une ou deux phases.
Dualité en PL.
Etude de sensibilité et techniques de post-optimisation.
Partie II: Théorie des graphes
1.
2.
3.
Eléments de la théorie des graphes.
Problèmes d’arbre couvrant de poids minimum et de plus court
chemin.
Problème d’ordonnancement et de gestion de projet.
2016/2017
4
Introduction à la RO
Recherche Opérationnelle (RO)
 Approche scientifique à la prise des décisions, qui cherche à
déterminer comment concevoir et faire fonctionner un système
d’une façon optimale.
 Champs d’application:
- Industrie
- Gouvernement
- Agences
- Hôpitaux
- Institutions d’éducation…
2016/2017
5
Introduction à la RO

Méthodologie de la RO
Identification
du problème
Formulation &
Implémentation
du modèle
Analyse
Modele
Test
Implement
de la
Solution
Résultat non
optimal
2016/2017
6
Objectif du module:
 La programmation linéaire (PL) est un des domaines les plus utilisés de la RO.
 La (PL) permet de traiter un vaste ensemble de problèmes d’optimisation dans
des contextes divers comme: la gestion de stocks, flux de transport, distribution de
tâches à des personnels, recherche de plans de fabrication etc. . . La modélisation de
ces problèmes débouche sur des équations ou inéquations linéaires (exprimant les
différentes contraintes) dont on cherche les solutions permettant d’optimiser une
fonction économique elle-même linéaire.
N.B: 1. De plus on supposera que les variables considérées sont astreintes à être
positives (contraintes de positivité).
2. On appelle une telle formulation un programme linéaire (PL).
2016/2017
7
Partie 1: Programmation Linéaire
2016/2017
8
Chapitre 1: Introduction à la PL

Exemple: Une compagnie est spécialisée dans la production de deux types de
produits : des climatiseurs et des ventilateurs. Le tableau suivant donne les
informations nécessaires à la fabrication d’une unité de chacun de ces produits,
ainsi que le profit généré par la production d’une unité de ce produit. Le tableau
nous donne aussi le nombre total d’heures machines et d’heures main d’œuvre
disponibles.
Heures machine
Main d’œuvre
Profit
Climatiseur
2 h/unité
3 h/unité
25 Dinars/unité
Ventilateur
2 h/unité
1 h/unité
15 Dinars/unité
Total disponible
240 h
140 h
Objectif : Maximiser le profit
2016/2017
9
Chapitre 1: Introduction à la PL
Formulation du programme linéaire
1.a Variables de décision :
Les variables de décision doivent complètement décrire les décisions à prendre.
x1 = nombre de climatiseurs
x2 = nombre de ventilateurs
1.b Fonction objectif : La fonction objectif s’écrit
Max Z = 25x1 + 15x2
2016/2017
10
Chapitre 1: Introduction à la PL
Contraintes du modèle:
- Contraintes heure machine:
- Contrainte main d’œuvre:
- Contraintes de non-négativité:
2x1 + 2x2 ≤ 240
3x1 + x2 ≤ 140
x1 ≥ 0, x2 ≥ 0
Formulation mathématique du problème:
Max Z = 25 x1 + 15 x2
s.c. 2x1 + 2x2 ≤ 240
3x1 + x2 ≤ 140
x1 ≥ 0, x2 ≥ 0
2016/2017
11
Chapitre 1: Introduction à la PL
Terminologie
 Les variables x1, x2.,..xn sont appelées variables de décision du problème.
 f0 est une application linéaire à optimiser appelée fonction objectif ou
fonction coût: Max (ou Min): f0(x1, x2, …, xn) = f0(x), où: x= (x1, .., xn)
 Les contraintes prennent la forme d’équations et d’inéquations linéaires.
f1(x1, x2, …, xn)b1
Sous-contraintes (s/c)
:
fk(x1, x2, …, xn) bk
:
f m(x1, x2, …, xn) = bm
 Remarque: Si toutes les fonctions fk sont linéaires alors le problème est
dit: Problème Linéaire (PL)
2016/2017
12
Chapitre 1: Introduction à la PL
Terminologie
 Une solution est une affectation de valeurs aux variables du
problème.
 Une solution est admissible si elle satisfait toutes les contraintes
du problème.
 La valeur d’une solution est la valeur de la fonction objectif dans
cette solution.
 Le domaine admissible D d’un PL est l’ensemble des solutions
admissibles du problème.
 La solution optimale d’un PL (si elle existe) est formée des
valeurs optimales des variables du problème et de la valeur associée
de la fonction objectif.
2016/2017
13
Chapitre 1: Introduction à la PL
 Méthode de la résolution d’un PL
Deux méthodes sont utilisées dans la littérature:
1.
Résolution par la méthode graphique (résolution graphique)
2.
Résolution par la méthode du simplexe

Résultat d’une optimisation linéaire:
Le domaine admissible d’un PL peut être:
1. Vide: Dans ce cas le problème est sans solution admissible, et ainsi ne
possède pas de solution optimale.
2. Borné et non vide: Le problème possède toujours au moins une solution
optimale , quelle que soit la fonction objectif.
2016/2017
14
Chapitre 1: Introduction à la PL
3. Non bornée: Selon la fonction objectif choisie:
 Le problème peut posséder des solutions optimales.
 Il peut exister des solutions admissibles de valeur arbitrairement grande (ou
petite). Dans un tel cas le PL n’admet pas de solution optimale finie et est dit
non borné.
2016/2017
15
Chapitre 1: Introduction à la PL

Résolution par la méthode graphique:
1.
Représenter les lignes de niveau de la fonction objectif: sont des droites parallèles dans
IR2.
2.
Il existe des solutions admissibles de valeur Z si la ligne de niveau associée à cette
valeur appartient au domaine admissible D du problème.
3.
Pour déterminer la valeur maximale atteignable par une solution admissible, il suffit de
faire glisser le plus loin possible une ligne de niveau de la fonction objectif, dans le sens
du gradient jusqu’à ce que qu’elle touche encore tout juste D.
4.
Les points de contact ainsi obtenus correspondent aux solutions optimales du PL.
2016/2017
16
Chapitre 1: Introduction à la PL
 Application 1:
Max Z = 25 x1 + 15 x2
2x1 + 2x2 ≤ 240
s/c: 3x1 + x2 ≤ 140
x1 ≥ 0, x2 ≥ 0
 1ère étape :Déterminer les solutions admissibles
140
x2
3x1  x2  140
120
2 x1  2 x2  240
Domaine admissible 140/3
2016/2017
120
x1
17
Chapitre 1: Introduction à la PL
2ème étape : Représenter les lignes de niveau
(PL) : Max Z = 25x1 + 15x2
x2
Solution optimale
 L’équation Z = 25x1 + 15x2:
Equation des lignes de niveau,
représentées par des droites de pente
-5/3, appelées aussi ligne d’isoprofit
ou isocoût.
Z
opt
 25 x1  15 x2
Z 2  25 x1  15 x2
x1
Z1  25 x1  15 x2
2016/2017
18
Chapitre 1: Introduction à la PL
3ème étape : Déduire la solution optimale
x2
{B} = D1 ∩ D2,
Solution optimale
D2: 3x1 + x2 = 140
B
3x1  x2  140
Z
où: D1: 2x1 + 2x2 = 240
opt
 25 x1  15 x2
Donc: La solution optimale est donnée
par: x*1=10, x*2=110 et Zopt=1900.
x1
2 x1  2 x2  240
2016/2017
19
Chapitre 1: Introduction à la PL
 Application 2:
 PL non borné
Max Z = x1 + 2x2
7x1+2x2 ≥ 28
s/c:
x1 + 6x2 ≥ 12
Z1  x1  2x2
Z 2  x1  2x2
x1 ≥ 0, x2 ≥ 0
20
2016/2017
Chapitre 1: Introduction à la PL
 Application 3:
 PL a une infinité de solutions optimales
Max Z = x1 + 3x2
2x1+6x2 ≤ 30 (1)
s/c: x1 ≤ 10
(2)
x2 ≤ 4
(3)
x1 ≥ 0, x2 ≥ 0
(3) (1)
Solutions
(2)
Z=Zopt
L’ensemble des solutions optimales est un segment
2016/2017
Z=Z1
Z=0
21
Chapitre 1: Introduction à la PL
 Application 4:
 PL non réalisable
Max Z = 3x1 + 2x2
x1+2x2 ≤ 2
(1)
s/c: 2x1 + 4x2 ≥ 8 (2)
x1 ≥ 0, x2 ≥ 0
(2)
(1)
Domaine réalisable vide donc PL non réalisable
2016/2017
22
Chapitre 1: Introduction à la PL
 PL sous sa forme standard
Un PL est sous sa forme standard si:

toutes les contraintes sont des égalités

toutes les variables sont non négatives ( xi ≥ 0)
MaxZ = c1x1 + c2x2 + … + cnxn
a11x1 + a12x2 + … + a1nxn = b1
s/c :
:
am1x1 + am2x2 + … + amnxn = bn
Ecriture
Max Z = cx
Matricielle
s/c: Ax=b
X≥0
x1, x2, ….,xn ≥0
2016/2017
23
Chapitre 1: Introduction à la PL
 PL sous sa forme canonique
Un PL est sous sa forme canonique si:

toutes les contraintes sont des inégalités ()

toutes les variables sont non négatives ( xi ≥ 0)
Max Z = (c1x1 + c2x2 + … + cnxn)
a11x1 + a12x2 + … + a1nxn  b1
s/c :
Ecriture
:
am1x1 + am2x2 + … + amnxn  bn Matricielle
Max Z = cX
s/c: Ax  b
x≥0
x1, x2, ….,xn ≥0
2016/2017
24
Chapitre 1: Introduction à la PL
 Règles de transformation
 Minimisation
Maximisation:
min f(x) = - max(-f(x))
Exemple: pour minimiser f(x) = cx, on maximise g(x) = (- c)x et
multiplier la solution optimale de g par -1 pour obtenir celle de f.
 Inéquation ()
Inéquation ()
Ax  b
 Equation
- Ax  - b
Inéquation ()
Ax  b
 Ax  b
Ax  b  

 Ax   b
 Ax  b
2016/2017
25
Chapitre 1: Introduction à la PL
 Règles de transformation
 Inéquation
surplus)
équation: On ajoute une variable d’écart (de
 Ax  b  Ax  s  b , s  0

 Ax  b  Ax  s  b , s  0
 Variables libre (réelle)
variable non négative: tout nombre réel
peut être écrit comme la différence de deux nombres non négatifs:
x  x  x
x  IR    
 x ,x  0
2016/2017
26
Chapitre 1: Introduction à la PL
Exemple: Mise sous forme standard
Max Z = 25 x1 + 15 x2
s.c. x1 - 2x2 +4x3≤ 12
-x1 + 4x2 +x3≥ 4
3x1 + x2 +x3≥ 2
x1, x 2, x 3 ≥ 0
On note:
Max Z = 25 x1 + 15 x2
s.c. x1 - 2x2 +4x3+ s1=12
-x1 + 4x2 +x3-s2 =4
3x1 + x2 +x3-s3= 2
x1, x2 , x3 , s1, s2, s3 ≥ 0
Max Z = 25 x1 + 15 x2
s.c. x1 - 2x2 +4x3+ x4=12
-x1 + 4x2 +x3-x5 =4
3x1 + x2 +x3-x6=2
x1,x2 … x6 ≥ 0
2016/2017
x1,..x3: variables directes
X4,…x6: variables d’écarts
27
Chapitre 2: Théorie de la programmation linéaire
Ensemble convexe :
Un ensemble S  IRn est convexe si pour tout x,y  S, et tout [0,1],
on a: x + (1-)y  S
x

y
x
y
Ensemble convexe
Ensemble non convexe
Exercice: Soit x et y  IRn. Montrer que l’ensemble:
{z= x + (1-)y [0,1]}, est le segment [x,y]
2016/2017
28
Chapitre 2: Théorie de la programmation linéaire
Combinaison convexe des vecteurs x1,…xk,
Soient x1,…xk des vecteurs de IRn et soient 1,…, k des scalaires non négatifs
tels que: i = 1.
Le vecteur: y = i=1,…k  ixi est une combinaison convexe des vecteurs x1,…xk.
Enveloppe convexe:
Soient x1,…xk des vecteurs de IRn.
L’enveloppe convexe des vecteurs x1,…xk est l’ensemble de toutes les
combinaisons convexes de ces vecteurs.
Théorème :L’enveloppe convexe d’un nombre fini de vecteurs est un
ensemble convexe.
Preuve: En exercice
2016/2017
29
Chapitre 2: Théorie de la programmation
linéaire

Définitions :
 Un polyèdre est un ensemble qui peut être décrit comme
P={ x=(x1,..xn)  IRn | aix bi, i = 1,..m}
={x  IRn | Ax  b}
Exercice: Montrer qu’un polyèdre est un ensemble convexe.

Un polyèdre P est dit borné si il existe une constante c > 0
telle que ||x||  c pour tout x  P.

Un polyèdre borné est appelé polytope.
Le domaine admissible d’un programme linéaire est un polyèdre
(donc convexe).
2016/2017
30
Chapitre 2: Théorie de la programmation linéaire

Exemples de polyèdre:
Polytope: Polyèdre
Borné
Polyèdre non borné
2016/2017
31
Chapitre 2: Théorie de la programmation linéaire
Point extrême d’un ensemble convexe
Point extrême: Soit C  IRn un ensemble convexe. Un point x* de C est un point
extrême de C si x* ne se trouve à l’intérieur d’aucun segment de C non réduit à un
point. Autrement dit, x* est un point extrême de C si pour tout x1 et x2  C et  
]0,1[ tel que: x*= x1+(1- )x2 alors: x* =x1= x2
z
x n’est pas un
point extrême
z est un point
extrême
x
2016/2017
32
Chapitre 2: Théorie de la programmation linéaire
Points extrêmes et sommets
Soit P un polyèdre. Un vecteur x  P est un sommet de P s’il existe c tel que
cTx < cTy pour tout y dans P différent de x.
C’est-à-dire soit K= cTx, l’hyperplan cTy=K coupe le polyèdre P seulement
en x
x
x n’est pas un sommet
S
S est un sommet
Pour un polyèdre, S est un sommet ssi S est un point extrême.
2016/2017
33
Chapitre 2: Théorie de la programmation linéaire
Définitions :
Soient a un vecteur non nul de IRn et b un scalaire.
 L’ensemble : {x  IRn | aTx=b} est appelé un hyperplan.
 L’ensemble: {x  IRn | aTx  b} est appelé un demi-espace.
Propriétés:
Un hyperplan est la frontière du demi-espace correspondant.

Le vecteur a est perpendiculaire à l’hyperplan qu’il définit

(Exercice).
T
a a x>b
a Tx < b
a Tx > b
a Tx < b
2016/2017
H
34
Chapitre 2: Théorie de la programmation linéaire
Max z=cT x
s.c. Ax = b
x≥0
A est une matrice mxn (m<n) et de rang m (pas de contrainte inutile)
• On appelle Base une sous matrice régulière de A.
• Une solution de base est obtenue en posant n − m variables
égales à 0, et en résolvant pour les m variables restantes, qui
sont les variables de base (VB).
• Les n−m variables égales à 0 sont les variables hors base
(VHB).
2016/2017
35
Chapitre 2: Théorie de la programmation linéaire
Représentation matricielle
xB
A = [B | H] ,
x=
,
cT = [cTB| cTH]
xH
Ce qui donne
Z = cT x = cTB xB + cTH xH
Ax = b  B xB + H xH = b
 Une solution de base est telle que: xH = 0 , BxB = b, xB = B−1b
2016/2017
36
Chapitre 2: Théorie de la programmation linéaire
Solutions de base réalisables
 Une solution de base est dite réalisable (SBR) si :
xB = B−1b ≥ 0
 Si le vecteur xB contient des termes nuls, on dira que cette solution
est une solution de base dégénérée (peut être associée à plus
qu’une base).
2016/2017
37
Chapitre 2: Théorie de la programmation linéaire
Solutions de base réalisables-Exemple
Soit le problème : Max x1 + 2x2
s.c.
x1 + 2x2 ≤ 4
2x1 + x2 ≤ 5
x1 , x2 ≥ 0
Sous forme standard, on a:
Max x1 + 2x2
s.c x1 + 2x2 + x3 = 4
2x1 + x2 + x4 = 5
x1 , x2 , x3 , x4 ≥ 0
 4 variables (n=4) et 2 contraintes (m=2)
2016/2017
38
Chapitre 2: Théorie de la programmation linéaire
Solutions de base réalisables-Exemple
A=
1
2
1
0
2
1
0
1
xB = x 1 ,
x3
B = [A1A3] = 1
2
1
0
H = [A2A4] = 2
1
0
1
xH = x 2
x4
La solution de base correspondante est donc :
xB = B−1b = 0 1/2
4 = 5/2 = x1
1 −1/2
5
3/2
x3
>0
Cette solution est bien une SBR.
Une solution de base peut être non réalisable: Considérer B = [A2 A3]
2016/2017
39
Chapitre 2: Théorie de la programmation linéaire
Théorème: Soit P le polyèdre défini par l’ensemble des solutions admissibles
d’un PL canonique et Q le polyèdre défini par l’ensemble des solutions
admissibles du même PL sous forme standard, définis par:
P 
x
D
 IR n , Ax D  b , x D  0

 xD 

nm
  IR
Q   
, Ax D  x E  b , x D  0 , x E  0 
x
 E 

x



La fonction f: IRn  IRn+m qui à x associe: f ( x )  
b

Ax


est
bijective de P sur Q, en particulier f est une bijection entre les points extrêmes de
P et Q.
Preuve: en exercice
2014-2015
2016/2017
40
40
Chapitre 2: Théorie de la programmation linéaire
Illustration graphique
Max Z = 2x1 + x2
s.c.
x1 + x 2 ≤ 1
x1 , x2 ≥ 0
Max Z = 2x1 + x2
s.c.
x1 + x2+x3 = 1
x 1 , x2, x 3 ≥ 0
x3
x2
(0,0,1)
(0,1)
(1,0)
(1,0,0)
x1
x1
(0,1,0)
x2
2016/2017
41
41
Chapitre 2: Théorie de la programmation linéaire
Théorème : Soit
 x D 

nm


Q  
, Ax D  x E  b , x D  0 , x E  0 
  IR
x
 E 

l’ensemble des solutions admissibles d’un
PL standard. Les affirmations
suivantes sont équivalentes:
i. x* Q est un point extrême de Q.
ii. x* Q est un sommet de Q.
iii. c  IRn+m, tel que le PL max{cx; x Q} admet x* comme unique solution
optimale.
iv. x* Q est une solution basique (i.e particulière) admissible du PL
2016/2017
42
Chapitre 3: Algorithme du Simplexe
Soit un PL sous sa forme standard (Ax = b).
 Définitions:
i. On appelle rang du PL le rang de sa matrice A.
ii. On suppose que A est mn, on dit que A est de rang plein si: rang(A) = m  n ..
 Remarques:
Soit A une matrice de rang plein, alors, le système Ax = b admet toujours des
solutions:
- si m < n, le système Ax = b admet une infinité de solutions.
- si m = n, la solution est unique et vaut x *= A-1b,
2016/2017
43
Chapitre 3: Algorithme du Simplexe
Définition: solution réalisable
On appelle solution réalisable tout vecteur x qui satisfait les contraintes du PL i.e. tel que
Ax = b et x  0:
Définition : variables de base
Soit B  {1,..n} un ensemble d'indices avec card (B) = m tel que les colonnes Aj , j  B,
de A soient linéairement indépendantes. Autrement dit, la matrice carrée AB formée des
colonnes Aj , j  B, est inversible. On dit que l'ensemble B des indices est une base.
Les variables xB = (xj ; j  B) sont appelées variables de base.
Les variables xH = (xj ; j B) sont appelées variables hors-base.
Définition: Soit un PLS, on appelle une matrice augmentée la matrice définie par:
Aˆ  ( A | b )
2016/2017
44
Chapitre 3: Algorithme du Simplexe
Remarques: si A est de rang plein (rang(A) = m)
 Pour déterminer les solutions de Ax = b, il suffit de choisir m colonnes
linéairement indépendants de A formant une base de l’espace des colonnes de A (et
donc de IRn) et d’exprimer le système dans cette base.
 Sous l'hypothèse de rang plein, il existe toujours une base non vide. Quitte à
renuméroter les indices, on peut toujours écrire les décompositions par blocs :
A = (B|H), donc: Ax = b  (B|H)x = b,
Où B est une matrice inversible formée de m ( où m= rang(A)) colonnes
linéairement indépendantes de A.
2016/2017
45
45
Chapitre 3: Algorithme du Simplexe
 xB 
  b ;
( B | H ) x  ( B | H ) 
 xH 
B  1 ( B | H ) x  B  1 b  x B  B  1 Hx H  B  1 b
Ainsi: on choisit arbitrairement les xH et les xB sont déterminées par:
x H  IR n  m , x B  B  1 b  B  1 Hx H
Remarque: l’optimum peut être atteint en changeant seulement les variable
hors base tout en respectant la contrainte de non négativité de variables
2016/2017
46
Chapitre 3: Algorithme du Simplexe
 Revenons à la fonction objectif: Z = cx :
 xB 
  c B x B  c H x H
Z  cx  ( c B | c H ) 
 xH 
 Z  c B ( B  1 b  B  1 Hx H )  c H x H
 Z  c B B  1 b  c B B  1 Hx H  c H x H ,
Soit : c   c B B  1 H  c H  Z  c B B  1 b  c x H
 Ainsi, le PLS initial devient:
Max
Z  c B B  1b  c x H
Sc : x B  B  1 b  B  1 Hx H
xB  0, xH  0
2016/2017
47
Chapitre 3: Algorithme du Simplexe
Définitions:
i.x* est dite solution de base ou solution basique si elle vérifie Ax* = b, et x* s’écrit:
 x B  B  1b 

x *  

 xH  0 
i. Si en plus xB  0 alors x* est une solution de base réalisable.
ii. x* est dite solution réalisable si elle vérifie les contraintes: Ax* = b et x*  0.
iii. Les colonnes formant B sont dites basiques les autres hors bases.
iv. Les variables associées aux colonnes de B sont dites basiques les autres variables
hors base.
v. On appelle base la liste ordonnée des variables basiques cette liste est notée B.
2016/2017
48
Chapitre 3: Algorithme du Simplexe
Exemple:
0 1 2
A  
1 1 2
2
1
 ; b   
3
1
 x1 

x H  
 x3 
xB  B
1
1 2 
, B  2,4
B  
1 3 
 x2 

x B  
 x4 
1
0
b    ; x H   
0
0
2016/2017
49
Chapitre 3: Algorithme du Simplexe
 Solutions basiques d’un PLS:
Considérons le PLS dont les contraintes sont données par:
 Ax D  x E  b , x D : variable de décision

 x D  0 , x E  0 , x E : variable d' écart
 a 11
La matrice  a
12
rang plein.  .
 .
a
 m1
.
.
a1n
a 21
1
0
0
1
.
.
.
.
.
.
.
.
.
.
.
0
0
0
0
.
.
.
1
a mn
.
0

.
.



1
est de taille m(n + m) et est de
La base B0 = I, formée par des variables d’écart du problème. La solution basique
associée à cette base est: xB = xE = b et xH = xD = 0
2016/2017
50
Chapitre 3: Algorithme du Simplexe
Max
Z  c B B  1b  c x H
Sc : x B  B  1 b  B  1 Hx H
xB  0, xH  0
Dans le cas de l’algorithme de simplexe, on a B=Identité, ce qui donne (à
une permutation des variables de base près):
Max
Z  cBb  cxH
Sc : x B  b  Hx H
xB  0, xH  0
2016/2017
51
Chapitre 3: Algorithme du Simplexe
Principe de la méthode de simplexe
L’algorithme du simplexe pour une maximisation suit les étapes
suivantes :
1. Trouver une SBR pour le PL, appelée la SBR initiale.
2. Déterminer si la SBR courante est optimale. Sinon, trouver
une autre SBR qui possède une valeur z plus élevée.
3. Retourner au point (2) avec la nouvelle SBR comme SBR
courante.
Pour la méthode de simplexe, la base B est toujours l’identité à
une permutation des colonnes près
La question est donc : comment se déplacer?
2016/2017
52
52
Chapitre 3: Algorithme du Simplexe
Algorithme
PLS initial
Sommet de départ
Augmenter une des variable hors base jusqu’à une des
contraintes de non négativité n’est plus satisfaite
Z optimal
Un nouveau Sommet
Oui
Fin
Non
Pivotage
2016/2017
53
53
Chapitre 3: Algorithme du Simplexe
Pivotage: Passage d’une matrice à une autre
-Le pivotage consiste à éliminer une colonne de base et d’ajouter à la base une
colonne hors base.
-Ceci se fait par ajout à chaque ligne une combinaison linéaire des autres.
-Pour avoir un système équivalent ces opérations doivent se faire sur la matrice
augmenté.
Aˆ  [ A b ]
-Le pivotage par rapport à air consiste à remplacer air par 1 et tous les autres akr
par 0.
-La colonne de base j contenant cette même colonne dans l’étape précédente
devient hors base.
-En écriture matricielle, ceci consiste à multiplier à gauche la martice augmentée
par la matrice de pivotage.
-Les coefficients de la fonction coût correspondant aux variables de bases sont
nuls. Donc toutes ces étapes doivent être faites sur le tableau suivant:
2016/2017
54
54
Chapitre 3: Algorithme du Simplexe
Tableau
Max Z = cx, sc: Ax = b, x  0
• Le tableau initial est :
xD =xH
T0 =
xE =xB
z
Résultat
A
I
0
b
-cD
0
1
0
• Un tableau est associé à une base d’un système d’équations.
• Un tableau comprend une ligne supplémentaire représentant la fonction objectif
du problème. La base associée au tableau initial est donc formée des colonnes des
variables d’écart auxquelles on ajoute (en dernière position) celles correspondant
à la variable z et au second menbre b. 2016/2017
55
Chapitre 3: Algorithme du Simplexe
Algorithme du simplexe (phase II)
Données: Un tableau admissible (les bi sont positifs)
Résultat: Un tableau optimal ou non borné
1/ Choix d’une colonne (variable) entrante:

Choisir une colonne hors base r ayant un côut marginal négatif;
r  k  1 ,.. n ,  c k  0 
 S’il n’existe pas de colonne entrante: STOP: le tableau courant est optimal
2/ Choix d’une colonne (variable) sortante:
 Choisir une ligne i0 minimisant les quotients caractéristiques :
i 0  arg min  b i / a i , r , a i , r  0 
i
 S’il n’existe pas de colonne sortante: STOP le tableau courant est non borné.
3/ Mise à jour de la base et du tableau: Pivoter autour de ai0,r et retourner en (1).
2016/2017
56
Chapitre 3: Algorithme du Simplexe
Algorithme du simplee (phase I)
Données: Un tableau non admissible
Résultat: Un tableau admissible ou certificat d’absence de solutions admissibles
1/ Construire le PL auxiliaire et un tableau initial admissible:

Introduire une variable auxiliaire x0i dans toutes les contraintes vérifiant bi < 0.
 Ajouter la fonction objectif auxiliaire à maximiser : Z’ = -x0
 Faire entrer x0 dans la base en pivotant sur: a i0 , 0 , où:

i 0  arg min b i , b i  0
i

2/ Résoudre le PL auxiliaire à l’aide de la phase II de l’algorithme du simplexe et en
utilisant la règle de Bland:
 si Z’ = 0 à l’optimum, supprimer les colonnes de x0 et de Z’ er la ligne de Z’. Le
tableau restant est admissible pour le problème de départ.
 si Z’ < 0 à l’optimum, le problème de départ n’admet pas de solutions admissibles.
2016/2017
57
Chapitre 4: Dualité en programmation linéaire
Motivation:
Considérons l’exemple du PL suivant:
Max Z = x1 + x2
s.c. 2x1 +3 x2 ≤ 6
x2 ≤ 3/2
x1 - x 2 ≤ 2
x1, x 2≥ 0
(C1)
(C2)
(C3)
En utilisant la résolution par la méthode du simplexe ou graphique, on obtient la solution:
x*1 = 12/5; x*2 =2/5 et Z* = 14/5.
En fait: 1/3* (C1) + (C3) donne: (5/3)*x1 ≤ 4, donc:
x1 ≤ x*1 =12/5 et (C1) donne: x2 ≤ x*2 =4/10 et Z ≤ Z*= 14/5.
Ainsi, les bornes des xi et les inéquations (Ci) fournissent un certificat d’optimalité de cette
solution.
2016/2017
58
Chapitre 4: Dualité en programmation linéaire
Dualité d’un programme canonique:
Soit le programme linéaire primal (PLP) donné sous la forme de PLC suivante:
Max Z = cx
s.c. Ax ≤ b
x≥0
PLC:
Où: c = (c1,c2,..cn) et bT = (b1,b2,..bm) et xT = (x1,x2,..xn) et A = (ai,j)1 ≤ i ≤m,1 ≤j ≤n
Soit y  ( y 1 , y 2 ,.. y m )  0 . En multipliant les contraintes du PLC par yi et faisant la
somme:
m
 (y a
i 1
i
i ,1
m
m
m
i 1
i 1
i 1
) x 1   ( y i a i , 2 ) x 2  ....  ( y i a i , n ) x n   y i b i
Puisque: xi ≥ 0, alors on a cette inégalité sous contrainte:
 c 1 x 1  .. c n x n 
Z
m

i1
m
( y i a i ,1 ) x 1  
i 1
( y i a i , 2 ) x 2  ....
2016/2017
m

i1
( y i a i,m ) x m

m

i1
y ib i
59
Chapitre 4: Dualité en programmation linéaire
La condition est donnée par:
c j 
m

i 1
y i a i , j ,1 
j  n
Pour trouver la meilleure borne supérieure, c.à.d la plus petite, il faut résoudre le
programme linéaire suivant:
( PLD
m

Min
W
 
y i b i

i  1

m


y i a i ,1  c 1
 

i  1


) 
.

 sc : 
.

m


y i a i,n  c n
 

 i1

 y i  0 , 1  i  m
Ce problème est appelé problème linéaire dual (PLD) du PLC de départ
2016/2017
60
Chapitre 4: Dualité en programmation linéaire
 Tout PLC d’un problème primal peut être transformé en un programme dual (PLD)
 Min
W
 y b
Z  cx
 Max
 sc : Ax

 b  ( PLD
sc : yA  c
( PLC
) 
) 
 x  0

y  0

Exemple: Transformer le PL suivant sous forme de PLD
( PLC
Z  x1  x 2
 Max

 x1  x 2  2

 2 x  x

1
2  5

)

sc : 
x 2  3



x1  0



x2  0

2016/2017
61
Chapitre 4: Dualité en programmation linéaire
Théorème de Dualité faible:
Soit x une solution admissible d’un PL canonique et y une solution admissible de son dual
alors: cx ≤ yb.
Preuve:
( PLP
Z
 Max
 sc : Ax
) 
 x  0
 cx
 b

( PLD
W
 Min
 sc : yA
) 
 y  0
 yb
 c
Donc: cx ≤ (yA).x = y(Ax) ≤yb
Corollaire: Soit x une solution admissible de (PLP) de valeur Z et y une solution admissible
de (PLD) de valeur w. Si Z = w alors x et y sont optimales pour leur problème respectif.
2016/2017
62
Chapitre 4: Dualité en programmation linéaire
Règles de dualisation
• Problème de Max  Problème de Min
• Variable xj ≥ 0  jéme contrainte de type « ≥ »
• Variable xj IR  jéme contrainte de type « = »
• variable xj ≤ 0  jéme contrainte de type « ≤ »
• iéme contrainte de type « ≤ »  variable yi ≥ 0
• iéme contrainte de type « = »  variable yi IR
• iéme contrainte de type « ≥ »  variable yi ≤ 0
2016/2017
63
Chapitre 4: Dualité en programmation linéaire
Exemple: Transformer le PLP suivant sous sa forme duale
( PLP
Remarques:
Z  x1  3 x 2
 Max

 x1  x 2  2

 2 x  x
 5

1
2

) 

sc : 
x 2  3



x 1  IR



x 2  0

1/ Le sens d’optimisation est toujours inversé entre un PL et son dual.
2/ Si un PL a n variables et m contraintes, son dual a m variables et n contraintes.
3/ Chaque variable du dual correspond à une contrainte du problème de départ, et
réciproquement, chaque contrainte du dual est associée à une variable du problème de
départ.
4/ La dualisation est une opération involutive, i.e le dual du dual est le PLP.
2016/2017
64
Chapitre 4: Dualité en programmation linéaire
Théorème de dualité forte:
Si un programme linéaire standard possède une solution optimale x* = (x*D| x*E) de
valeur Z*=cDx*D alors son dual possède aussi une solution optimale y* = (y*D| y*E) de
valeur W*=y*Db = Z*.
Remarque: Si un PL possède une solution optimale finie, il en est toujours de même pour
son dual. En revanche, s’il ne possède pas d’optimum fini, son dual ne peut posséder de
solutions admissibles sans contredire le théorème de dualité faible.
Théorème des écarts complémentaires:
Soit x = (xD|xE) une solution admissible d’un PL standard et y = (yD|yE) une solution
admissible de son dual. Ces solutions sont optimales pour leur respectif ssi:
yDxE = 0 et yExD = 0
2016/2017
65
Chapitre 4: Dualité en programmation linéaire
Remarque: Les solutions x et y sont admissibles, elles sont non négatives et:
yExD = 0 ssi: ym+jxj = 0 pour j = 1,..n
et : yDxE = 0 ssi: yixn+i = 0 pour i = 1,..m
Résolution du problème dual:
1/ A tout tableau est associé non seulement une base primale et sa solution basique mais
également une base duale et sa solution basique.
2/ Les valeurs de la solution basique duale se lisent dans la dernière ligne du tableau. Les
valeurs des variables basiques primales se lisent dans la dernière colonne du tableau.
3/ La paire de solutions basiques (primale et duale) associées à un tableau ont la même
valeur et vérifiant les conditions d’orthogonalité des écarts complémentaires.
4/ Dans l’algorithme du simplexe à deux phases, la solution basique primale est toujours
admissible. Dés qu’une solution basique duale admissible et rencontrée, l’optimum est
atteint.
66
2016/2017
Chapitre 4: Dualité en programmation linéaire
Interprétation des variables duales à l’optimum:
 Si un PL (standard) admet un optimum fini, il en est de même de son dual et on a:
Z * 
m

j  1
c j x
*
j

m

j  1
y i* b i  W
*
 Si la solution optimale primale est non dégénérée, l’expression de W* est unique et:
 Z *
 b i

y i*
 La valeur optimale de la variable duale yi représente le prix marginal de la ressource i à
l’optimum.
 y*i représente l’augmentation potentielle de la valeur optimale du problème si la
ressource i actuellement limité par bi se voit augmentée d’une unité.
2016/2017
67
Chapitre 4: Dualité en programmation linéaire
Algorithme dual du simplexe (phase II)
Données: Un tableau dual admissible
Résultat: Un tableau optimal ou un certificat de solutions admissibles
1/ Choix de variable sortante:

Choisir une ligne i tel que: bi < 0, la variable basique xj quitte la base (où j est
l’indice de la variable basique dans la base B)
 S’il n’existe pas de variables sortantes: STOP le tableau courant est optimal
2/ Choix de la variable entrante:
 Choisir une colonne hors base r maximisant les quotients caractéristiques duaux:


  j
  k
r  k  N ,
 max
, a i, j  0

a
a


i ,k
i, j
 S’il n’existe pas de variable entrante: STOP le dual est non borné et le primal est
sans solutions admissibles
3/ Mise à jour de la base et du tableau: Pivoter autour de air et retourner à (1).
2016/2017
68
Chapitre 4: Dualité en programmation linéaire
Application:
Résoudre le PL suivant en appliquant l’algorithme dual du simplexe (phase II)
( PLC
Z   x1  2 x 2
 Max

 2 x1  x 2  6

  x  x
  4

1
2

) 

sc : 
x1  0






x 2  0

2016/2017
69
Chapitre 5: Analyse de Sensibilité (Analyse postoptimale)
 L’analyse optimale permet de déterminer des intervalles de variations des données pour
lesquels la base optimale B* n’est pas modifiée. Elle permet de déterminer la sensibilité de
(PL) par rapport aux données, à savoir:
1. Variation d’un coefficient de la fonction économique (Z)
2. Variation du second membre d’une contrainte (b).
3. Prix marginaux des contraintes (A)
 L’analyse de sensibilité se concentre sur l’étude du comportement de la solution optimale
d’un programme lors de la variation de ses données (A,b,c). Elle cherche à déterminer dans
quel intervalle peut varier un coefficient sans que la base optimale ne change.
2016/2017
70
Chapitre 5: Analyse de Sensibilité (Analyse postopotimale)
On rappelle l’expression du tableau optimale d’un PL est donnée par:
T*=
xD
xE
Z
b
B-1A
CBB-1A - CD
B-1
CBB-1 - CE
0
1
B-1b
CBB-1b
1er cas: Si b change, alors uniquement la derniére colonne du tableau T* est modifiée et
ce dernier reste optimale tant que la solution basique primale reste admisssible:
Si la iéme composante de b est modifiée, b’ = b + δei (où ei est le iéme vecteur de la base
canonique). La base actuelle reste optimale tant que:
B-1b’ = B-1(b + δei) ≥ 0
2016/2017
71
Chapitre 5: Analyse de Sensibilité (Analyse postopotimale)
2éme cas: Si c change, alors uniquement la derniére ligne du tableau T* est modifiée et
ce dernier reste optimale tant que la solution basique duale reste admisssible:
Si la jéme composante de est modifiée, c’ = c + δej. La base actuelle reste optimale tant que:
- δ D = C’BB-1A – C’D ≥ 0 & - δ E = C’BB-1 – C’E ≥ 0
Dans le problème initial on a: CE = 0)
3éme cas: Si on ajoute une contrainte, le tableau T* reste optimale tant que la solution
basique duale reste admisssible. La base actuelle reste optimale tant que:
- δ D = CBB-1A – CD ≥ 0 & - δ E = CBB-1– CE ≥ 0 & B-1b ≥ 0
2016/2017
72
Partie 2: Théorie des graphes
2016/2017
73
Plan du cours
Chapitre 1 : Eléments de la théorie des graphes.
Chapitre 2: Problèmes d’arbre couvrant de poids minimum et
de plus court chemin.
Chapitre 3: Problèmes d’ordonnancement et de gestion de
projets.
2016/2017
74
Chapitre 1: Eléments de la théorie des graphes
Exemples d’applications
• La structure d’un site Web est représentée par un graphe orienté, les
URL sont les sommets et les arcs étant les liens. Un lien entre deux pages
peut exister si et seulement si la première page contient le lien pour aller
vers la seconde.
• En téléphonie mobile, les graphes sont utilisés pour représenter les
cellules qui composent le réseau. Un lien entre deux cellules peut exister si
et seulement s’il existe une chaîne de communication entre elle.
• En transport publique, les sommets sont les quartiers, deux quartiers sont
reliés s’il y a suffisamment de personnes qui voyage d’un quartier à l’autre.
2016/2017
75
Chapitre 1: Eléments de la théorie des graphes
Définitions: On considère un ensemble fini V = {v1,v2,..vn} où n est un entier naturel
et une relation binaire sur V, assimilée à une partie E de V×V c’est à dire un ensemble de
couples (vi,vj) où i,j  {1,…n}.
1. Graphe orienté: La donnée du couple (V,E) définit un graphe orienté, les éléments
de V sont appelés des sommets et ceux de E des arcs et sont représentés par des
flèches. Dans un arc (vi,vj), vi est appelé extrémité initial et vj extrémité finale. Un arc
(vi,vi), est appelé une boucle.
On définit la fonction d’incidence , définie par: : V  P(V) qui associe à chaque
sommet v l’ensemble des extrémités finales des arcs partant de ce sommet v.
Un graphe est donc entièrement déterminé par la donnée de V et Γ, on notera
désormais un graphe G = (V, E) ou G = (V, E, ).
2016/2017
76
Chapitre 1: Eléments de la théorie des graphes
Exemple: G=(V,E)
V = {A,B,C,D,E,F}; E= {(A,B),(A,D),(B,C),(C,B),(C,E),(D,C),(D,D),(D,E)}
Dans ce cas, Γ est définie par :
Γ(A) = {B, D}, Γ(B) = {C}, Γ(C) = {B, E}, Γ(D) = {C, D, E}, Γ(E) = Γ(F) = 
2016/2017
77
Chapitre 1: Eléments de la théorie des graphes
2. Graphe non orienté: Dans certaines applications, seule la liaison entre les sommets
importe, et non le sens de la liaison. On parlera d’arrête, noté [vi,vj]et non pas d’arc. Un tel
graphe est dit non orienté.
V = {A, B, C, D,E}
Déterminer les arêtes de ce graphe
2016/2017
78
Chapitre 1: Eléments de la théorie des graphes
Définitions:
Soit G = (V,E) un graphe, on a les définitions suivantes :
1. Graphe réflexif :
xi
V, (xi , xi)
E.
2. Graphe symétrique : xi, xj
V, (xi , xj )
E => (xj , xi)
3. Graphe transitif : xi, xj, xk
V, (xi , xj )
E, (xj , xk)
4. Graphe partiel : Soit E’
E, G’ = (V,E’) est un graphe partiel. L’application
Γ’associée est une restriction de Γ, i.e.
5. Sous-graphe : Soit V’
V et E’
x
V, Γ’(x)
E.
E => (xi , xk) E.
Γ(x).
E l’ensemble des arcs obtenu en ne conservant dans
E que les arcs dont les extrémités sont dans V’, G’ = (V’, E’ ) est un sous-graphe de G.
2016/2017
79
Chapitre 1: Eléments de la théorie des graphes
Exemples:
6. Adjacence : Deux sommets sont dits adjacents s’ils sont reliés par un arc ou une
arête. Deux arcs sont adjacents s’ils ont une extrémité commune.
2016/2017
80
Chapitre 1: Eléments de la théorie des graphes
7. Chemins et chaînes: Un chemin est constitué d’une séquence d’arcs adjacents dont
l’extrémité finale de l’un est l’extrémité initiale du suivant, sauf pour le dernier. Dans le
cas d’un graphe non orienté, on parlera de chaîne.
Un chemin est :
 simple s’il ne passe pas deux fois par le même arc, c.à.d un graphe sans boucle ni
arrête ou arcs multiples. En général, on dit graphe pour désigne un graphe simple.
Dans le cas de boucles ou d’arrêtes ou arcs multiples, on parlera de multigraphe.
 élémentaire s’il ne passe pas deux fois par le même sommet.
 Un circuit si l’extrémité finale coïncide avec l’extrémité initiale. Dans le cas d’une
chaîne on parlera de cycle.
 Hamiltonien s’il passe une fois et une seule par chacun de ses sommets. Si c’est de
plus un circuit c’est un circuit Hamiltonien.
2016/2017
81
Chapitre 1: Eléments de la théorie des graphes
8. Graphe orienté est sans circuit ou acyclique: s’il ne possède pas de circuit.
9. Connexité:
• Graphe connexe: si quels que soient les sommets vi et vj de V, il existe une chaîne
de vi vers vj . C'est-à-dire, s'il existe une suite d'arêtes permettant d'atteindre vj à partir
de vi .
• Sous-graphe connexe maximal d'un graphe non orienté quelconque est une composante
connexe de ce graphe.
2016/2017
82
Chapitre 1: Eléments de la théorie des graphes
• Composante fortement connexe d'un graphe orienté G est un sous-graphe
de G possédant la propriété suivante, et qui est maximal pour cette propriété : pour tout
couple (u, v) de sommets dans ce sous-graphe, il existe un chemin de u à v.
Autrement dit, un graphe est dit fortement connexe s'il est formé d'une seule
composante fortement connexe. De manière générale, un graphe se décompose de
manière unique comme union de composantes fortement connexes disjointes.
 Un graphe est connexe ssi il possède une seule composante connexe.
 Un graphe est fortement connexe ssi il possède une seule composante fortement
connexe.
2016/2017
83
Chapitre 1: Eléments de la théorie des graphes
Ce graphe comporte 5 composantes fortement connexes, trois ne contiennent qu'un
seul sommet, une est constituée d'un triangle et la dernière comporte 9 sommets.
2016/2017
84
Chapitre 1: Eléments de la théorie des graphes
Arbre et forêt:
• Un multigraphe (non orienté) sans cycle est une forêt.
• Un multigraphe (non orienté) sans cycle et connexe est un arbre.
• Chaque composante connexe d’une forêt est un arbre.
Exemples:
2016/2017
85
Chapitre 1: Eléments de la théorie des graphes
Résumé:
Graphe orienté
Graphe non orienté
arc
arête
chemin
Chaîne
circuit
10. Degré: Soit G un multigraphe, on définit:
cycle
• Le demi-degré extérieur du sommet vi est le nombre d’arcs du graphe issus de vi, on le note
d+(vi), on a d+(vi) = |Γ(vi)|. Dans le cas où d+(vi) = 0, on dit que vi est une sortie du graphe.
• Le demi-degré intérieur du sommet vi est le nombre d’arcs du graphe aboutissant à vi, on le
note d−(vi). Dans le cas où d−(vi) = 0, on dit que vi est une entrée du graphe.
Le degré du sommet vi est d(vi) = d+(vi) + d−(vi). Dans le cas d’une boucle, on augmente de 2
le degré.
Propriété: Dans tout multigraphe, la somme des degrés est un nombre pair.
2016/2017
86
Chapitre 1: Eléments de la théorie des graphes
Matrices associées à un graphe (simple):
1.
Cas d’un graphe non orienté:
Soit G = (V, E) un graphe non orienté , où |V| = n et |E| = m.
•
A ce graphe, on fait correspondre une matrice B d’adjacence (ou sommetssommets) de taille (n×n) définie par:
et v
sont
adjacents

•
A ce graphe, on fait correspondre une matrice A d’incidence (ou sommet-
( b i , j ) i , j , où
b i, j 
 1 si v


B
i
j
0 sinon
arrête) de taille (n×m) définie par:
A

( a i , k ) i , k , où
a i, k

 1 si v


2016/2017
i
est
incident
à e k
0 sinon
87
Chapitre 1: Eléments de la théorie des graphes
Matrices associées à un graphe (simple):
2. Cas d’un graphe orienté:
Soit G = (V, E) un graphe orienté , où |V| = n et |E| = m.
•
A ce graphe, on fait correspondre une matrice B d’adjacence (ou sommetssommets) de taille (n×n) définie par:
B
•

( b i , j ) i , j , où
b i, j 
 1 si


(v
i
, v
j
)  E
0 sinon
A ce graphe, on fait correspondre une matrice A d’incidence (ou sommet-arc)
de taille (n×m) définie par:
A  ( a i , k ) i , k , où
a i, k
 1 si v i est l' extrimité

  - 1 si v i est l' extrimité

0 sinon
2016/2017
initiale
de e k
finale
de e k
88
Chapitre 1: Eléments de la théorie des graphes
3. Exercice: Déterminer les deux matrices d’adjacence B et d’incidence A relatives aux
graphes suivants:
2016/2017
89
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
I. Problèmes de l'arbre recouvrant de poids minimal (ARPM)
En théorie des graphes, étant donné un graphe non orienté connexe dont les arêtes
sont pondérées, un arbre couvrant de poids minimal de ce graphe est un arbre
couvrant
(sous-ensemble qui est un arbre et qui connecte tous les sommets
ensemble) dont la somme des poids des arêtes est minimale. L'arbre couvrant de
poids minimal est aussi connu sous certains autres noms, tel qu’arbre couvrant
minimum (ARPM) ou encore arbre sous-tendant minimum.
Si on considère un réseau où un ensemble d'objets qui doivent être reliés entre eux ,
l'arbre couvrant minimum est la façon de construire un tel réseau en minimisant un
coût représenté par le poids des arêtes (par exemple la longueur totale de câble
utilisée pour construire un réseau électrique).
2016/2017
90
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
1. Propriétés sur l'arbre de recouvrement minimum
• Un arbre est un graphe partiel connexe sans cycle.
• Un arbre contient exactement (n-1) arêtes où n est le nombre de sommets.
• Un graphe partiel sans cycle de n-1 arêtes est un arbre. Un graphe partiel connexe de (n-1)
arêtes est un arbre.
• Il existe au moins un arbre de coût minimal qui contient l'une des arêtes de plus petite
valeur.
2016/2017
91
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
2. Algorithme de Kruskal: C’est un algorithme glouton (Greedy) qui permet de déterminer
l'arbre recouvrant de poids minimal dans un graphe pondéré positivement. Son principe
de base est de représenter les classes de connexité par des ensembles. Au départ, on
supprime toutes les arêtes, puis on ajoute celles de poids le plus petit possible nécessaire
à unir tous les sommets dans une unique classe de connexité.
Applications:
1. Simplifier un câblage
2. Supprimer les liaisons maritimes les moins rentables en préservant l'accessibilité aux
différents ports.
2016/2017
92
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Algorithme de Kruskal
Soit n le nombre de sommets et m le nombre des arêtes du graphe G = (V,E,e),
- Trier les m arêtes du graphe par valeurs croissantes. Soit Eo une des plus
petite arêtes : F = { Eo }.
- Soit p le nombre d'arêtes déjà placées dans le graphe partiel : p = 1.
Tant que p inférieur ou égal à n-2 et que toutes les arêtes n'ont pas été
examinées faire
Soit Eo la plus petite arête non encore examinée.
Si l'ajoût de Eo à F ne crée pas de cycle dans le graphe partiel
alors ajouter Eo à F ; p = p + 1 ;
fin
Fin
Si p = n-1 alors F contient les arêtes d'un arbre de recouvrement
minimal
sinon le graphe initial n'était pas connexe et il n'est pas
possible de trouver un arbre de recouvrement minimal.
fin
2016/2017
93
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Application 1: Appliquer l’algorithme de Kruskal pour déterminer l’arbre maximal de
poids minimum des deux graphes suivants.
2013-2014
2016/2017
94
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Réponse: Arbre couvrant de poids miniunum du graphe 2:
2016/2017
95
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
3. Algorithme de Prim: C’est un algorithme glouton qui permet de trouver un arbre couvrant
minimal dans un graphe connexe pondéré et non-orienté. En d'autres termes, cet algorithme trouve
un sous-ensemble d'arêtes formant un arbre sur l'ensemble des sommets du graphe initial, et tel que
la somme des poids de ces arêtes soit minimale. Si le graphe n'est pas connexe, alors l'algorithme ne
déterminera l'arbre couvrant minimal que d'une composante connexe du graphe.
L’algorithme de Prim est donné par:
1. Initialiser T avec

sommets : un sommet de G qu’on choisit

arêtes : aucune
2. Répéter : Trouver toutes les arêtes de G qui relient un sommet de T et un sommet extérieur à T.

Parmi celles-ci, choisir une arête de poids le plus petit possible

Ajouter à T cette arête et le sommet correspondant
3. S’arrêter dès que tous les sommets de G sont dans T
4. Retourner T
2016/2017
96
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Application 3: Appliquer l’algorithme de Prim pour déterminer l’arbre maximal de poids total
minimum, sachant que x est la source.
2016/2017
97
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Réponse:
2016/2017
98
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
II. Problèmes de plus courts chemin
 Problème de la section minimale:
 Soit G = (V, E, e) un graphe où e est une pondération de ses arêtes. Soit C une
chaîne reliant les sommets i et j de G. La section de G est définie comme la valeur
maximale des poids des arêtes de G.
 Pour deux sommets i et j de G donnés, le problème de la section minimale consiste
à déterminer la chaîne de section minimale reliant ces deux sommets.
 Théorème: L’arbre maximal de poids minimum fournit également des chaînes de section
minimale entre toutes paires de sommets d’un graphe.
2016/2017
99
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
 Problèmes de plus courts chemins dans les réseaux
 Un réseau est un graphe orienté G = (V, E, e) muni d’une ou plusieurs pondérations de
ses arcs ou de sommets. Ainsi, on peut noter G = (V, E, e), où e est une pondération,
quelconque.
 Les problèmes de plus courts chemins se divisent en trois grandes familles:
1. Déterminer un plus court chemin d’un sommet origine (source) s à un sommet
destination (puits) t. Exemple: Algorithme de Ford
2. Déterminer les plus courts chemins d’un sommet source s à tous les autres sommets
du graphe. Exemple: Algorithme de Dijkstra
3. Déterminer les plus courts chemins entre toutes les paires (ordonnées) de sommets
du graphe.
2016/2017
100
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Remarques:
1. Dans les réseaux la longueur d’un chemin ou d’un circuit correspond à la somme des
poids de ses arcs et non pas à leur nombre.
2. Les problèmes de plus courts chemins ne sont pas définis par des coûts négatifs.
 Principe d’optimalité de Bellman :
 Programmation dynamique inventée par Bellman (en 1954) pour résoudre des
problèmes
de chemins optimaux (longueur max. ou min.). La Programmation
dynamique est une méthode de construction d’algorithme très utilisée en optimisation
combinatoire (Recherche de solution optimale dans un ensemble fini de solutions mais
très grand). Il s’agit d’une méthode d’énumération implicite: on retient ou rejette des
sous-ensembles de solutions mais on ne construit pas toutes les solutions.
2016/2017
101
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
 On rejette certaines solutions sans les avoir construites explicitement si elles
appartiennent à un sous-ensemble qui n’est pas intéressant.
 Principe d’optimalité de Bellman: Un chemin optimal est formé de souschemins optimaux : Si (C) est un chemin optimal allant de A à B et si (C) appartient à
(C) alors les sous-chemins de (C) allant de A à C et de C à B sont optimaux.
On note F(y) la longueur minimale de tous les chemins allant de x0 à y.
Formule récursive:
F ( y )  min(
F ( z )  L z,y )
z y
où Lz,y est la longueur minimale de tous les chemins allant de z à y.
2016/2017
102
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Algorithme de More Dijkstra
En théorie des graphes, l'algorithme de Dijkstra sert à résoudre le problème du plus
court chemin. Il s'agit de construire progressivement, à partir des données initiales, un
sous-graphe dans lequel sont classés les différents sommets par ordre croissant de leur
distance minimale au sommet de départ. La distance correspond à la somme des poids
des arêtes empruntées.
2016/2017
103
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Algorithme de More Dijkstra
Données: Un réseau R = (V,E, e) connexe, |V| = n, |E| = m où e est une
pondération positive des arcs du graphe G = (V,E). Un sommet particulier s V.
Résultat: Pour tout sommet i  V, la longueur i d’un plus court chemin de s à i
(i = s’il n’existe pas de chemin de s à i dans G) ainsi que le prédecesseur
immédiat p(i) du sommet i dans un tel chemin.
1/ s = 0, i =   i  s, p(i) = NULL,  i, T = V
2/ Tant que T  faire
i. Soit i le sommet de T de plus petite étiquette i
ii. Si un tel sommet n’existe pas (j =   j  T) : STOP, les sommets
encore dans T ne sont pas atteignables depuis s.
iii. Sinon, retirer i de T et pour tout successeur j de i dans T tester si
j > i + eij auquel cas poser: j = i + eij et p(j) = i
2016/2017
104
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Algorithme de More Dijkstra:
Application: Chercher les plus courts chemins d’origine A dans ce graphe:
2016/2017
105
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Algorithme de More Dijkstra
Réponse: résultat chemin et non un circuit
2016/2017
106
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Algorithme de Ford pour la recherche du plus court chemin
L'algorithme de Bellman-Ford (Bell-End-Ford) est un algorithme de programmation
dynamique qui permet de trouver des plus courts chemins, depuis un sommet source donné,
dans un graphe orienté pondéré. Contrairement à l’algorithme de Dijkistra, qui ne peut être
utilisé que lorsque tous les arcs ont des poids positifs ou nuls, l'algorithme de BellmanFord autorise la présence de certains arcs de poids négatif et permet de détecter l'existence
d'un circuit absorbant, c'est-à-dire de poids total négatif, accessible depuis le sommet
source. Chaque sommet i du graphe est affecté d’une valeur λi qui initialement vaut 0 pour
le sommet 1 et +∞ pour les autres sommets.
A la fin, λi contiendra la valeur du plus court chemin de 1 à i. On utilisera un tableau T : Tij
est égal à la longueur de l’arc (i, j) si (i, j) U, +∞ sinon. La stratégie utilisée est la suivant:
pour tout couple (i, j) de sommets traité, si Tij < λj − λi, on remplace λj par λi + Tij .jusqu’a
2016/2017
ce que tous les remplacements sont effectués.
107
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Algorithme de Bellman Ford
λ1 ← 0 ; Pour i = 2 à n Faire λi ← +∞; i ← 1 ;
Tant que i ≤ n Faire
j←2;
Tant que j ≤ n Faire
Si Tij < +∞
Si λj > λi +Tij
λj ← λi + Tij ;
Si i > j
i←j
Sinon
j ← j + 1;
sinon j ← j +1
Sinon j ← j + 1
Fin ;
i ← i + 1;
2016/2017
Fin.
108
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Exemple: Application de Bellman Ford sur un graphe
2016/2017
109
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Gestion de projets: Program ou Project Evaluation and Review Technique (PERT)
La méthode PERT permet d'évaluer la durée de réalisation d'un projet complexe et de
détecter les parties de ce projet ne supportant aucun retard. Elle résout des problèmes
appelés problèmes d'ordonnancement.
Le projet sera subdivisé en tâches. En général, elles ne pourront toutes être réalisées
simultanément, certaines tâches devront être achevées avant que d'autres ne puissent
débuter. On résumera l'information sur le projet sous la forme d'un tableau, appelé
échéancier, où seront indiquées les tâches, leur durée, et les contraintes d'antériorité à
respecter.
2016/2017
110
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Gestion de projets: Méthode PERT
 Exemple: Soit l’échancier suivant:
 Graphe PERT: construit à partir de l'échéancier, est un graphe valué dont les arcs seront les
tâches, les valeurs des arcs étant leur durée et les sommets représenteront des états
d'avancement du projet, numérotés de 1 à n.
2016/2017
111
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Gestion de projets: Méthode PERT
Le graphe devra respecter deux contraintes :
1. en un sommet, toutes les tâches se trouvant sur un chemin y menant, doivent être
achevées
2. il n'y a pas d'arc de i vers j avec i est supérieur à j
2016/2017
112
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Gestion de projets: Méthode PERT
Définitions:
1. Pour un sommet, la date au plus tôt (notée : t) représente concrètement le temps
minimum nécessaire pour atteindre ce sommet.
t1 = 0 et tj = Max ( ti + di j ) sur tous les i précédant j avec di j = durée de la tâche i j.
Dans l'exemple précédant: t1 = 0, t2 = 0+6 = 6, t3 = 0+5 = 5, t4 = 6+4 = 10,
t5 = max(6+0 , 5+6 ) = 11, t6 = max ( 11+6 , 10+5 ) = 17, t7 = 17+4 = 21.
2. Pour un sommet, la date au plus tard (notée : T ) représente concrètement la date à
laquelle cet état doit obligatoirement être atteint si l'on ne veut pas augmenter la durée totale
du projet.
Tn = tn = Durée du projet et Ti = Min ( Tj – di j ) sur tous les j suivant i
2016/2017
113
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Gestion de projets: Méthode PERT
Dans l'exemple précédant, T7 = 21, T6 = 21 - 4 = 17, T5 = 17 - 6 = 11, T4 = 17 - 5 = 12, T3 =
11 - 6 = 5, T2 = min ( 11-0 , 12-4 ) = 8, T1 = min ( 8-6 , 5-5 ) = 0
On aura toujours t1 = T1 = 0 et t inférieur ou égal à T pour tout sommet.
3. On appelle T-t la marge de flottement du sommet.
4. La marge libre d'une tâche représentera concrètement le retard maximal qu' on
pourra prendre dans la réalisation d'une tâche sans retarder le début des tâches suivantes,
on la notera ML.
5. La marge totale d'une tâche représentera concrètement le retard maximal qu' on
pourra prendre dans la réalisation d'une tâche sans retarder l'ensemble du projet, on la
notera MT.
2016/2017
114
Chapitre 2: Problèmes d’arbre couvrant de poids
minimum et de plus court chemin
Définitions:
Gestion de projets: Méthode PERT
6. Si on note ij la tâche allant du sommet i au sommet j: MLij = tj - ti - dij et MTij = Tj - ti –
dij. Compte tenu du mode calcul, les marges seront toujours positives ou nulles et la marge
libre d'une tâche sera toujours inférieure ou égale à sa marge totale.
7. Pour chaque tâche ij, on note tj le début au plus tôt et Ti le début au plus tard. On définit:
Marge(ij) = Ti-tj.
8. On qualifiera de critique, une tâche dont la marge totale est nulle, c'est en quelque
sorte une tâche "urgente", une tâche sur laquelle il ne faut pas prendre de retard si l'on
ne veut pas augmenter la durée totale du projet.
9. Un chemin critique est un chemin du sommet de départ au sommet final composé
uniquement de tâches critiques.
10. Rang du projet: c’est la durée minimale du projet, c’est la longueur du chemin
critique.
2016/2017
115
Téléchargement