Vous êtes sur la page 1sur 71

Recherche

Oprationnelle I
L. Horchani
E.P.T/ Hiver 2015

Mr F doit organiser sa tourne


2

Mr F a organis sa tourne
3

A 25 points visiter, cela fait 24! possibilits, soit environ 6,204


1025 possibilits.

A la main, raison dune possibilit par seconde, il faudrait


environ 1,976 1016 annes.
Avec un ordinateur, raison d1 million de possibilits par
seconde, il faudrait environ 19 milliards dannes.

Recherche Oprationnelle
Ce que nous venons de voir, cest un problme typique de la
Recherche Oprationnelle, appel le problme du voyageur

de commerce (P.V.C)
La Recherche Oprationnelle (RO) est la discipline des
mathmatiques appliques qui traite des questions
dutilisation optimale des ressources en entreprise.

Exemples de problme de RO
trouver la meilleure tourne (P.V.C)

organiser le meilleur emploi du temps


concevoir le rseau le plus robuste (P.A.C.M)
remplir de manire optimale un conteneur (P.B.P)
positionner intelligemment ses entrepts (P.P.C)
ordonnancer des tches sur des machines
6

Ce qui est demand au chercheur oprationnel, c'est de proposer une


utilisation optimale des ressources (si cest possible!) . Pour cela il doit
dterminer :
Quelles sont les variables de dcision ? C'est--dire quels sont les
lments du modle quil a le droit de faire varier pour proposer
d'autres solutions ?

Quelles sont les contraintes ? Une fois identifies les variables de


dcision, quelles sont les valeurs autorises pour ces variables ?
Quel est l'objectif ou le critre ? Quelle est la quantit que l'on veut
maximiser ou minimiser ?
Il est a rappeler que, en toute rigueur, on n'optimise qu'une seule
quantit la fois.
7

La mthodologie de la recherche oprationnelle suit en gnral le


schma suivant.
1.

Objectifs, contraintes, variables de dcision.

2.

Modlisation.

3.

Proposition d'un algorithme, validit thorique de l'algorithme


(temps d'excution pour trouver la solution, qualit de la solution

fournie).
4.

Implmentation, validation pratique de la solution.

PLAN

Thorie des graphe


Notions de base de la thorie des graphes
Le problme du plus court chemin
Problme central de lordonnancement
Le problme de larbre de poids minimal
Le problme du flot maximal
Programmation linaire
Introduction la programmation linaire
Lalgorithme du simplexe
La dualit en programmation linaire
Le problme de transport

10

Bibliographie
M. Gondran et M. Minoux, Graphes et algorithmes, Eyrolles,

1978.
B. Korte et J. Vygen, Combinatorial optimization, 2nd ed,

Springer, 2002.
G. Lvy, Algorithmique combinatoire, Dunod, 1994.
J. F. Maurras, Programmation linaire, complxit, Springer,

2002.
V. Chvtal, Linear programming, W. H. Freeman, New York,

1983.
G. Dantzig et M. Thapa, Linear programming, Springer, 1997.

11

Partie I : Thorie des graphe


POURQUOI LA THORIE DES GRAPHES ?

Modlisation
Plusieurs problmes dans diffrentes disciplines (Rseaux
informatique, tlcommunications, chimie, applications
industrielles, )
Un graphe peut reprsenter simplement la structure, les
connexions, les cheminements possibles dun ensemble
complexe comprenant un grand nombre de situations
Un graphe est une structure de donnes puissante pour
linformatique
12

I.1- Notions de base de la thorie des


graphes

13

1 -DFINITIONS ET CONCEPTS DE BASE


Un graphe orient est un couple G(S,A) :

S ensemble de sommets ou nuds (|S|= n );


A S S ensemble darcs (|A|=m).
2

Exp:
1
S = { 1, 2, 3, 4, 5 }
A = { (1, 2), (1, 3), (2, 3), (3, 2), (4, 4), (4, 5) }

Pour un arc a = (i, j), i est lextrmit initiale, j lextrmit finale


(ou bien origine et destination).

Un graphe non orient est un couple G(S,A) :


A S S ensemble darrtes

1
14
3

