обратная операция "Союз и найди" - PullRequest
10 голосов
/ 22 июня 2011

Мы знаем, что существует «Союз и найди» для несвязных множеств. http://en.wikipedia.org/wiki/Union_find

а как сделать обратную операцию? Рассмотрим множество с N узлами, связанными с E ребрами (на самом деле это граф). И на каждом шаге мы хотим удалить некоторое ребро и проверить, приводит ли эта операция удаления к другому непересекающемуся набору. Можно ли сделать это быстро, как в «Союз и найти»?

П.С. это не домашняя работа, у нас праздник:)

Ответы [ 3 ]

5 голосов
/ 22 июня 2011

Это известно как проблема удаленного доступа к сети или проблема с подключением к сети.Некоторые ссылки на алгоритмы находятся в этом разделе статьи Википедии о связности графов .

1 голос
/ 22 июня 2011

Union-find используется в алгоритме Крускала, который многократно добавляет ребро минимального веса, которое не составляет цикл.Обратная идея - удаление ребер с максимальным весом до тех пор, пока он не отсоединяет граф - используется в алгоритм обратного удаления , который, по-видимому, может использовать некоторую сложную структуру данных (см. Википедия).

0 голосов
/ 22 июня 2011

Итак, ваш вопрос заключается в том, как эффективно обнаружить Мост ?Это можно сделать за линейное время (см. Также ссылку).

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