Правильность / доказательство проблемы упорядоченного рюкзака

#algorithm #knapsack-problem #greedy

#алгоритм #проблема с рюкзаком #жадный

Вопрос:

Вору предоставляется выбор n предметов для кражи, но у него есть только один рюкзак, способный выдержать M вес. Каждый объект i имеет вес w_i и прибыль p_i . Предположим, он также знает следующее: порядок этих элементов при сортировке по возрастанию веса совпадает с их порядком при сортировке по уменьшению значения. Дайте жадный алгоритм для нахождения оптимального решения этого варианта проблемы с рюкзаком. Докажите правильность и время выполнения.

Итак, жадный алгоритм, который я придумал, заключался в сортировке предметов на основе увеличения веса, который также уменьшает значение. Это означает, что цена за вес находится в порядке убывания. Таким образом, вор может взять самый ценный предмет до веса >= M . Время выполнения будет составлять O(n log n) с момента сортировки O(n log n) и итерации по списку O(n) . Часть, на которой я застрял, является доказательством правильности. Вот мое доказательство до сих пор:

Предположим, что существует случай, когда указанное выше решение (называемое GA) не является оптимальным. Пусть оптимальное решение называется OS, а элементы, взятые OS, сортируются по возрастающей стоимости. Поскольку OS более оптимальна, чем GA, то прибыль, полученная от GA, меньше или равна прибыли, полученной от OS. Поскольку GA берет элемент с наибольшим соотношением прибыли и веса, то первый элемент, i , должен быть больше или равен первому элементу OS. Поскольку ОС более оптимальна, то должно существовать a i , которое больше или равно элементу j в наборе GA. Но поскольку GA и OS выполняются в одном наборе, и GA всегда берет элемент с наибольшей прибылью / весом, в OS не может быть a i , который больше, чем a j в GA.

Кто-нибудь может помочь с доказательством? Спасибо

Ответ №1:

Ваш подход к решению верен, и рассуждения о времени выполнения верны. В дальнейшем предположим, что входные данные «детривиализированы» в том смысле, что каждый возникающий объект фактически помещается в рюкзак и что невозможно выбрать весь ввод.

Сортировка элементов, генерируемых сортировкой, является как

  • уменьшение значения
  • увеличение веса

что делает его частным случаем общей проблемы с рюкзаком. Аргументация для доказательства правильности заключается в следующем. Пусть i' обозначим индекс разрыва, который является индексом первого элемента в отсортированной последовательности, который отклоняется жадным алгоритмом. Для ясности назовите соответствующий объект объектом breaking . Обратите внимание, что

 w_j > w_i' for each j > i'
  

выполняется, что означает, что жадный алгоритм также отклоняет каждый объект, следующий за объектом взлома (поскольку он не помещается в рюкзак, как и объект взлома).

В целом, жадный алгоритм выбирает префикс отсортированной последовательности; мы стремимся показать, что любое оптимальное решение (которое мы считаем фиксированным в дальнейшем) является тем же префиксом.

Обратите внимание, что оптимальное решение, поскольку оно является оптимальным, не оставляет места для дополнительного объекта.

Стремясь к противоречию, пусть k будет минимальный индекс, который встречается в жадном решении, но не в оптимальном решении. Поскольку невозможно дополнительно выбрать объект k в оптимальное решение, в оптимальном решении должен быть (через минимальность k ) некоторый элемент с индексом

 k' > k
  

что позволяет обмениваться элементами в оптимальном решении. Как

 w_k < w_k' and p_k > p_k'
  

удержание, объект k' может быть заменен объектом k в оптимальном решении, что дает решение с прибылью, большей, чем у оптимального решения, что противоречит его оптимальности.

Следовательно, в жадном решении нет элемента, который отсутствует в оптимальном решении, что означает, что жадное решение является подмножеством оптимального решения. С другой стороны, жадное решение является максимальным по включению, что означает, что оптимальное решение не может содержать элемент, отсутствующий в жадном решении.

Обратите внимание, что жадный алгоритм als полезен для общей задачи с рюкзаком; выбор лучшего из жадного решения и элемента с максимальной прибылью дает алгоритм аппроксимации с коэффициентом 2.