algorithmique (école d'ingénieur) · Chapitre 4 · Application directe du cours
Combien de répartitions ?
Répartition optimale d'une ressource · niveau 2
Énoncé
On note le nombre de répartitions d'un stock sur entrepôts, c'est-à-dire de suites d'entiers positifs ou nuls de somme inférieure ou égale à .
- Supposer le problème résolu et établir la récurrence des valeurs (base et hérédité).
- Calculer à l'aide d'un programme, et comparer avec .
- Calculer . Conclure sur l'énumération exhaustive.
Corrigé
- Supposons connues toutes les répartitions sur entrepôts. Le -ème entrepôt reçoit unités, , et les premiers reçoivent une répartition de somme au plus . Ces cas sont disjoints.
Base. pour tout (la seule répartition est la suite vide).
Hérédité. , : .
- Le calcul est le même que celui des gains maximum, en remplaçant par une somme (et des entiers longs, car les nombres deviennent vite énormes) :
BigInteger[][] N = new BigInteger[n + 1][S + 1];
for (int s = 0; s < S + 1; s++) N[0][s] = BigInteger.ONE; // base
for (int k = 1; k < n + 1; k++)
for (int s = 0; s < S + 1; s++) {
N[k][s] = BigInteger.ZERO;
for (int sp = 0; sp < s + 1; sp++) N[k][s] = N[k][s].add(N[k - 1][s - sp]);
}
On obtient . De façon générale : une répartition de somme au plus correspond à une répartition de somme exactement sur entrepôts (le dernier recevant le reliquat).
- . Même à un milliard de répartitions par seconde, l'énumération demanderait près d'un million d'années, alors que la programmation dynamique fait opérations.
N(4,5) = 126
N(20,100) = 29462227291176635718126100 % 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.