On appelle graphe valu et on note G=(S,A,c) un graphe o on


associe une fonction c : A IR appele cot ou poids des arcs
valeur des arcs . Le cot dun arc (i,j) est not c(i,j) ou cij

Un Graphe est dit symtrique si : i, j S, (i, j) A (j, i) A. i.e.


un graphe est symtrique lorsque chaque paire de sommets relis
dans un sens lest aussi dans lautre

ou

Un Graphe est dit complet si i,j S, (i, j) A (j, i) A. i.e. Un


graphe est complet si deux sommets quelconques sont relis dans
au moins une direction
15

j est successeur de i si (i, j ) A ; lensemble des successeurs de i est not

S(i) ou + (i)={j S \ (i, j) A }


j est prdcesseur de i si (j, i ) A ; lensemble des prdcesseurs de i est

not P (i) ou -(i)={j S \ (j,i ) A }


DEGRS

Le degr extrieur de i, d+(i), est le nombre de sommets suivants de i;


d+(i) = |S(i)|.

Le degr intrieur de i, d-(i), est le nombre de sommets prcdents


de i ; d-(i) = |P(i)|.

Le degr de i est d(i) = d+(i) + d-(i).

16

Exemple:

d +(3)=|S(3)|=2.
d -(i) = |P(i)|= 2.

d(i) = d+( i) + d-(i)=4.

17

Deux sommets sont adjacents (ou voisins) sils sont joints par un
arc.
Deux arcs sont adjacents sils ont au moins une extrmit
commune.
Un arc (i, i) est appel une boucle.
Un chemin dans un graphe orient est une suite (x,,y) de
sommets 2 2 distincts telle que si i suit j dans cette suite (i,j) est
un arc
0

18

Une chane est un chemin dans un graphe non orient

Un chemin qui se referme sur luimme est un circuit.

Une chane qui se referme sur ellemme est un cycle.

19

20

2-REPRSENTATION DUN GRAPHE


1. Reprsentation sagittale :dessin du graphe
2. Matrice dadjacence:
Soit le graphe G = (S;A). On suppose que les sommets de S sont
numrots de 1 n, avec n =|S|. La reprsentation par matrice
dadjacence de G consiste en une matrice M de taille n n telle que:
1 si (i,j) A ;
mij =
0 sinon

21

EXP: MATRICE DADJACENCE


S = { 1, 2, 3 }
A = { (1,1), (1, 2), (1, 3), (2, 1), (3, 2)}

1 1 1

M 1 0 0
0 1 0

1
2

Place mmoire : n

Si le graphe est valu (par exemple, si des distances sont associes aux
arcs), on peut utiliser une matrice dentiers, de telle sorte que mij soit gal
la valuation de larc (i; j) si (i; j) A. Sil nexiste pas darc entre 2
sommets i et j, on peut placer une valeur particulire .
2

1
8

2 8 5

M 3 0 0
0 2 0

22

Dans le cas de graphes non orients, la matrice est symtrique par


rapport sa diagonale descendante. Dans ce cas, on peut ne
mmoriser que la composante triangulaire suprieure de la matrice
dadjacence.
mij=

1 si i et j adjacents ;

0 sinon

23

3. Matrice dincidence:
Soit le graphe G = (S;A). On suppose que les sommets de S sont
numrots de 1 n, avec n =|S|et A={ak, 1km}. La reprsentation
par matrice dincidencee de G consiste en une matrice C de taille n
m telle que:
1 si i est la source de uk;
cik=
-1 si i est la destination de uk;
0 sinon
u1

1
u2

u4

u5

u3

1 1 0 0 0

1
0
1
1
0

C
0 1 1 0 1

0
0
0

Place mmoire : n x m
24

4. Liste de successeur:
La reprsentation par liste de successeur : il s'agit dun tableau +(S) de
n liste chanes le tableau est indic par les sommets ;la liste +(i)
contient tout les successeurs de i

25

EXP: LISTE DE SUCCESSEURS


S = { 1, 2, 3 }
A = { (1,1), (1, 2), (1, 3), (2, 1), (3, 2)}
1
2

1
2

1
2
3

1
3

12

2
8

1
2
3

28

35

13

22
26

