algorithmique (école d'ingénieur) · Chapitre 4 · Exercice de TD
Le glouton du gain marginal
Répartition optimale d'une ressource · niveau 2
Énoncé
Le glouton place les jetons un par un, chacun dans la boîte non pleine où il augmente le plus le gain.
- Écrire la fonction
int glouton(int[][] G, int m). - Les gains de la boîte sont concaves si les gains marginaux décroissent avec . Montrer que, si tous les gains sont concaves, le glouton donne une répartition optimale.
- Construire un contre-exemple à deux boîtes et deux jetons lorsque les gains ne sont pas concaves.
Corrigé
- On maintient le nombre de jetons de chaque boîte.
static int glouton(int[][] G, int m) {
int n = G.length, Q = G[0].length - 1;
int[] q = new int[n]; // q[i] : jetons déjà dans la boîte i
for (int j = 0; j < m; j++) { // j jetons ont été placés
int b = -1; // boîte non pleine de plus grand gain marginal
for (int i = 0; i < n; i++)
if (q[i] < Q && (b == -1 ||
G[i][q[i] + 1] - G[i][q[i]] > G[b][q[b] + 1] - G[b][q[b]]))
b = i;
q[b]++;
}
int gain = 0;
for (int i = 0; i < n; i++) gain += G[i][q[i]];
return gain;
}
Complexité : .
- Le gain d'une répartition est la somme des gains marginaux des jetons placés : , où . Si les gains sont concaves, chaque suite est décroissante : une répartition de jetons revient à choisir, dans chaque boîte, un début de la suite , et le gain total est la somme des gains marginaux choisis. La somme maximum s'obtient en prenant les plus grands gains marginaux de toutes les boîtes (dans la limite de par boîte), et comme chaque suite est décroissante, ces plus grands forment bien un début de chaque suite. C'est exactement ce que fait le glouton.
- Boîte : (non concave : le second jeton rapporte plus que le premier) ; boîte : ; . Le glouton met le premier jeton dans la boîte (gain marginal contre ), puis le second encore dans la boîte ( contre ) : gain . Deux jetons dans la boîte rapportent .
concave : glouton 21, optimum 21
contre-exemple : glouton 7, optimum 10100 % gratuit
La suite du chapitre est sur Adloun
- 9 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.