Cum se rezolvă problema ambalării în recipiente (unidimensionale)

  • C ++
  • Gestionarea sarcinilor
  • algoritmi

Bună ziua.
Confruntat cu sarcina distribuirii de elemente N de dimensiuni diferite în recipiente M de dimensiuni diferite. Întreaga condiție este formulată astfel:







Ca intrare există:
M - numărul de containere, M de numerele A1. An, care corespunde capacității containerelor (în elementele).
N - număr de elemente, numere N B1. Bn, respectiv dimensiunile acestor elemente.

Sarcina este de a oferi distribuția optimă a elementelor de-a lungul containerelor în această variantă:






Numerele de ieșire N, unde numărul j trebuie să indice numărul containerului în care am pus elementul j.

De exemplu:
4 containere, capacitate
11 7 4 3
5 elemente, dimensiune
6 3 2 4 5

Concluzie (una dintre cele posibile):
1 2 4 2 1

Din păcate, în problemele algoritmice și NP nu este puternică și până acum ideile sale pe acest subiect nu sunt foarte multe. M-am gândit la sortarea de la sortare mai mare la mai mică și mai ușoară prin umplere - adică Încercați cât mai mult posibil să utilizați cel mai mare container, apoi cel de-al doilea, etc. dar în acest caz am problema păstrării indexării inițiale (ordin).

Spuneți-mi, vă rog, fie articole de citit pe acest subiect, fie un algoritm adecvat. Vă mulțumim anticipat)







Articole similare

Trimiteți-le prietenilor: