Рюкзак ветка и переплет

У меня есть следующие данные:

item   weight   value   value/weight
1      5        40      8
2      2        10      5
3      6        30      5
4      1        12      12
5      2        18      9

Емкость составляет 10. Как приступить к вычислению верхней границы для узла 0? Я рассчитываю верхнюю границу для узла 0 следующим образом:

ub = v + [W-w] * [v/w]
ub = 0 + [10] * [8] = 80

Или мне нужно отсортировать предметы в порядке убывания их стоимости / веса как 12,9,8,5,5? а потом рассчитать для верхней границы? Или я делаю все правильно, без сортировки, вычисления верхней границы и перехода к следующему пункту?

В методе без сортировки я не получу максимальную верхнюю границу в узле 0, я так думаю.

ub = 0 + [10] * [12] = 120 // if sorted

Спасибо уже за вашу помощь.

1 ответ

Верхняя граница для нулевого узла - это жадное решение дробного ранца. Просто возьмите элемент с наибольшим соотношением цена / вес и продолжайте вставлять его до тех пор, пока не останется свободного места или вы не вставите его полностью. И повторите процесс.

Другие вопросы по тегам