Vous êtes sur la page 1sur 1

Algorithmique avancée

TD autour de la programmation dynamique

1 Le problème du sac à dos


On dispose d’un sac à dos ne pouvant supporter qu’un certain poids et l’on considère un ensemble d’objets
ayant chacun un poids et une valeur. La question est la suivante : quels objets peut-on mettre dans le sac sans
dépasser sa capacité de poids afin de maximiser la valeur totale ?

— L’ensemble des objets est modélisé par un n-uplet de couples S = ((w1 , v1 ), (w2 , v2 ), . . . , (wn , vn )), où
wi représente le poids de l’objet et vi sa valeur
— On note W la capacité du sac et on suppose
Pn que ∀i, 1 ≤ i ≤ n, wi ≤ W, wi > 0 et vi > 0
— On émet également l’hypothèse que i=1 wi > W
— Un choix d’objets est un n-uplet (x1 , x2 , . . . , xnP
), où chaque xi vaut 1 ou
Pn0, selon que l’on prenne l’objet i
n
ou non. Le poids d’une telle sélection est donc i=1 xi wi et sa valeur i=1 xi vi
Pn Pn
On cherche donc le n-uplet de binaires (x1 , x2 , . . . , xn ) qui maximise i=1 xi vi , sous la contrainte i=1 xi wi <
W

1. Proposez une solution optimale pour l’exemple ci-dessous


2. Proposez ensuite une version naı̈ve d’un algorithme récursif permettant de résoudre le problème
3. Retravaillez ensuite votre algorithme pour proposer une version “Top down”, puis une version “Bottom
up”. Pour chaque version, vous remplirez manuellement le tableau complété par l’algorithme itérativement
ou récursivement

2 La distance d’édition
La distance de Levenshtein, aussi appelée distance d’édition, permet de mesurer la différence entre deux chaı̂nes
de caractères, à savoir le nombre d’opérations minimal pour passer de l’une à l’autre. Parmi les opérations, on prend
en considération la suppression ou l’insertion d’un caractère, ainsi que la substitution d’un caractère par un autre.

Proposez un algorithme de programmation dynamique permettant de résoudre ce problème et mettez-le en


application en remplissant le tableau pour calculer la distance entre les couples de chaı̂nes suivants :

— (sapins,lapin)
— (lampion,champions)
— (campagnol,montagne)

Vous aimerez peut-être aussi