Penso che sto cercando di risolvere un problema in qualche modo simile a un problema con lo zaino. Non sono sicuro però.
Vedi l'input fornito di seguito e la mia soluzione. Ci sono tre tipi di oggetti e 4 secchi. Il problema è di mantenere gli articoli il più uniformemente possibile nei 4 secchi. cioè la capacità dei secchi (o il numero di oggetti nel secchio) dovrebbe essere uguale (o quasi uguale). Puoi anche mantenere gli articoli di diversi tipi nello stesso bucket.
input di esempio:
item-type : A B C
#items : 12 36 25
Una soluzione semplice che sto usando al momento è la seguente:
-
Dato che ci sono 4 bucket, ciascun bucket dovrebbe ottenere
(sum of items)/4
. Per i dati di input di esempio sopra, è(12 + 36 + 25)/4
, cioè circa 18 articoli. La capacità di ciascuno dei bucket dovrebbe essere "CLOSE" a 18. -
Quindi inizia a mantenere gli elementi di tipo A nel primo bucket fino a quando il numero di elementi diventa 18. Tuttavia, abbiamo ancora bisogno di altri 6 elementi per il primo bucket dato che il numero di elementi di tipo A è 12. Pertanto tieni 6 articoli del tipo B nel primo bucket in modo che la capacità del primo bucket sia pari a 18. Come questo, riempire anche gli altri tre bucket.
Infine i quattro bucket sono i seguenti:
Bucket-1: (12 A items, 6 B items)
Bucket-2: (18 B items)
Bucket-3: (12 B items, 6 C items)
Bucket-4: (19 C items).
Penso che la complessità temporale di questo problema sia O (N ^ 2) , N è il numero di bucket.
Sarebbe bello se qualcuno mi aiutasse a migliorare ulteriormente la soluzione.
Note-1 : possiamo mescolare elementi di tipi diversi nello stesso bucket.
Nota 2 : dobbiamo anche mantenere in qualche modo le informazioni sul tipo di elemento nel bucket.