Мне известны два варианта проблемы с рюкзаком.Версия 0-1 не может содержать дробные веса (возьмите это или оставьте это), например, я не могу взять половину второго лучшего выбора.Другая версия противоположна, дробные элементы разрешены.Эта небольшая разница чрезвычайно важна и работает в пользу дробной версии.
Дробная версия может быть решена с помощью жадного алгоритма.Вы можете просто взять как можно больше предмета с самой ЦЕННОЙ «ценой за единицу».Повторяйте, пока ваш грузовик не заполнится.
Версия 0-1 немного сложнее, поскольку ее невозможно решить с помощью простого жадного алгоритма.Например, скажем, ваш грузовик может перевозить 800 фунтов.Мы можем выбрать из таблицы
- 1 весом 500 фунтов стоимостью 1000 долларов (цена за единицу товара 2 фунта)
- 1 Скамья: вес - 701 фунта: стоимость - 1577,25 доллара за единицу 2,25 доллара США /фунты
- 3 Книжные шкафы: вес - 100 фунтов: стоимость - 200 долларов: единица 2 доллара / фунт
Жадный алгоритм может занять всего 1577,25 доллара.
Оптимальное значение3 книжных шкафа и стол = 1600 долларов.
Если бы выше была версия с дробным рюкзаком, то просто взяли бы скамью и 99 фунтов стола / книжного шкафа на общую сумму $ 1775,25.
В случае 0-1 нам нужно было бы использовать что-токак динамическое программирование для изучения всех решений.