Возможность получения документа о прохождении курса |
Блоки
Блоки
Если граф состоит из нескольких компонент связности, то его можно изучать
"по частям", и это может упростить описание графа и облегчить
решение
многих задач. Однако и связный граф иногда можно представить как состоящий
из частей, и такое представление также может быть полезным. После
компонент связности простейшими частями такого рода являются блоки
(называемые также компонентами двусвязности). Блок - это максимальный
подграф графа, не имеющий собственных шарниров (т.е. некоторые шарниры
графа могут принадлежать блоку, но своих шарниров у блока нет).
На рис. 6.1 изображены граф и его блоки
. Ниже будет дано
другое определение блока, из которого ясно, почему блоки называют
компонентами двусвязности. Затем будут рассмотрены некоторые свойства
блоков и описан алгоритм выявления блоков, основанный на поиске в глубину.
Двусвязность
Связный граф с не менее чем тремя вершинами, в котором нет шарниров,
называется двусвязным. Примеры
двусвязных графов - цикл
и полный граф
,
цепь
же
не является двусвязным графом ни при
каком
.
Будем говорить, что два элемента графа (напомним, что элементы графа - это вершины и ребра) циклически связаны, если в графе имеется простой цикл, содержащий оба эти элемента.
Теорема 1. В двусвязном графе любые два различных элемента циклически связаны. Если в графе любые два ребра циклически связаны, то он двусвязен.
Доказательство. Докажем сначала, что в двусвязном графе
для любых двух различных вершин
и
имеется
простой
цикл, проходящий через обе эти вершины. Доказательство проводим индукцией
по расстоянию между
и
. Если
, то
и
смежны.
Ребро
не является перешейком (иначе хотя бы одна
из вершин
,
была
бы шарниром). Но тогда в графе имеется простой цикл, проходящий через это
ребро. Пусть
. Рассмотрим кратчайший путь из
в
, и пусть
- предпоследняя вершина этого
пути. Тогда
и, по
предположению индукции, существует простой цикл
, содержащий
вершины
и
. Так как вершина
- не шарнир,
то существует простой путь
из
в
,
не проходящий через
. Пусть
- первая
вершина этого пути,
принадлежащая
(такая существует, так как
.
Тогда отрезок пути
от
до
вместе
с отрезком
цикла от
до
, содержащим вершину
,
и с ребром
образует простой цикл, содержащий обе вершины
и
(показан стрелками на рис. 6.2).
Теперь покажем, что для любой вершины и любого
ребра
двусвязного графа
в нем имеется цикл, содержащий эту
вершину и это ребро. Как доказано выше, существует простой
цикл
,
содержащий вершины
и
. Если этот цикл проходит и
через
,
то, заменив в нем отрезок от
до
, не
содержащий
, ребром
, получим простой цикл,
проходящий через
вершину
и ребро
. В противном случае
возьмем цикл
,
содержащий вершины
и
. Кратчайший отрезок этого
цикла,
соединяющий
с какой-либо вершиной
на
,
вместе с отрезком цикла
от
до
,
содержащим
вершину
, и с ребром
образует простой цикл,
содержащий это
ребро и вершину
.
Доказательство того, что в двусвязном графе через любые два ребра проходит
простой цикл, почти в точности повторяет предыдущее, только вместо
вершины нужно рассматривать ребро
.
Остается доказать, что если в графе через любые два
различных
элемента проходит простой цикл, то этот граф - двусвязный. Действительно,
допустим, что вершина
- шарнир графа
.
Возьмем вершины
и
, смежные с
и принадлежащие разным
компонентам связности графа, получающегося при удалении вершины
.
Тогда в
не существует цикла, содержащего оба ребра
и
.
Из этой теоремы следует, что свойство двусвязности можно охарактеризовать следующим образом:
Следствие. Граф с не менее чем двумя ребрами двусвязен тогда и только тогда, когда в нем любые два различных ребра циклически связаны.
Рассмотрим подробнее отношение циклической связанности ребер. Оно, очевидно, симметрично. Будем считать, что каждое ребро циклически связано с самим собой, тогда это отношение будет и рефлексивным. Докажем, что оно на самом деле является отношением эквивалентности.
Теорема 2. Для любого графа отношение циклической связанности ребер является отношением эквивалентности.
Доказательство. Остается доказать транзитивность этого отношения.
Пусть - простой цикл, содержащий
ребра
и
, а
- простой цикл, содержащий
ребра
и
; покажем, что существует простой цикл, содержащий ребра
и
. Если
принадлежит
, то
последний и является этим циклом. Если же
не принадлежит
, то в
есть отрезок
,
включающий
,
у которого концевые вершины
и
принадлежат
,
а все внутренние вершины не принадлежат
.
Пусть
-
отрезок цикла
, концами которого являются
и
и который включает ребро
.
Соединение
и
дает простой цикл, содержащий
и
.
Итак, множество ребер любого графа разбивается на классы эквивалентности по отношению циклической связанности. Каждый перешеек образует отдельный класс эквивалентности. Если граф двусвязен, то имеется единственный класс циклической связанности.