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
- Certificat de verification : Sous-ensemble
- Vérification : Calculer les sommes et vérifier les contraintes
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