Это NP-жесткий? Я не могу доказать это.

11

У меня есть проблема, и я думаю, что это NP-трудно, но я не могу доказать это.

Вот график слоя, где слой 0 - самый высокий слой, а слой L - самый низкий.

Есть некоторые направленное ребро между слоями, где ребро (А, В) указывает на то, что узел А может [крышка] узла В. И когда А может охватывать B, каждый узел на любом пути от А к В может покрыть B, B может покрывать сам.

Наконец, вот набор узлов S. Мне нужно выбрать другой набор узлов ANS и убедиться, что для каждого узла q в S существует узел p в ANS и p покрывает q.

Для каждого узла есть стоимость, и мне нужно, чтобы общая стоимость набора ANS была минимальной.

Это NP-сложная проблема? Я так думаю, но не могу доказать это.

Не могли бы вы помочь мне?

Большое спасибо.

qin.sun
источник
Стоимость узла из верхнего уровня дороже в любом пути в графе.
Да, это действительно кажется NP трудным. Посмотрите на похожую проблему минимального набора покрытия. en.wikipedia.org/wiki/Set_cover_problem
Есть ли какие-либо ограничения в направленном ребре, например, ребра соединяют только узел более высокого уровня с узлом более низкого уровня? Могу ли я уточнить, что между узлами в одном слое не может быть ребра?
полугодие
@justhalf Нет, между узлами в одном слое нет ребра. Спасибо :)
qin.sun

Ответы:

6

Да, эта проблема, безусловно, NP трудно. Я отправляю этот ответ, так как вам нужны доказательства.

Если вы перейдете по этой ссылке http://en.wikipedia.org/wiki/Set_cover_problem , то это говорит о том, что оптимизационной версией проблемы минимального покрытия является NP-Hard.

Проблема в ссылке:

Для заданного набора элементов {1,2, ..., m} (называемого юниверсом) и набора S из n множеств, объединение которых равно юниверсу, проблема покрытия множеств состоит в том, чтобы идентифицировать наименьшее подмножество S, объединение которого равно вселенная. Например, рассмотрим юниверс U = {1, 2, 3, 4, 5} и набор множеств S = {{1, 2, 3}, {2, 4}, {3, 4}, {4, 5}}. Ясно, что объединение S - это U. Однако мы можем покрыть все элементы следующим меньшим числом множеств: {{1, 2, 3}, {4, 5}}

Вы можете связать это с вашей проблемой следующим образом:

S - это набор узлов, которые охватывают как минимум один узел в вашем входном наборе. Это может быть найдено путем проведения DFS на узлах входного набора с обратным направлением ребер.

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

Следовательно, вашу проблему еще сложнее решить в общем случае, и, следовательно, это NP Hard.

Абхишек Бансал
источник
Я думаю, что это верно для определения ОП, но он также никогда не указывает, можете ли вы «накрыть» узел ребром в том же слое, что и этот узел. Если это так, то проблема выглядит немного иначе. В противном случае, если вы можете покрыть узел только через ребро из более высокого уровня, тогда это действительно кажется эквивалентным настройке оптимизации покрытия
roliu 16.12.13
@roliu Как бы это ни значило, можно ли покрывать одни и те же узлы слоя или нет. Насколько я понимаю, проблема в том, что у нас есть ориентированный граф с путем между узлами от A до B, что означает, что A покрывает B.
Хм, не уверен, я думаю. Это просто странно, потому что я не думаю, что почти любая информация в ОП на самом деле полезна. Слои кажутся неактуальными, как и транзитивность. Я в основном просто жду, когда ОП уточнит, что он действительно имел в виду что-то другое. В частности, вы можете показать, что это не только по крайней мере так же сложно, как укрытие, это на самом деле эквивалентно. Потому что любое минимальное покрытие в задаче ОП будет содержать только соседние узлы его входного множества S. Может быть, есть отрицательные расходы или что-то в этом роде ...
Roliu