Académique Documents
Professionnel Documents
Culture Documents
Paix-Travail-Patrie Peace-Work-Fatherland
******* *******
UNIVERSITE DE YAOUNDE 1 THE UNIVERSITY OF YAOUNDE 1
******* *******
FACULTE DES SCIENCES FACUTY OF SCIENCE
******* *******
DEPARTEMENT D’INFORMATIQUE COMPUTER SCIENCE DEPARTMENT
******* *******
NIVEAU L2 LEVEL L2
1. Principes
Introduit par Richard Bellman dans les années 1950, la programmation dynamique
est un paradigme de programmation, c'est-à-dire une façon particulière
d'appréhender un problème algorithmique donné. Elle permet de résoudre des
problèmes en les décomposant en sous-problèmes, puis à résoudre les sous-
problèmes, des plus petits aux plus grands en stockant les résultats intermédiaires. La
programmation dynamique peut être vue comme une amélioration du DPR (Diviser
Pour Reigner) car consiste à découper le problème de base en sous problèmes.
2. Domaines d’applications
La programmation dynamique est appliquée dans les domaines tels
l’informatique, la chimie, la biologie et bien d’autres.
Un exemple concret est dans les processus de chargements des cargos. Dans ce
processus on veut maximiser le nombre d’objets ayant la plus grande valeur que peut
contenir le cargo en respectant le volume de ce dernier. Donc on cherchera des
objets ayant une très grande valeur tout en respectant les limites du cargo.
II. Résolution des problèmes d’allocation multidimensionnels :
problème du sac a dos
Propriété :
Si μ1, μ2, …, μN est une politique optimale pour les N périodes, et si on atteint
l’état xk à la période k en suivant cette politique, alors la politique partielle μ k, μk+1, …,
μN est optimale pour les N-k+1 dernières périodes, en débutant avec l’état xk.
2. Exemple d’application
Pour le problème du sac à dos, nous disposons de 3 types d’objets a remplir
astucieusement dans le sac, le sac disposant d’un volume maximum de 6 et les
valeurs des objets suivantes :
3.1. Problème
Notre problème ici est une généralisation du problème sac à dos. Nous avons
m sacs a dos de capacités différentes et les remplir simultanément.
Nos contraintes :
Pour la suite nous allons prendre m=2 c'est-à-dire en quelque sorte considérer
2 sac.
Nous allons construire un arbre avec pour base les tailles maxi de nos
ressources
Nous allons nous servir du binaire, c'est-à-dire : si nous somme a l’état un(1)
nous considérons que l’objet est mis dans le sac sinon si l’état est a zéro(0)
l’objet n’est pas utiliser.
En vue de l’obtention d’une solution optimal nos allons remplir les sacs en
même temps selon se model :
o Si nous somme à l’état (1,0) alors l’objet est mis dans le sac m =1
o Si nous somme à l’état (0,1) alors l’objet est mis dans le sac m =2
o Si nous somme à l’état (0,0) alors l’objet est mis dans aucun sac
o L’état (1,1) n’est pas considéré car l’objet ne peut pas être dans 2 sacs.
Conclusion
Grace à ce travail, nous savons dorénavant que la programmation dynamique
permet de résoudre les problèmes d’optimisation ayant une ou plusieurs ressources à
prendre en compte, plus précisément des fonctions a plusieurs variables. Mais une
conséquence directe est sur l’utilisation excessive de la mémoire du au nombre de
dimensions à manipuler. Mais reste à savoir si cette méthode est la plus optimale car
il en existe plusieurs autres méthodes de résolution de ce type de problèmes : le
lagrangien, l’heuristique et bien d’autres.