Adloun

informatique (MP2I/MPI) · Chapitre 17 · Application directe du cours

La table du sac, remplie à la main

Programmation dynamique · niveau 2

Énoncé

Quatre objets de poids et de valeurs , capacité . Remplir la table du chapitre, lire l'optimum, puis reconstruire les objets choisis.

Corrigé

La table (ligne : les premiers objets ; colonne : la capacité) :

012345
000000
003333
003447
003457
003457

L'optimum est .

La reconstruction se lit de bas en haut, à capacité courante :

  • : , l'objet n'est pas pris ;
  • : , l'objet n'est pas pris ;
  • : , l'objet est pris ; devient ;
  • : , l'objet est pris ; devient .

Solution : les objets et , poids , valeur . La capacité restante est nulle, ce qui est un bon contrôle : elle doit toujours être , et l'on peut vérifier que la somme des poids des objets choisis vaut moins la capacité restante.

Le piège de la reconstruction est de tester m[i][c] > m[i-1][c] avec un strict et d'en tirer que l'objet est pris — c'est correct — mais d'oublier que l'égalité n'exclut rien : quand deux solutions de même valeur existent, la table n'en désigne qu'une. La remontée rend une solution optimale, jamais « la » solution optimale.

Exercices semblables

Le cours du chapitre · Tous les exercices du chapitre