tgoop.com/the_algorithms/4925
Last Update:
Задача о рюкзаке
Комбинаторная оптимизационная задача, которая заключается в выборе подмножества предметов с определенными весами и стоимостями для помещения их в рюкзак с ограниченной вместимостью.
Алгоритм:
1. Создаем двумерный массив размером
2. Заполняем первую строку массива нулями.
3. Для каждого предмета, начиная с первого и до n
-го, проходим по всем возможным вместимостям рюкзака от 0
до W
:
- Если текущий предмет можно положить в рюкзак, то выбираем максимальное значение между суммой стоимости текущего предмета и стоимостью предметов, которые можно положить в рюкзак с ограниченной вместимостью.
- Если текущий предмет нельзя положить в рюкзак, то значение остается таким же, как и в предыдущей ячейке массива.
4. Значение в последней ячейке массива будет являться оптимальной стоимостью предметов в рюкзаке.
5. Чтобы восстановить решение, начиная с последней ячейки, проверяем, было ли значение обновлено.
Сложность: O(nW)
, где n
- число предметов, а W
- вместимость рюкзака.
BY Алгоритмы и структуры данных

Share with your friend now:
tgoop.com/the_algorithms/4925