Учитывая подмножество ребер графа G = (V,E), как мы можем проверить, является ли оно допустимым набором разрезов графа или нет? Примечание. Разрез — это разбиение вершин графа на два непересекающихся подмножества. Итак, разрез-множество разреза — это множество ребер, конечные точки которых лежат в разных подмножествах разбиения. Мне интересно найти алгоритм для этой задачи
Алгоритм: для G = (V, E), как определить, является ли набор ребер (e принадлежит E) допустимым набором разрезов графа
Ответы (2)
Простой алгоритм состоит в том, чтобы удалить подозреваемые ребра из графа и посмотреть, можете ли вы все еще добраться от узла удаленного ребра до его аналога. Если еще можно, то это был не полный разрез. Поэтому, если вы удалите E2, у которого были узлы A и D, вы можете использовать поиск в ширину от A и посмотреть, доберетесь ли вы когда-нибудь до D. Он должен быть линейным по требованиям к пространству и сложности, поскольку мы сохраняем все узлы, которые мы посетили, поэтому мы не возвращайтесь и не посещайте любой узел дважды. На этой вики-странице есть несколько хороших изображений, которые могут помочь: http://en.wikipedia.org/wiki/Cut_%28graph_theory%29
Это допустимый набор разрезов, если после удаления этого подмножества ребер он больше не является связным графом.
Если вы запрашиваете алгоритмы, вы должны иметь возможность начать с любого узла и посмотреть, сможете ли вы достичь всех других узлов с помощью поиска в глубину. Если это так, это недопустимый набор разрезов, если нет, то это допустимый набор разрезов.