ENCORE DES DFINITIONS


LONGUEUR D'UN CHEMIN (ou dune chane) :nombre d'arcs du chemin (ou
dartes de la chane)
DISTANCE: la distance entre deux sommets dun graphe est la plus petite
longueur des chanes, ou des chemins, reliant ces deux sommets.
ORDRE DUN GRAPHE : nombre de sommets du graphe
DIAMTRE : Le diamtre dun graphe est la plus longue des distances entre
deux sommets.

27

SOUS GRAPHE : Soit G = (S, A) un graphe .Pour un sous-ensemble de

sommets S S, le sous-graphe de G induit par S est le graphe G =


(S, A(S)) dont l'ensemble des sommets est S et l'ensemble des artes

A(S) est form de toutes les artes de G ayant leurs deux extrmits
dans S. Autrement dit, on obtient G' en enlevant un ou plusieurs

sommets de G, ainsi que toutes les artes incidentes ces sommets.


GRAPHE PARTIEL :Soit G = (S, A) un graphe. Le graphe G' = (S, A') est un
graphe partiel de G, si A' est inclus dans A. Autrement dit, on obtient

G' en enlevant une ou plusieurs artes au graphe G.

28

3-CONNEXIT
Dfinition:
Un graphe G = (S,A) est dit simplement connexe ou connexe si :
, i,j S, il existe une chane entre i et j.
Un graphe orient est connexe si le graphe non orient associ est
connexe.

Dfinition:
Une composante connexe C dun graphe G = (S,A) est un sousensemble maximal de sommets tels que deux quelconques dentre
eux soient relis par une chane : si i C, alors :
j C, il existe une chane reliant i j,
k S \ C, il nexiste pas de chane reliant i k.

29

Les composantes connexes dun graphe G = (S,A) forment une


partition de S.

Un graphe est connexe si et seulement si il a une seule composante


connexe.
Le sous-graphe induit par une composante connexe C est connexe.

La composante connexe C qui contient un sommet i S est


C = { j S | il existe une chane reliant i j }

30

EXEMPLE:
Graphe connexe

5
7

31

EXEMPLE:
Graphe non connexe

5
7

32

Dfinition:
Un graphe G = (S,A) est fortement connexe si : i, j S, il existe
un chemin entre i et j.

Rq : la dfinition implique que si i et j sont deux sommets dun


graphe fortement connexe, alors il existe un chemin de i j et un
chemin de j i.
Proprits:
Thorme : Un graphe orient fortement connexe est connexe.

Thorme : Un graphe est fortement connexe si et seulement si


pour tout couple de sommets i, j il existe un circuit passant
par i et j.
33

Dfinition:
Une composante fortement connexe C f dun graphe G = (S,A) est
un sous-ensemble maximal de sommets tels que deux quelconques
dentre eux soient relis par un chemin: si i C f, alors
j C f, il existe un circuit passant par i et j,
k S \ C f, il nexiste pas de circuit passant par i et k.

Les composantes fortement connexes dun graphe G = (S,A) forment une


partition de S.

Un graphe est fortement connexe si et seulement si il a une seule composante


fortement connexe.
Le sous-graphe induit par une composante fortement connexe C f est
fortement connexe.
La composante fortement connexe C f qui contient un sommet i S est

C f = {j S | il existe un chemin reliant i j et un chemin reliant j i }

34

EXEMPLE:

Graphe fortement
connexe
35

EXEMPLE:

Graphe non fortement


connexe
36

ALGORITHMES DE LA CONSTRUCTION DE LA COMPOSANTE CONNEXE

A-Construction de la composante connexe :


(i) Marquer + le sommet i
(ii) Marquer +, tout sommet adjacent un sommet marqu +

Jusqu ce quon ne puisse plus marquer de sommets


Les sommets marqus sont ceux de la composante connexe de i

37

B-Construction de la composante fortement connexe:


(i) Marquer + et - le sommet i
(ii) Marquer - tout sommet prcdent dun sommet marqu- .et

marquer + tout sommet suivant un sommet marqu +


Jusqu ce quon ne puisse plus marquer de sommets
Les sommets marqus appartient la C f

38

Exemple:

