Adloun

Corrigé CCINP 2025 Informatique MPI — Partie II (Q6 à Q16) : Bin-packing : NP-complétude, 3/2-approximation, Premier Casier en OCaml

Sujet officiel du concours CCINP, session 2025, épreuve Informatique MPI. Corrigé rédigé par Ibrahim Alame.

Sujet officiel (PDF, site du concours)

Énoncé

Un rangement de objets dans boîtes est une fonction ; la boîte contient . Pour des tailles , il est valide si pour tout . bin-packing : étant donnés et , existe-t-il un rangement valide ? partition : étant donnés des entiers , existe-t-il avec ? (admis NP-complet).

Q6. bin-packing est dans NP.
Q7. Il est NP-complet (réduction depuis partition).

min-bin-packing cherche le plus petit admettant un rangement valide. Algorithme 1 (Premier Casier) : objets traités dans l'ordre , chacun dans la première boîte de la liste qui peut le recevoir, sinon dans une boîte nouvelle ajoutée en fin ; . Algorithme 2 (Premier Casier Décroissant) : Premier Casier sur les objets triés par tailles décroissantes. On note le nombre de boîtes de l'algorithme 2, l'optimum, .

Q8. Si contient un objet de taille , alors .
Q9. Sinon, contiennent au moins objets, dont aucun ne rentre dans .
Q10. Justifier , puis, en admettant , en déduire .

Types du sujet. Coquilles rectifiées : ses commentaires disent « de la boîte » pour les champs de objet et « tailles des objets » pour objets (une objet list) ; les types sont inchangés :


type objet = {
  id : int;         (* identifiant de l'objet *)
  taille : float;   (* taille de l'objet *)
}

type boite = {
  charge : float;        (* somme des tailles des objets de la boîte *)
  objets : objet list;   (* objets contenus dans la boîte *)
}

Q11. La constante boite_vide : boite.
Q12. ajoute_boite : objet -> boite -> boite ajoute un objet à une boîte.
Q13. trouve_boite : boite list -> objet -> int, récursive : indice (depuis ) de la première boîte pouvant contenir l'objet, sinon longueur de la liste.
Q14. transforme : 'a -> ('a -> 'a) -> int -> 'a list -> 'a list, récursive : remplace l'élément x d'indice i par f x, ou ajoute f d en fin si i dépasse la taille.
Q15. premier_casier : objet list -> boite list (algorithme 1, liste de boîtes rendue).
Q16. premier_casier_decroissant : objet list -> boite list (algorithme 2), avec List.sort et compare.

Corrigé

Q6. Rappel du cours : un problème de décision est dans NP si toute instance positive admet un certificat de taille polynomiale en celle de l'instance, vérifiable en temps polynomial. L'instance est , de taille au moins (les rationnels sont écrits) plus bits pour , plus la taille des numérateurs et dénominateurs des .

Le vérificateur accepte si et seulement si est un rangement valide : une instance est positive si et seulement si elle possède un certificat accepté. Donc bin-packing NP. Ce que le correcteur attend : la taille polynomiale du certificat, que le jury dit rarement précisée.

Q7. On montre partition bin-packing. Les sont des entiers naturels (cadre usuel de partition) ; les nuls ne changent pas la réponse (on les place dans ou non indifféremment), on les retire. Soit . Transformation :

Coût. Calculer , tester la parité et les , écrire les fractions : opérations sur des entiers de taille au plus celle de l'instance, donc temps polynomial, et l'instance produite a une taille polynomiale.

Équivalence (dans le troisième cas, les deux premiers étant réglés ci-dessus).

est donc une réduction polynomiale. partition étant NP-complet, tout problème de NP se réduit à partition, donc (composition de réductions polynomiales) à bin-packing, qui est NP-difficile ; avec Q6, bin-packing est NP-complet. (L'équivalence a été vérifiée par force brute sur instances aléatoires de partition d'au plus entiers.)

100 % gratuit

La suite du corrigé est sur Adloun

Le corrigé rédigé en entier, question par question, et le tuteur pour poser des questions sur ce sujet.

Voir le corrigé complet, gratuitement

Inscription gratuite en 30 secondes (e-mail, nom d'utilisateur, mot de passe, classe ou profil), sans carte bancaire : arrivée directe sur le corrigé.

Toutes les parties de l'épreuve

Corrigé complet gratuit →