E068. Рёберная связность. Свойства и нахождение
Источник: e-maxx.ru/algo, страница PDF 206.
定义
Пусть дан неориентированный 图
с
vertexми и
рёбрами.
Вершинной связностью
图а
называется наименьшее number вершин, которое нужно удалить,
чтобы 图 перестал быть связным. На示例, для несвязного 图а вершинная связность равна нулю. Для связного 图а с единственной точкой сочленения вершинная связность равна единице. Для полного 图а вершинную связность полагают равной (поскольку, какую пару вершин мы ни выберем, даже удаление всех остальных вершин не сделает их несвязными). Для всех 图ов, кроме полного, вершинная связность не превосходит
— поскольку можно
find пару вершин, между которыми нет ребра, и удалить все остальные вершины.
Говорят, что множество
вершин разделяет вершины
и
, если при удалении этих вершин из 图а вершины
и
оказываются в разных компонентах связности. Ясно, что вершинная связность 图а равна минимуму от наименьшего числа вершин, разделяющих две вершины
и
, взятому среди всевозможных пар
.
Свойства
Соотношение Уитни
Соотношение Уитни (Whitney) (1932 г.) между рёберной связностью
, вершинной связностью
и наименьшей из степеней вершин
: Докажем это утверждение. Докажем сначала первое неравенство:
. Рассмотрим этот набор из
рёбер, делающих 图 несвязным. Если
мы возьмём от каждого из этих ребёр по одному концу (любому из двух) и удалим из 图а, то тем самым с помощью удалённых вершин (поскольку одна и та же vertex могла встретиться дважды) мы сделаем 图 несвязным.
Таким образом,
. Докажем второе неравенство: . Рассмотрим вершину минимальной степени, тогда мы можем удалить все смежных с ней рёбер и тем самым отделить эту вершину от всего остального 图а. Следовательно, . Интересно, что неравенство Уитни нельзя улучшить: т.е. для любых троек чисел, удовлетворяющих этому неравенству, существует хотя бы один соответствующий 图. См. задачу "Построение 图а с указанными величинами вершинной и рёберной связностей и наименьшей из степеней вершин".
Нахождение вершинной связности
Переберём пару вершин
и
, и найдём минимальное количество вершин, которое надо удалить, чтобы разделить
и
.
Для этого раздвоим каждую вершину: т.е. у каждой вершины
создадим по две копии — одна
для 输入ящих
рёбер, другая
— для 输出ящих, и эти две копии связаны друг с другом edgeм
.
Каждое edge
исходного 图а в этой модифицированной сети превратится в два ребра:
и
. Всем рёбрам проставим пропускную способность, равную единице. Найдём теперь maximum поток в этом
图е между истоком
и стоком
. По построению 图а, он и будет являться минимальным количеством
вершин, необходимых для разделения
и
. Таким образом, если для поиска максимального потока мы выберем 算法 Эдмондса-Карпа, работающий за
время
, то общая Asymptotic complexity 算法а составит
. Впрочем, константа, скрытая в
асимптотике, весьма мала: поскольку сделать 图, на котором 算法ы бы работали долго при любой паре исток- сток, практически невозможно.
C# 解法
自动草稿,提交前请检查// C# draft for: Рёберная связность. Свойства и нахождение
// Original e-maxx article has no compact code listing in the extracted PDF text.
C++ 解法
匹配/原始// C++ source for: Рёберная связность. Свойства и нахождение
// Compact code block was not extracted from this article.
Java 解法
自动草稿,提交前请检查// Java draft for: Рёберная связность. Свойства и нахождение
// Original e-maxx article has no compact code listing in the extracted PDF text.
Материал разбит как 算法ическая 题目: изучить постановку, понять асимптотику и реализовать 算法 на выбранном языке.
Vacancies for this task
活跃职位 with overlapping task tags are 已显示.