Nous considrons les 2 graphes suivants. Pour chacun deux, dtes sil
est connexe ( resp.fortement connexe). Si non, donnez leurs
composantes connexes ( resp.fortement connexe).

3
3

5
39

4-Isthme et point d'articulation

Une arte d'un graphe est un isthme si sa suppression augmente le


nombre de composantes connexes du graphe.
Si le graphe est connexe, une arte est un isthme si et seulement si
elle n'appartient aucun cycle.

33
4
2
5
Un sommet d'un graphe est un point d'articulation si sa
suppression augmente le nombre de composantes connexes du
graphe. Plus gnralement, un ensemble d'articulation d'un graphe
est un ensemble de sommets dont la suppression augmente le
nombre de composantes connexes du graphe.
40

I.2- PROBLME DU PLUS COURT CHEMIN


P.C.C

41

1- INTRODUCTION

On considre un graphe G = (S, A) orient et valu.


Le problme de la recherche dun plus court chemin dans un graphe
orient a de trs nombreuses applications pratiques, telles :
Routages de paquets dans les rseaux,
Diamtre dun rseau de tlcommunications (qualit de service)

Problmes de Transport
Jeux (graphe dont les sommets sont les tats du jeu et les arcs les

transitions lgales)
Investissements, ordonnancements
Navigation

42

Les problmes de plus courts chemins (P.C.C )se divisent en


trois grands groupes :
Dterminer un plus court chemin d'un sommet origine s un sommet
destination t ;

Dterminer les plus courts chemins d'un sommet source s


tous les autres sommets du graphe ;
Dterminer les plus courts chemins entre toutes les paires (ordonnes)
de sommets du graphe.

43

2-Formulation Du Problme
Soit G = ( S, A, c ) un graphe orient valu ( rseau ).
c : U IR
cu valeur, poids, ou cot de l'arc u.

Le poids des arcs traduit un cot de parcours. Il peut sagir dune


distance (rseau routier), dun cot financier, dune dure, dun dbit,
etc...
Le poids dun chemin tant dfini par:

c() cu
u

Le problme du chemin de valeur minimale dun sommet x un


sommet y consiste trouver un chemin * de x vers y tel que :

c(* ) min

c() o chemin de x y

44

3
1

Un PCC de s d ?
*:s ac bd ; c(*)=8

5
5

a
3

-3

Un PCC de s d ? !
il nen existe pas !!

d
45

Condition dexistence
j

k
w

c(w)<0

chemin non lmentaire de i j


avec un circuit w
' restriction de
n'empruntant pas w

