Problème d’optimisation de sélection d’objets avec contraintes de poids et valeur.

Problème de décision

  • Instance :
    • Ensemble d’objets
    • Fonction de poids
    • Fonction d’utilité
    • Capacité maximale
    • Seuil d’utilité
  • Question : Existe-t-il tel que et ?

Complexité

Complexité donc non polynomial

Sac à dos est NP-complet.

Certificat

Réductions

Partition ​ Sac à dos

Idée : Une partition équilibrée correspond à un sac avec poids = utilité = moitié de la somme totale.

Sous-somme ​ Sac à dos

Par transitivité : Sous-somme Partition ​ Sac à dos

Ou directement :

Programmation dynamique

Bien que NP-complet, le sac à dos admet un algorithme pseudo-polynomial en .

Taille de l’entrée : Complexité : donc exponentielle en la taille de l’entrée.

Self-réductibilité

Sac à dos est self-réductible.

Algorithme avec oracle

// sacadosdec(X, w, u, B, k) -> oui/non  (oracle O(1))

// Trouver k max avec dichotomie
k = 1
tant que sacadosdec(X, w, u, B, k):
    k = k+1
k = k-1  // k max trouvé

// Construire la solution
pour x ∈ X:
    si sacadosdec(X\{x}, w, u, B, k):
        X = X \ {x}
retourner X