Доказательство того, что Доминирующий сет NP-Complete - PullRequest
5 голосов
/ 15 марта 2011

вот вопрос.Мне интересно, есть ли ясное и эффективное доказательство:

Покрытие вершин: введите неориентированное G, целое число k> 0. Существует ли подмножество вершин S, | S | <= k, которое охватывает все ребра?</p>

Доминирующий набор: введите ненаправленное G, целое число k> 0. Существует ли подмножество вершин S, | S | <= k, которое доминирует над всеми вершинами? </p>

Вершина покрывает свои инцидентные ребраи доминирует над своими соседями и над собой.

Предполагая, что VC - это NPC, докажите, что DS - это NPC.

Ответы [ 3 ]

8 голосов
/ 24 мая 2012

Существует довольно приятное и хорошо известное сокращение: (Только для связанных графов)

С учетом экземпляра (G, k) Vertex Cover создать экземпляр Доминирующего множества (H, k), где дляH вы берете G и для каждого ребра (u, v) добавляете дополнительную вершину x, связанную с u и v.

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

Для обратного рассмотрим D, доминирующий набор H.

Обратите внимание, что если одна из новых вершиннаходится в D, мы можем заменить его одним из двух его соседей и все же получить Доминирующий набор: это только соседи, это две исходные вершины, и они также связаны - во всем, что может доминировать x, также преобладают u или v.

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

И вот оно: G имеет покрытие вершин меньшего k тогда и только тогда, когда H имеет доминирующий набор меньшего k.

0 голосов
/ 30 июня 2017

Взято из:

Расширенные алгоритмы CMSC 651, лектор Самир Хуллер

enter image description here

0 голосов
/ 15 марта 2011

Я думаю, что вторая проблема не NP. Давайте попробуем следующий алгоритм.

1. Get the original Graph
2. Run any algorithm which checks if a graph is connected or not.
3. mark all used edges of step 2
4. if the graph is connected then return the set of marked edges otherwise there is no such a set.

Если я правильно понял вашу проблему, то это не NP Complete.

...