У меня есть проблема, и я думаю, что это NP-трудно, но я не могу доказать это.
Вот график слоя, где слой 0 - самый высокий слой, а слой L - самый низкий.
Есть некоторые направленное ребро между слоями, где ребро (А, В) указывает на то, что узел А может [крышка] узла В. И когда А может охватывать B, каждый узел на любом пути от А к В может покрыть B, B может покрывать сам.
Наконец, вот набор узлов S. Мне нужно выбрать другой набор узлов ANS и убедиться, что для каждого узла q в S существует узел p в ANS и p покрывает q.
Для каждого узла есть стоимость, и мне нужно, чтобы общая стоимость набора ANS была минимальной.
Это NP-сложная проблема? Я так думаю, но не могу доказать это.
Не могли бы вы помочь мне?
Большое спасибо.
Ответы:
Да, эта проблема, безусловно, NP трудно. Я отправляю этот ответ, так как вам нужны доказательства.
Если вы перейдете по этой ссылке http://en.wikipedia.org/wiki/Set_cover_problem , то это говорит о том, что оптимизационной версией проблемы минимального покрытия является NP-Hard.
Проблема в ссылке:
Вы можете связать это с вашей проблемой следующим образом:
S - это набор узлов, которые охватывают как минимум один узел в вашем входном наборе. Это может быть найдено путем проведения DFS на узлах входного набора с обратным направлением ребер.
Теперь проблема, описанная в ссылке, является частным случаем вашей проблемы, когда стоимость каждого узла равна, и вы просто хотите минимизировать количество узлов (наборов).
Следовательно, вашу проблему еще сложнее решить в общем случае, и, следовательно, это NP Hard.
источник
S
. Может быть, есть отрицательные расходы или что-то в этом роде ...