2010-09-10 5 views
2

Étant donné un ensemble d'éléments, chacun avec une valeur, déterminer le nombre de chaque élément à inclure dans une collection de sorte que la valeur totale est inférieure ou égale à la limite donnée et la valeur totale est aussi grand que possible.Algorithme pour déterminer les meilleures combinaisons - Bin Packing

Exemple:

 
Product A = 4 
Product B = 3 
Product C = 2 
Product D = 5 

If Total Capacity = 10.5 , then the combination of B,C,D will be selected. 
If Total Capacity = 12.5 , then the combination of A,B,D will be selected. 
If Total Capacity = 17 , then the combination of A,B,C,D will be selected. 

Je cherche un algorithme (comme emballage ou sac poubelle) pour déterminer la combinaison. Toute aide appréciée.

+2

Quel est le contexte de cette question? Est-ce un problème réel que vous devez résoudre? Est-ce devoirs? –

+0

Je ne suis pas étudiant. C'est pour trouver la meilleure combinaison de remises fixes pour un produit. Le panier doit automatiquement trouver la plus grande valeur des remises par rapport aux remises données (remises éligibles pour un produit). Par exemple: Si un produit coûte 30 $ et qu'il est admissible à 5 $ de rabais, 10 $ de rabais et 50 $ de rabais, le panier devrait choisir 5 $ et 10 $. J'ai déjà mis en place un algorithme utilisant la théorie des nombres combinés. Je cherche d'autres astuces ou un algorithme pour ce scénario. toute aide appréciée. – user444651

Répondre

5

Vous dites que c'est "comme sac à dos". Pour autant que je puisse voir c'est un cas particulier de bounded knapsack problem appelé le problème de sac à dos 0-1.

Il est NP-complet.

Il existe de nombreuses façons de résoudre le problème. Voir cette question connexe pour une approche:

Si vous avez seulement quatre éléments puis juste tester toutes les possibilités devrait être assez rapide pour la plupart des buts.

Questions connexes