Chapitre 1
Programmation dynamique
1.1. Introduction
La programmation dynamique est une méthode d’optimisation procédant par énu-
mération implicite des solutions. Bien que déjà pratiquée auparavant, elle est élevée
au rang de méthode générale de résolution avec les travaux de Bellman [BEL 54,
BEL 57], qui formalise l’approche et la baptise. Cette approche permet de résoudre
efficacement des problèmes de décision séquentiels. Plus généralement, elle consiste
à aborder des problèmes d’optimisation avec une stratégie consistant en deux points
essentiels :
décomposer le problème en une séquence de problèmes,
établir une relation de récurrence entre les solutions optimales des problèmes.
L’intitulé “programmation dynamique” se justifie davantage par des considérations de
mode (le domaine s’est développé parallèlement à la programmation linéaire) que par
des arguments purement scientifiques. Dans [DRE 02] est reproduit l’extrait suivant
de l’autobiographie de Bellman [BEL 84] :
My first task was to find a name for multistage decision processes. In the first
place I was interested in planning, in decision making, in thinking. But planning
is not a good word for various reasons. I decided therefore to use the word
‘programming’. I wanted to get across the idea that this was dynamic, this was
multistage, this was time-varying–I thought, let’s kill two birds with one stone.
Let’s take a word that has an absolutely precise meaning, namely dynamic, in
the classical physical sense.
Chapitre rédigé par Bruno ESCOFFIER et Olivier SPANJAARD.
1
2 Optimisation Combinatoire
Autrement dit, le mot programmation doit ici s’entendre comme un plan d’action,
tandis que le mot dynamique indique le découpage en phases du problème. Préci-
sons d’emblée que le paradigme de la programmation dynamique est mal défini, et
que plusieurs formalismes coexistent dans l’abondante littérature qui lui est consa-
crée [BEL 57, MIT 64, KAR 67, MIT 74, LAU 79, MOR 82]. Nous avons adopté ici
un formalisme intermédiaire qui a ses avantages et ses inconvénients, et peut donc
certainement être discuté. Dans le contexte de ce livre, nous nous sommes surtout
préoccupés de ses vertus structurantes. Après avoir introduit intuitivement l’idée de
la programmation dynamique sur un exemple simple et ludique (section 1.2), nous
présentons un cadre formel assez général (section 1.3) reposant sur les concepts d’es-
pace d’états, de structure de transition (entre les états) et de structure de préférences
(entre les politiques). Nous montrons alors comment divers problèmes combinatoires
peuvent entrer dans ce cadre (section 1.4), et présentons deux procédures de résolution
(avant et arrière) dont nous établissons l’admissibilité (section 1.5). Dans la section
1.6, nous résolvons par programmation dynamique les problèmes introduits dans la
section 1.4. Enfin, dans une dernière partie (section 1.7), nous présentons quelques
extensions.
1.2. Un premier exemple
EXEMPLE.– LE FRANCHISSEMENT DU PONT. On considère quatre individus a, b, c, d
qui rentrent de randonnée à la nuit tombée. Ils rencontrent un pont suspendu enjam-
bant une rivière. Un panneau indique qu’au maximum deux personnes simultanément
peuvent emprunter le pont pour des raisons de sécurité. Les quatre compagnons dé-
cident de franchir le pont deux par deux. Cependant, le groupe ne disposant que d’une
seule lampe de poche, une personne se trouvant après le pont doit retourner au point
de départ pour rapporter la lampe après chaque franchissement. Précisons enfin que
l’individu amet 1 minute pour traverser, bmet 2 minutes, cmet 5 minutes et dmet
10 minutes. Si deux membres du groupe traversent le pont ensemble, ils marchent à la
vitesse du membre le plus lent (par exemple, aet cmettent 5 minutes pour traverser
ensemble). Dans quel ordre le groupe doit-il traverser pour minimiser le temps total
de franchissement?
Ce problème se résout bien par une démarche de programmation dynamique. Tout
d’abord, on se convaincra sans peine qu’il est nécessaire d’effectuer cinq traversées
(allers ou retours) pour que tout le monde ait franchi le pont. Remarquons ensuite
qu’à l’issue d’une traversée, on peut résumer la situation (ce qu’on appelle l’état) par
la liste des personnes qui se situent avant le pont. Il s’agit donc ici de trouver un ordre
de passage optimal (ce qu’on appelle une politique) pour passer de l’état (a, b, c, d)à
l’état ().
A l’issue de la première traversée, deux personnes restent avant le pont : soit (a, b)
au bout de 10 minutes (temps de passage de cet d), soit (a, c)au bout de 10 minutes,
Programmation dynamique 3
soit (a, d)au bout de 5 minutes, soit (b, c)au bout de 10 minutes, soit (b, d)au bout
de 5 minutes, soit (c, d)au bout de 2 minutes. Après le retour d’un personne, quatre
états seulement peuvent se présenter :
-(a, b, c)sont avant le pont,
-(a, b, d)sont avant le pont,
-(a, c, d)sont avant le pont,
-(b, c, d)sont avant le pont.
L’état (a, b, d)survient dans trois cas :
cas 1. (b, d)sont restés en arrière (5 minutes) et aest revenu (1 minute),
cas 2. (a, d)sont restés en arrière (5 minutes) et best revenu (2 minutes),
cas 3. (a, b)sont restés en arrière (10 minutes) et dest revenu (10 minutes).
Dans le premier cas, il a donc fallu 5+1=6 minutes pour arriver à l’état (a, b, d). Dans
le second cas il a fallu 5+2=7 minutes et dans le dernier cas il a fallu 10+10=20 mi-
nutes. Or, quoi qu’il advienne ensuite, les décisions prises pour arriver à l’état (a, b, d)
n’auront pas d’influence sur le temps qu’il faudra pour passer de l’état (a, b, d)à l’état
(), où tous les individus ont franchi le pont. Par conséquent, les cas 2 et 3 peuvent être
ignorés dans la suite de la recherche.
De même, on montre facilement qu’il faut au mieux 11 minutes pour arriver à l’état
(a, b, c), 3 minutes pour arriver à l’état (a, c, d)et 4 minutes pour arriver à l’état
(b, c, d). Au bilan, voici les informations pertinentes à retenir à l’issue des deux pre-
mières traversée (deux personnes franchissent le pont à l’aller et une personne revient
au retour) :
- il faut au mieux 11 minutes pour atteindre l’état (a, b, c),
- il faut au mieux 6 minutes pour atteindre l’état (a, b, d),
- il faut au mieux 3 minutes pour atteindre l’état (a, c, d),
- il faut au mieux 4 minutes pour atteindre l’état (b, c, d).
A l’issue de la troisième traversée, il reste (a),(b),(c)ou (d)avant le pont. L’état (a)
survient dans trois cas :
cas 1. on était dans l’état (a, b, c)(11 minutes) et (b, c)ont traversé (5 minutes),
cas 2. on était dans l’état (a, b, d)(6 minutes) et (b, d)ont traversé (10 minutes),
cas 3. on était dans l’état (a, c, d)(3 minutes) et (c, d)ont traversé (10 minutes),
Il faut donc au mieux 10+3=13 minutes pour atteindre l’état (a)à l’issue de la troi-
sième traversée. En répétant le même raisonnement, on trouve :
- il faut au mieux 13 minutes pour atteindre l’état (a),
- il faut au mieux 14 minutes pour atteindre l’état (b),
- il faut au mieux 13 minutes pour atteindre l’état (c),
- il faut au mieux 8 minutes pour atteindre l’état (d).
Une personne revient à nouveau, et il reste alors (a, b),(a, c),(a, d),(b, c),(b, d)ou
(c, d)avant le pont. L’état (a, b)survient dans deux cas :
cas 1. (a)est resté en arrière (13 minutes) et best revenu (2 minutes),
cas 2. (b)est resté en arrière (14 minutes) et aest revenu (1 minute).
4 Optimisation Combinatoire
Il faut donc au mieux 13 + 2 = 14 + 1 = 15 minutes pour atteindre l’état (a, b)à
l’issue de la quatrième traversée. De même, on montre que :
- il faut au mieux 15 minutes pour atteindre l’état (a, b),
- il faut au mieux 14 minutes pour atteindre l’état (a, c),
- il faut au mieux 9 minutes pour atteindre l’état (a, d),
- il faut au mieux 15 minutes pour atteindre l’état (b, c),
- il faut au mieux 10 minutes pour atteindre l’état (b, d),
- il faut au mieux 13 minutes pour atteindre l’état (c, d),
Les deux personnes restantes traversent le pont pour la dernière fois et le franchisse-
ment est terminé. Par exemple, si au bout de 4 traversées, on est dans l’état (a, b), il
aura fallu 15 + 2 = 17 minutes en tout pour atteindre l’état (). On vérifie facilement
qu’on ne peut pas faire mieux. On montre ainsi qu’il faut au mieux 17 minutes pour le
franchissement du pont.
Cette démarche de résolution est résumée dans le tableau 1.1. Chaque colonne cor-
respond à un aller ou un retour, et il y figure tous les états possibles à l’issue de cette
traversée. De plus, le meilleur temps pour atteindre un état donné figure en gras. Par
exemple, la ligne a: 10 + 1 = 11 en haut de la colonne 2 signifie que aest revenu lors
de la deuxième traversée et qu’à l’issue de cette traversée 11 minutes se sont écoulées.
On ne peut pas faire mieux pour atteindre l’état (a, b, c). On peut reconstituer une po-
litique optimale en remontant le temps à partir de la durée optimale de 17 minutes :
-a, b passent le pont lors de la cinquième traversée et donc on était dans l’état (a, b)à
l’issue de la quatrième traversée,
-arevient lors de la quatrième traversée et donc on était dans l’état (b)à l’issue de la
troisième traversée,
-c, d passent le pont lors de la troisième traversée et donc on était dans l’état (b, c, d)
à l’issue de la deuxième traversée,
-brevient lors de la deuxième traversée et donc on était dans l’état (c, d)à l’issue de
la première traversée,
-a, b passent le pont lors de la première traversée.
La démarche de résolution par programmation dynamique demande 42 additions et
27 comparaisons pour trouver une politique optimale. Or, il y a 6×2×3×3 = 108
politiques possibles et une démarche par énumération exhaustive demanderait donc
4×108 = 432 additions et 107 comparaisons. Ainsi, on constate un gain substantiel
d’efficacité en résolvant le problème par programmation dynamique. Dans la section
suivante, nous décrivons un formalisme général permettant d’appliquer cette méthode,
et nous donnons des conditions garantissant son exactitude. De nombreux problèmes
combinatoires peuvent être résolus par cette méthode, en les décomposant en une sé-
quence de problèmes de même nature.
Programmation dynamique 5
1(aller) 2(retour) 3(aller)
(a, b)c, d :10 (a, b, c)a:10+1=11 (a)b, c : 11+5=16
b: 10+2=12 b, d : 6+10=16
(a, c)b, d :10 c: 10+5=15 c, d :3+10=13
(a, b, d)a:5+1=6 (b)a, c : 11+5=16
(a, d)b, c :5b: 5+2=7 a, d : 6+10=16
d: 10+10=20 c, d :4+10=14
(b, c)a, d :10 (a, c, d)a:2+1=3 (c)a, b :11+2=13
c: 5+5=10 a, d :3+10=13
(b, d)a, c :5d: 10+10=20 b, d : 4+10=14
(b, c, d)b:2+2=4 (d)a, b :6+2=8
(c, d)a, b :2c: 5+5=10 a, c :3+5=8
d: 10+10=20 b, c : 4+5=9
4(retour) 5(aller)
(a, b)a:14+1=15 ( ) a, b :15+2=17
b:13+2=15
(a, c)a:13+1=14 a, c : 14+5=19
c: 13+5=18
(a, d)a:8+1=9 a, d : 9+10=19
d: 13+10=23
(b, c)b:13+2=15 b, c : 15+5=20
c: 14+5=19
(b, d)b:8+2=10 b, d : 10+10=20
d: 14+10=24
(c, d)c:8+5=13 c, d : 13+10=23
d: 13+10=23
Tableau 1.1. Résolution du problème de franchissement du pont.
1.3. Formalisation
1.3.1. Espace d’états, ensemble des décisions, fonction de transition
Soit un entier nN. Nous supposons que le problème que l’on veut résoudre peut
être découpé en n+ 1 périodes 0,...,n. Nous considérons pour chaque période i, un
ensemble Sireprésentant l’ensemble des états à la fin de la période i. Nous supposons
de plus que :
SiSj=(si i6=j), ce qui n’est pas une hypothèse restrictive (si tel n’est pas
le cas, on peut toujours redéfinir les états en ajoutant l’indice de la période correspon-
dante).
– Il y a un unique état initial s0et un unique état final sn. Là encore, cette hypo-
thèse n’est pas restrictive puisque si tel n’est pas le cas, on peut toujours rajouter un
1 / 30 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !