Algorithmes pour sac à dos bidimensionnel et tridimensionnel

8

Je sais que les problèmes de sac à dos 2D et 3D sont des NPC, mais existe-t-il un moyen de les résoudre dans un délai raisonnable si les instances ne sont pas très compliquées? La programmation dynamique fonctionnerait-elle?

Par sac à dos 2D (3D), je veux dire que j'ai un carré (cube) et une liste d'objets, toutes les données sont en centimètres et mesurent au plus 20 mètres.

Anonyme
la source
1
Quelles formes ont vos objets? Quelle est la taille de la zone environnante; a-t-il une taille limitée?
Raphael
Recherchez-vous un solveur exact ou l'heuristique est-elle suffisante?
stefan
1
Pourriez-vous être plus précis? Que sont les "tailles" et qu'est-ce que ? Quelle est précisément votre contribution, quelles sont précisément vos contraintes et qu'essayez-vous précisément d'optimiser? m
JeffE
1
Et qu'avez-vous déjà essayé?
JeffE
4
Le problème dont vous parlez n'est généralement pas appelé un problème de sac à dos; cela passe généralement par le problème du nom du casier , et vous devriez pouvoir trouver beaucoup plus d'informations à ce sujet sous ce nom.
Steven Stadnicki

Réponses:

1

Knapsack peut être résolu par la programmation dynamique en pseudo-polynomial temps avec le nombre d'objets et la taille du sac à dos. Ainsi, tant que votre conteneur est petit (numériquement), vous pouvez résoudre le problème efficacement. Notez que vous pouvez régler en modifiant la résolution; pas besoin de mesurer un conteneur d'expédition au µm, mais les compteurs sont probablement grossiers (selon vos objets).O(nW)nWW

Le sac à dos peut également être approximativement arbitrairement bien calculé en temps polynomial (voir les schémas d'approximation en temps polynomial ).

Cependant, Knapsack ne considère que l'ajustement des nombres dans un autre nombre; il ne se soucie pas de la géométrie. Si vous avez besoin de "puzzle", vous avez besoin d'un autre problème; compte tenu de Tetris, c'est probablement beaucoup plus difficile que Knapsack .

Raphael
la source
0

GREEDY trouvera toujours une solution raisonnable, mais pas nécessairement optimale. Placez simplement le plus gros objet qui tiendra à chaque fois dans le sac à dos. Arrêtez lorsque plus aucun objet ne rentre.

salsaman
la source
Non, ce n'est pas vrai. Notez que dans le problème du sac à dos, les objets ont également des valeurs. Remplir goulûment par taille peut donner une solution arbitrairement mauvaise.
Raphael
@Raphael: Eh bien, pas arbitrairement mauvais, mais je ne considérerais pas la solution gourmande comme une solution raisonnable . L'approche gourmande empire pour les analogues de dimension supérieure.
A.Schulz
@ A.Schulz En fait, oui arbitrairement mauvais! L'heuristique gourmande pour le sac à dos, utilisant soit la taille, soit le rapport qualité-prix peut facilement être montrée comme n'ayant aucune garantie d'approximation finie pour OPT.
Aaron
Les gens ... veuillez arrêter de dire "Eh bien, je ne sais pas ça! Mais ..." avant de faire vos % # $ ( devoirs dessus!
MickLH