Задано . Для каждого элемента имеем вес и стоимость . Цель состоит в нахождении подмножества размера , что максимизировать следующую целевую функцию:
Проблема NP-сложная?
Поскольку целевая функция кажется странной, полезно объяснить применение целевой функции.
Предположим, у нас есть n предметов от до и в нашем инвентаре есть копии каждого предмета . У нас есть клиенты, и они интересуются этими объектами пропорционально их весу , что означает, что объект с большим более популярен. У нас есть система онлайн-продаж, и мы должны правильно отвечать на запросы наших клиентов. Мы не можем распознать объекты по их формам (все они выглядят одинаково!). Но у нас есть какой-то классификатор, чтобы найти их. Каждый классификатор может быть использован для обнаружения копий объекта. Мы стремимся запустить классификатор k, чтобы максимизировать удовлетворение наших клиентов.
PS: может быть полезно подумать о случае, когда для всех i ≤ n ; Однако я не уверен. [ Я был неправ в этом! Именно в P этим предположением ]
источник
Ответы:
Ответ ниже показывает, что частный случай задачи разрешим за полиномиальное время. Это не полностью отвечает на вопрос в посте, но может дать некоторое представление о том, что может понадобиться для доказательства NP-твердости, и может вызвать дополнительный интерес к посту ...
возможные решения для на те, которые содержат и те, которые не содержат , мы получаем рекуррентность Мы оставляем граничные случаи в качестве упражнения.ϕ(d1,d2,k,m) m
Количество подзадач является , и для каждого правой сторона рецидива может быть оценена в постоянная время, поэтому алгоритм работает в полиномиальное время в и .O(n2D2) n D □
Следствие. Если P = NP, любое уменьшение, показывающее твердость NP, будет сводиться к случаям, когда не является полиномом по .D n
Замечание. Если я не ошибаюсь, в этой статье также есть PTAS для этой проблемы, основанный на округлении с последующим использованием динамического программирования. Однако существование PTAS не имеет прямого отношения к тому, является ли проблема NP-трудной, как это было сказано в посте.wi
Мне также любопытно --- кто-нибудь знает, есть ли в особом случае, когда (для каждого ), алгоритм поли-времени? (РЕДАКТИРОВАТЬ: он делает, согласно комментарию Уилларда Жана, это, кажется, оптимизировано, принимая чтобы содержать самых больших элементов.)wi=ci i M k
источник
Вы спрашиваете о максимизации функции без ограничений?
Это действительно просто. Если М - самый большой набор, то это лучшее решение. Не нужно ничего вычислять.
Эта проблема кажется похожей на проблему с ранцем, которая, кстати, является NP.
источник