Проверка покрытия вершины за линейное время - PullRequest
0 голосов
/ 27 января 2020

Предположим, вам дан неориентированный граф G с n вершинами и m ребрами, представленными списком смежности A, и вам также дано подмножество вершин S с размером | S | представлены массивом. Как вы можете проверить, является ли S вершинным слоем G с O (n + m) временем и O (n + m) пространственной сложностью?

Это дополнительный вопрос к вопросу, который Я отправил ранее на этой неделе, здесь . Это может помочь сначала прочитать этот пост (и решение) там.

По определению покрытия вершин я знаю, что мы требуем, чтобы каждое ребро было инцидентным той вершине, которая содержится в S.

Я пытался следовать подходу, аналогичному тому, который я опубликовал в предыдущей теме. В частности, я создал массив B [], содержащий все вершины, которые есть в G, но не в S. Это означает, что для любых двух вершин u и v в B, если (u, v) существует, то покрытие вершин не действительно.

Но я почти уверен, что этот алгоритм равен n ^ 2, а не n + m, поскольку, если S - пустое множество, то B будет содержать все вершины, а если G - полный граф, то проверяется, является ли ( u, v) существует операция O(n^2).

Мне было интересно, есть ли хорошее решение этой проблемы.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...