Алгоритм динамического программирования для оптимального заполнения рюкзака хорошо работает в случае одного рюкзака. Но есть ли эффективный известный алгоритм, который будет оптимально заполнять 2 рюкзака (емкости могут быть неравными)?
Я пробовал следующие два подхода, и ни один из них не является правильным.
- Сначала заполните первый рюкзак, используя оригинальный алгоритм DP, чтобы заполнить один рюкзак, а затем заполнить другой рюкзак.
- Сначала заполните рюкзак размером W1 + W2, а затем разделим решение на два решения (где W1 и W2 - емкости двух ранцепов).
Заявление о проблемах (см. также Проблема с рюкзаком в Википедии):
-
Мы должны заполнить рюкзак набором элементов (каждый элемент имеет вес и значение), чтобы максимизировать значение, которое мы можем получить от предметов, имея общий вес, меньший или равный размер рюкзака.
-
Мы не можем использовать элемент несколько раз.
- Мы не можем использовать часть элемента. Мы не можем взять часть элемента. (Каждый элемент должен быть полностью включен или нет).