On a : c( ) = c( ' ) + c(w)
Si c(w)<0, il n'existe pas de chemin minimal de i j.

CN d'existence de chemins minimaux :

G ne doit pas contenir de circuits de cots ngatifs


( appels : circuits absorbants)
46

PROPRIT: Existence dun PCC


Il existe un PCC entre s et i ssi
(a) i est atteignable depuis s (i.e. un chemin de s i ), et
(b) il nexiste pas de circuit absorbant dans le graphe considr

PROPRIT FONDAMENTALE DES PCC:


Si : s0 s1 . . . sk est un PCC entre s0 et sk , alors tout
sous-chemin si . . . sj (avec 0 i < j k) de est un PCC
de si sj .

Principe doptimalit de Bellman


47

LES PROBLMES DE PCC


les PCC origine unique : On cherche tous les PCC depuis un
sommet de dpart s ;
les PCC destination unique : On cherche tous les PCC
menant un sommet darrive s ; et

les PCC pour toutes les paires de sommets de G.


ALGO
Algo. de Dijkstra et algo de Bellman = pour les PCC origine unique.
Algo de Floyd = pour les PCC entre tous les sommets.

48

3-Les Algorithmes de recherche de plus court chemin


Le cadre : les graphes orients G = (S,A,c) et valus avec c : A
Le problme :
Etant donn un sommet s, trouver la distance dun PCC entre s et
tout autre sommet i S.
Conventions :
* (x) : valeur d'un chemin minimal de s x,
(x) = + s'il n'existe pas de chemin de s x

49

3.1 -Algorithme de Moore-Dijkstra


G(X,A,c): graphe dordre n,

valu par des cots positifs. c : A

Lalgorithme de M-D permet la rsolution du PCC dun sommet


(numro 1) tous les autres. Il procdera en (n-1) itrations.
A une itration donne, lensemble des sommets est partitionn en deux
sous ensembles:
S1 et S1 S \ S1 avec 1 S1

On calcule les plus courts chemins de proche en proche par


ajustement successifs.

On note par (i), la longueur du plus court chemin de 1 i .


50
50

ALGORITHME DE MOORE-DIJKSTRA
1- Initialisation:

S1 2,3,..., n , (1) 0
i S1

c1i
(i)

si 1, i U
si non

2- Slectionner j S1 / ( j) min(i )
iS1

Faire S1 S1 \ j si S Fin, sinon aller 3


3- Faire i S / j, i A
1

(i) min (i) , ( j) c ji

Retour 2
51

EXP1 : ALGORITHME DE DIJKSTRA

7
2

S1

{1}

S1{4}

54

74

S1{3}

54

74

S1{2}

54

62

S1{5}=
S

54

62

4 3

Exp: P.C.C de 1 5
: 1 4 2
5

52

EXP 2: ALGORITHME DE DIJKSTRA


5

S1

{s}

S1{a}

8a

4a

S1{c}

8a

4a

9c

S1{b}

8a

4a

9c,b

S1{d}=
S

8a

4a

9c,b

Exp: P.C.C de s d
Il en existe 2 :
: s a b d c()=c()=9
: s a b d

53

3.2- Algorithme de Bellman


G(S,A,c): graphe dordre n, valu par des longueurs de signes
quelconques. c : A
Lalgorithme de Bellman permet la recherche du PCC dun sommet 1
tous les autres ou la dtection dun circuit absorbant dans un graphe

valu par des longueurs de signes quelconques.


A la kme itration, il calcule la longueur du PCC de 1 i contenant au
plus k arcs. Sil nexiste pas de circuit absorbant, un chemin de 1 i
contiendrait au plus (n-1) arcs.

54

ALGORITHME DE BELLMAN
1- Initialisation:
Posons 0 (1) 0 et i 0 (i)
k 1
2- Faire

k (1) : 0,
i 1, k (i ) : min ( k 1 (i ), k 1 ( j) c ji )
( j,i )U

3- Si k (i) k1 (i) i Fin

Sinon

Si k n - 1, k : k 1 et aller 2

Si k n il existe un circuit absorbant


55

EXP 1 : ALGORITHME DE BELLMAN


k

3s

5s

3s

8a

4a

10c

3s

8a

4a

7b

3s

8a

4a

7b

5
s

-1

-1

5
c

3
d

-3

2 (c) min (1 (c), 1 (s) csc , 1 (a) cac )


5

31

56

EXP 2 : ALGORITHME DE BELLMAN

3
5

c
3

-3

3s

5s

3s

8a

4a

10c

3s

7b

4a

9b

3s

6b

4a

8b

i S / 3 (i) 4 (i)
Dtection dun circuit absorbant
57

Dans un graphe sans circuit il existe toujours un sommet nayant


aucun prcdent on appelle 1 ce sommet ;
Dfinition :
On dfini le rang dun sommet dans un graphe sans circuit par :
r(1)= 0
r( i ) = le nombre darcs dans un chemin de 1 i de cardinalit
maximale (nb arc)

58

Algo de dtermination du rang dans un graphe sans circuit


1-Initialisation: S=X ,k=0

2-Sk={sommets sans prcdent dans S}


i Sk , r(i) =k

3-S=S\ Sk
Si S= FIN
Sinon k=k+1 , retour 2

59

EXEMPLE:
7

4
4
4
2

10

5
2

1
3

S1={3}, r(3)= 1
S2={2}, r(2)=2
S3={6}, r(6)= 3
S4={4,5}, r(4)= r(5)=4

-3

k=0 , S0={1} , r(1)=0

S5={7}, r(7)= 5

S6=

Lalgorithme de Bellman converge rapidement si les sommets sont


visit par ordre de rang croissant .
60

4
4
4

Recherche du P.C.C de 1 7
aprs avoir arrang les sommets 7
par rang:

10

2
5

-3

Algorithme de Bellaman:

11

71

11

63

42

112

33

11

63

32

96

33

135

11

63

32

86

33

124

11

63

32

86

33

124

P.C.C de 1 7:
: 1 3 2 6 4 7
c()=12

61

ALGORITHME DE BELLMAN AMLIOR


Une amlioration de lalgorithme de Bellman peut se faire en
utilisant les rsultats de litration en cours , i.e. : linstruction 2
devient:
k (1) : 0,
i 1, k (i ) : min ( k1 (i), k1 ( j) c ji , k ( j) c ji )
( j,i )U

3s

8a

4a

7b

3s

8a

4a

7b

5
s

-1

-1

5
c
-3

3
d

62

4
4
4

Recherche du P.C.C de 1 7
aprs avoir arrang les
sommets par rang:

10

5
2
5

-3

1
3

Algorithme de Bellaman amlior:


k

11

63

32

86

33

124

11

63

32

86

33

124

P.C.C de 1 7:
: 1 3 2 6 4 7 c()=12

63

3.3- ALGORITHME DE FLOYD-WARSHALL

G(S,A,c): graphe dordre n, valu par des longueurs de signes quelconques.


( c:A

Lalgorithme de Floyd-Warshall permet la recherche du pcc entre toute


paire de sommets ou la dtection dun circuit absorbant dans un graphe
valu par des longueurs de signes quelconques.
On dfinit les matrices:

L (l ij )1i , j n

L* (l*ij )1i , jn

l ij si (i,j) U

o l ij 0 si i j
sinon

c * o * est le p.c.c de i j
o l*ij
si un tel chemin
64

64

Lalgorithme de Floyd-Warshall permet de dterminer L* partir de


L en exactement n itration et ce en passant par les matrice L(k)
ainsi dfinies :

L(k ) (l k ij )1i , jn
L(0) (l 0ij )1i , jn (l ij )1i , jn

k 1 l k ij min l kij 1 , l kik1 l kkj1

l1ij

= longueur du p.c.c de i j ne pouvant avoir que 1 comme


sommet intermdiaire

lkij

= longueur du p.c.c de i j ne pouvant avoir que des sommet


intermdiaires appartenant {1,2,,k}
65

65

Pour pouvoir lire le p.c.c , il faut tenir compte des sommets


intermdiaires. Pour cela on introduit une seconde matrice P
dfinie par

P (0) (pij )1i , jn


0 si l ij
o p ij
i sinon
(0)

A chaque itration k , la matrice P est mise jour

66

66

ALGORITHME DE FLOYD-WARSHALL
pour k=1 n
pour i=1 n sauf k
si lik + lki < 0 FIN % prsence dun circuit ngatif
si lik alors

pour j=1 n sauf i


si lik + lkj < lij
lij lik + lkj
pij pkj
67

67

Complexit : O(n3).
Exemple:

3
1

-2

1
3

4
4

3
68

L(0)

0 3 3

2
0
2
2

2 0 1

4 4 0

L(1)

L(2)

3 3

0 2 2
1 0 1

4 4 0

3 5 3

0 2 2
1 0 1

4 4 0

P (0)

1 0 1

2 2 2
0 3 3

4 4 4

P (1)

1 0 1

2 2 2
1 3 3

4 4 4

P (2)

1 2 1

2 2 2
1 3 3

4 4 4

69

L(3)

3 5 3

0 2 2
1 0 1

4 4 0

L(4)

3 5 3

0 2 2 *
L
1 0 1

4 4 0

P (3)

P (4)

1 2 1

2 2 2
1 3 3

4 4 4

1 2 1

2 2 2
P*
1 3 3

4 4 4

70

OBTENTION DES PLUS COURT CHEMIN:

Pour obtenir un plus court chemin de i j , il suffit dutiliser la ime


ligne de la dernire matrice P*.
Par exemple, si on veut obtenir le plus court chemin du sommet 4
au sommet 1 , on consulte la matrice P(4) ainsi :

P41= 3 3 est donc le prdcesseur de 1 dans


P43: 4 4 est donc le prdcesseur de 3 dans ce mme chemin

Finalement , : 4 3 1

71