Вершинная, рёберная связность, связь между ними и минимальной степенью вершины — различия между версиями
Free0u (обсуждение | вклад) м (→Нахождение реберной связности) |
Free0u (обсуждение | вклад) (→Нахождение реберной связности. ver 2.0) |
||
Строка 68: | Строка 68: | ||
В новом графе запустим алгоритм нахождения реберной связности. | В новом графе запустим алгоритм нахождения реберной связности. | ||
== Нахождение реберной связности. ver 2.0 == | == Нахождение реберной связности. ver 2.0 == | ||
− | + | В статье про [[K-связность]] было сформулировано следующее утверждение: | |
− | {{ | + | {{Утверждение |
− | |||
− | |||
|statement= | |statement= | ||
− | + | Граф <tex> G </tex> является '''реберно <tex> l </tex> - связным''' <tex>\Leftrightarrow </tex> любая пара его вершин соединена по крайней мере <tex> l </tex> - реберно непересекающимися путями. | |
}} | }} | ||
− | + | Там же было дано определение реберной связности через <tex> l </tex>-связность: | |
+ | {{Определение | ||
+ | |definition= | ||
+ | [[Вершинная, реберная связность, связь между ними и минимальной степенью вершины|Реберной связностью]] графа называется <tex> \lambda(G) = \max \{ l | G </tex> реберно <tex> l </tex> - связен <tex> \} </tex>, для тривиального графа считаем <tex> \lambda (K_1) = 0 </tex>. | ||
+ | }} | ||
+ | |||
+ | Для нахождения реберной связности нужно перебрать все пары вершин <tex>s</tex> и <tex>t</tex>, найти количество непересекающихся путей из <tex>s</tex> в <tex>t</tex> и выбрать минимум. | ||
+ | Пусть он равен <tex>l</tex>. По утверждению, граф является <tex>l</tex> - связным, причем такое <tex>l</tex> - максимально (ведь мы явно нашли количество путей). А значит, по определению, реберная связность равна <tex>l</tex>. | ||
Для нахождения количества непересекающихся путей из <tex>s</tex> в <tex>t</tex> воспользуемся алгоритмом нахождения максимального потока. Сопоставим каждому ребру пропускную способность, равную <tex>1</tex> и найдем максимальный поток. | Для нахождения количества непересекающихся путей из <tex>s</tex> в <tex>t</tex> воспользуемся алгоритмом нахождения максимального потока. Сопоставим каждому ребру пропускную способность, равную <tex>1</tex> и найдем максимальный поток. |
Версия 15:07, 29 декабря 2012
Содержание
Определения
Определение: |
Вершинной связностью | графа называется наименьшее число вершин, удаление которых приводит к несвязному или тривиальному графу.
Определение: |
Реберной связностью | графа называется наименьшее количество ребер, удаление которых приводит к несвязному или тривиальному графу.
Связь между вершинной, реберной связностью и минимальной степенью вершины
Пускай минимальная степень вершины графа
обозначается буквой . Тогда:Теорема: |
Для любого графа справедливо следующее неравенство: |
Доказательство: |
|
Теорема: |
Для любых натуральных чисел , таких что , существует граф , у которого и |
Доказательство: |
Рассмотрим граф , являющийся объединением двух полных графов и , содержащих вершину. Отметим вершин, принадлежащих подграфу и вершин, принадлежащих подграфу . Добавим в граф ребер так, чтобы каждое ребро было инцидентно помеченной вершине, лежащей в подграфе и помеченной вершине, лежащей в подграфе , причем не осталось ни одной помеченной вершины, у которой не появилось хотя бы одно новое ребро, инцидентное ей. Тогда:
|
Нахождение реберной связности
Для нахождения реберной связности воспользуемся следующей теоремой:
Теорема (Теорема Менгера для | -реберной связности):
Пусть - конечный, неориентированный граф, для всех пар вершин существует реберно непересекающихся путей из в . |
Алгоритм следует непосредственно из теоремы. Нужно перебрать все пары вершин
и , найти количество непересекающихся путей из в и выбрать минимум.Для нахождения количества непересекающихся путей из
в воспользуемся алгоритмом нахождения максимального потока. Сопоставим каждому ребру пропускную способность, равную и найдем максимальный поток. Он и будет равен количеству путей. Действительно, если провести декомпозицию потока, то получим набор реберно непересекающихся путей из в , по которым поток неотрицателен и равен (т.к. пропускная способность всех ребер равна ). А значит, если поток равен , то и количество путей равно .Псевдокод алгоритма
ans = INF forfor flow = find_flow(s, t) ans = min(ans, flow)
Оценка работы
Время работы равно алгоритма Эдмондса-Карпа время равно или
. При использованииНахождение вершинной связности
Нахождение вершинной связности сводится к задаче нахождения реберной связности следующим образом.
Разобьем каждую вершину
графа на две вершины и . Все ребра, которые входили в будут входить в . Все ребра, которые выходили из будут выходить из . Так же добавим ребро .
В новом графе запустим алгоритм нахождения реберной связности.
Нахождение реберной связности. ver 2.0
В статье про K-связность было сформулировано следующее утверждение:
Утверждение: |
Граф является реберно - связным любая пара его вершин соединена по крайней мере - реберно непересекающимися путями. |
Там же было дано определение реберной связности через
-связность:Определение: |
Реберной связностью графа называется реберно - связен , для тривиального графа считаем . |
Для нахождения реберной связности нужно перебрать все пары вершин и , найти количество непересекающихся путей из в и выбрать минимум.
Пусть он равен . По утверждению, граф является - связным, причем такое - максимально (ведь мы явно нашли количество путей). А значит, по определению, реберная связность равна .
Для нахождения количества непересекающихся путей из
в воспользуемся алгоритмом нахождения максимального потока. Сопоставим каждому ребру пропускную способность, равную и найдем максимальный поток. Он и будет равен количеству путей. Действительно, если провести декомпозицию потока, то получим набор реберно непересекающихся путей из в , по которым поток неотрицателен и равен (т.к. пропускная способность всех ребер равна ). А значит, если поток равен , то и количество путей равно .Псевдокод алгоритма
ans = INF forfor flow = find_flow(s, t) ans = min(ans, flow)
Оценка работы
Время работы равно алгоритма Эдмондса-Карпа время равно или
. При использованииНахождение вершинной связности. ver 2.0
Нахождение вершинной связности сводится к задаче нахождения реберной связности следующим образом.
Разобьем каждую вершину
графа на две вершины и . Все ребра, которые входили в будут входить в . Все ребра, которые выходили из будут выходить из . Так же добавим ребро .
В новом графе запустим алгоритм нахождения реберной связности.
Литература
- Харари Ф. Теория графов: Пер. с англ. / Предисл. В. П. Козырева; Под ред. Г.П.Гаврилова. Изд. 4-е. — М.: Книжный дом "ЛИБРОКОМ", 2009. — 60 с.