Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 27.09.2006 | Доступ: свободный | Студентов: 3533 / 125 | Оценка: 4.44 / 4.11 | Длительность: 13:45:00
Специальности: Программист, Математик
Лекция 6:

Блоки

< Лекция 5 || Лекция 6: 123 || Лекция 7 >
Аннотация: Блоки. Двусвязность. Блоки и BC-дерево. Выявление блоков.

Блоки

Если граф состоит из нескольких компонент связности, то его можно изучать "по частям", и это может упростить описание графа и облегчить решение многих задач. Однако и связный граф иногда можно представить как состоящий из частей, и такое представление также может быть полезным. После компонент связности простейшими частями такого рода являются блоки (называемые также компонентами двусвязности). Блок - это максимальный подграф графа, не имеющий собственных шарниров (т.е. некоторые шарниры графа могут принадлежать блоку, но своих шарниров у блока нет). На рис. 6.1 изображены граф G и его блоки B_{1} -B_{5}. Ниже будет дано другое определение блока, из которого ясно, почему блоки называют компонентами двусвязности. Затем будут рассмотрены некоторые свойства блоков и описан алгоритм выявления блоков, основанный на поиске в глубину.


Рис. 6.1.

Двусвязность

Связный граф с не менее чем тремя вершинами, в котором нет шарниров, называется двусвязным. Примеры двусвязных графов - цикл C_n и полный граф K_n, n \ge 3 цепь же P_n не является двусвязным графом ни при каком n.

Будем говорить, что два элемента графа (напомним, что элементы графа - это вершины и ребра) циклически связаны, если в графе имеется простой цикл, содержащий оба эти элемента.

Теорема 1. В двусвязном графе любые два различных элемента циклически связаны. Если в графе любые два ребра циклически связаны, то он двусвязен.

Доказательство. Докажем сначала, что в двусвязном графе G для любых двух различных вершин a и b имеется простой цикл, проходящий через обе эти вершины. Доказательство проводим индукцией по расстоянию между a и b. Если d(a,b)=1, то a и b смежны. Ребро (a,b) не является перешейком (иначе хотя бы одна из вершин a, b была бы шарниром). Но тогда в графе имеется простой цикл, проходящий через это ребро. Пусть d(a,b)>1. Рассмотрим кратчайший путь из a в b, и пусть x - предпоследняя вершина этого пути. Тогда d(a,x) = d(a,b)-1 и, по предположению индукции, существует простой цикл C, содержащий вершины a и x. Так как вершина x - не шарнир, то существует простой путь P из b в a, не проходящий через x. Пусть y - первая вершина этого пути, принадлежащая C (такая существует, так как a \in C. Тогда отрезок пути P от b до y вместе с отрезком цикла от y до x, содержащим вершину a, и с ребром (x,b) образует простой цикл, содержащий обе вершины a и b (показан стрелками на рис. 6.2).


Рис. 6.2.

Теперь покажем, что для любой вершины a и любого ребра (x,y) двусвязного графа G в нем имеется цикл, содержащий эту вершину и это ребро. Как доказано выше, существует простой цикл C_1, содержащий вершины a и x. Если этот цикл проходит и через y, то, заменив в нем отрезок от x до y, не содержащий a, ребром (x,y), получим простой цикл, проходящий через вершину a и ребро (x,y). В противном случае возьмем цикл C_2, содержащий вершины a и y. Кратчайший отрезок этого цикла, соединяющий y с какой-либо вершиной z на C_1, вместе с отрезком цикла C_1 от z до x, содержащим вершину a, и с ребром (x,y) образует простой цикл, содержащий это ребро и вершину a.

Доказательство того, что в двусвязном графе через любые два ребра проходит простой цикл, почти в точности повторяет предыдущее, только вместо вершины a нужно рассматривать ребро (a,b).

Остается доказать, что если в графе G через любые два различных элемента проходит простой цикл, то этот граф - двусвязный. Действительно, допустим, что вершина a - шарнир графа G. Возьмем вершины x и y, смежные с a и принадлежащие разным компонентам связности графа, получающегося при удалении вершины a. Тогда в G не существует цикла, содержащего оба ребра (a,x) и (a,y).

Из этой теоремы следует, что свойство двусвязности можно охарактеризовать следующим образом:

Следствие. Граф с не менее чем двумя ребрами двусвязен тогда и только тогда, когда в нем любые два различных ребра циклически связаны.

Рассмотрим подробнее отношение циклической связанности ребер. Оно, очевидно, симметрично. Будем считать, что каждое ребро циклически связано с самим собой, тогда это отношение будет и рефлексивным. Докажем, что оно на самом деле является отношением эквивалентности.

Теорема 2. Для любого графа отношение циклической связанности ребер является отношением эквивалентности.

Доказательство. Остается доказать транзитивность этого отношения. Пусть C_{1} - простой цикл, содержащий ребра e_{1} и e_{2}, а C_{2} - простой цикл, содержащий ребра e_{2} и e_{3} ; покажем, что существует простой цикл, содержащий ребра e_{1} и e_{3}. Если e_{1} принадлежит C_{2}, то последний и является этим циклом. Если же e_{1} не принадлежит C_{2}, то в C_{1} есть отрезок P_{1}, включающий e_{1}, у которого концевые вершины a и b принадлежат C_{2}, а все внутренние вершины не принадлежат C_{2}. Пусть P_{2} - отрезок цикла C_{2}, концами которого являются a и b и который включает ребро e_{3}. Соединение P_{1} и P_{2} дает простой цикл, содержащий e_{1} и e_{3}.

Итак, множество ребер любого графа разбивается на классы эквивалентности по отношению циклической связанности. Каждый перешеек образует отдельный класс эквивалентности. Если граф двусвязен, то имеется единственный класс циклической связанности.

< Лекция 5 || Лекция 6: 123 || Лекция 7 >
Петр Петров
Петр Петров

произведение графов К(2)*О(4) фактически 4 отдельных графа К(2)?

Александр Лаврентьев
Александр Лаврентьев

много инструкций вида if - then - else

Например Procedure DFS(a) опишите каким образом следует понимать вложенность инструкций. Как в языке С ? 

т.е. следующее 

if (...) then (...)

if (...) then (...)

else(...)

 

раскрывается как 

if (...) then (...)

if (...) then (...)

         else(...)

или так :

if (...) then

 {  (...)

     if (...) then (...)

              else(...)

}

обьясните пожалуйста.

 

 

Константин Дементьев
Константин Дементьев
Россия, г. Мичуринск