Для упаковки максимального количества предметов в минимальное число коробок можно использовать алгоритм Next Fit Reducing (NFD). 1 Он обеспечивает максимальное использование коробок при минимальном количестве используемых коробок. 1
Алгоритм NFD: 1
- Сортировать товары в порядке убывания веса. 1 Это гарантирует, что более тяжёлые товары будут рассмотрены в первую очередь в процессе упаковки. 1
- Инициализировать массив блоков, каждый из которых содержит свою оставшуюся ёмкость (изначально заданную на ёмкость блока). 1
- Выполнить итерацию по отсортированным элементам и для каждого элемента: 1
- Если вес товара превышает вместимость коробки, пропустить его, так как он не поместится ни в одну коробку. 1
- В противном случае запустить вложенный цикл, чтобы найти подходящую коробку с достаточной оставшейся ёмкостью, чтобы выдержать вес предмета. 1
- Если найдена подходящая коробка, поместить в неё товар и обновить оставшуюся вместимость коробки. 1
- Если допустимая ячейка не найдена, создать новую ячейку и поместить в неё элемент. 1
- После обработки всех товаров будет список коробок с упакованными товарами и их соответствующими оставшимися вместимостями. 1
Также для упаковки можно использовать мягкую упаковку, например, текстильные сумки и чистые мусорные мешки, вместо коробок. 2 Ещё можно складывать вещи в коробки вертикально, чтобы они были упакованы более плотно и заняли весь объём. 2