algorithmique (école d'ingénieur) · Chapitre 2 · Exercice de TD
Le plus léger des sacs optimaux
Le sac de valeur maximum · niveau 2
Énoncé
Plusieurs sacs peuvent avoir la valeur maximum. On veut, parmi eux, un sac de taille totale minimum.
- Sur , , , quel sac affiche la fonction
asvmdu cours ? Existe-t-il un sac de même valeur plus léger ? - Modifier le calcul pour qu'il mémorise, en plus de , la taille du sac retenu, et qu'il départage les égalités de valeur par la taille.
Corrigé
- . La fonction
asvmpréfère, en cas d'égalité, « l'objet n'est pas dans le sac » ; elle affiche le sac , de taille . Le sac a la même valeur et pour taille . - On calcule en même temps , la taille du sac retenu, et l'on compare les couples (valeur, taille) : plus grande valeur d'abord, plus petite taille en cas d'égalité.
for (int k = 1; k < n + 1; k++)
for (int c = 0; c < C + 1; c++) {
M[k][c] = M[k-1][c]; P[k][c] = P[k-1][c]; // objet k-1 absent
if (T[k-1] <= c) {
int v = V[k-1] + M[k-1][c - T[k-1]];
int p = T[k-1] + P[k-1][c - T[k-1]];
if (v > M[k][c] || (v == M[k][c] && p < P[k][c])) {
M[k][c] = v; P[k][c] = p; // objet k-1 présent
}
}
}
On obtient la valeur et la taille minimum . Pour afficher ce sac, on reconstruit en comparant les couples au lieu des seules valeurs (ou l'on mémorise un tableau des décisions).
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.