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

Важнейшие классы графов

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >

Центр дерева

Центр графа может состоять из одной вершины (как, например, в графе K_{1,q} ), а может включать все его вершины (полный граф). Для дерева, как мы увидим, имеется гораздо более узкий диапазон возможностей.

Теорема 3. Центр дерева состоит из одной вершины или из двух смежных вершин.

Доказательство.

Допустим, что в некотором дереве имеются две несмежные центральные вершины c_{1} и c_{2}. На пути, соединяющем эти вершины, найдем промежуточную вершину a с максимальным эксцентриситетом, и пусть b_{1} и b_{2} - вершины, соседние с a на этом пути (см. рис. 3.1). Пусть x - вершина, наиболее удаленная от a в дереве, т.е. d(a,x)=ecc(a). Путь, соединяющий a с x, не может проходить через обе вершины b_{1} и b_{2}. Допустим, он не проходит через b_{1}. Тогда единственный путь из b_{1} в x проходит через a и d(b_{1},x) \gt d(a,x). Отсюда следует, что ecc(b_{1} ) \gt ecc(a), а это противоречит выбору вершины a, если b_{1} \ne c_{1}, или тому, что c_{1} - центральная вершина, если b_{1} =c_{1}.

Следовательно, любые две центральные вершины смежны, а так как в дереве не может быть трех попарно смежных вершин, то в нем не больше двух центральных вершин.


Рис. 3.1.

Корневые деревья

Часто в дереве особо выделяется одна вершина, играющая роль своего рода "начала отсчета". Дерево с выделенной вершиной называют корневым деревом, а саму эту вершину - корнем. Из дерева с n вершинами можно, таким образом, образовать n различных корневых деревьев.

При графическом изображении корневого дерева обычно придерживаются какого-нибудь стандарта. Один из наиболее распространенных состоит в следующем. Возьмем на плоскости семейство параллельных прямых с равными расстояниями между соседними прямыми. Изобразим корень точкой на одной из этих прямых, смежные с корнем вершины - точками на соседней прямой, вершины, находящиеся на расстоянии 2 от корня, - на следующей, и т.д. Ребра изобразим отрезками прямых. Ясно, что вершины на каждой прямой можно разместить так, чтобы ребра не пересекались. Пример нарисованного таким образом корневого дерева показан на рис. 3.2 (корень обведен кружком). Чаще, впрочем, дерево рисуют корнем вверх, а не вниз.


Рис. 3.2.

Иногда бывает полезно ребра корневого дерева ориентировать так, чтобы в каждую вершину вел ориентированный путь из корня (для дерева на рис. 3.2 это означает, что каждое ребро ориентируется снизу вверх). Такое ориентированное корневое дерево будем называть исходящим деревом. В исходящем дереве каждая вершина, кроме корня, является концом единственного ребра. Если в исходящем дереве имеется ребро xy, то вершину x называют отцом вершины y, а вершину y - сыном вершины x. Естественный и для многих целей удобный способ задания корневого дерева состоит в указании для каждой вершины ее отца. При этом иногда считают, что корень приходится отцом самому себе - это равносильно добавлению петли при корне.

Если в исходящем дереве T имеется ориентированный путь из вершины x в вершину y, то говорят, что x - предок y, а y - потомок x. В частности, каждая вершина является предком и потомком самой себя. Множество всех предков вершины x порождает ориентированный путь из корня в x. Множество всех потомков вершины x порождает исходящее дерево с корнем в x, оно называется ветвью дерева T в вершине x.

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

Каркасы

Пусть G - обыкновенный граф. Его каркасом называется остовный подграф, в котором нет циклов, а области связности совпадают с областями связности графа G. Таким образом, каркас связного графа - дерево, а в общем случае - лес.

У любого графа есть хотя бы один каркас. Действительно, если в G нет циклов, то он сам является собственным каркасом. Если же циклы есть, то можно удалить из графа любое ребро, принадлежащее какому-нибудь циклу. Такое ребро не является перешейком, поэтому при его удалении области связности не изменятся. Продолжая действовать таким образом, после удаления некоторого количества ребер получим остовный подграф, в котором циклов уже нет, а области связности - те же, что у исходного графа, то есть этот подграф и будет каркасом. Можно даже точно сказать, сколько ребер необходимо удалить для получения каркаса. Если в графе n вершин, m ребер и k компонент связности, то в каркасе будет тоже n вершин и k компонент связности. Но в любом лесе с n вершинами и k компонентами связности имеется ровно n-k ребер. Значит, удалено будет m-n+k ребер. Это число называется цикломатическим числом графа и обозначается через \nu (G).

Если в графе есть циклы, то у него больше одного каркаса. Определить точное число каркасов связного графа позволяет так называемая матричная теорема Кирхгофа. Приведем ее без доказательства. Для графа G определим матрицу K(G) - квадратную матрицу порядка n с элементами

K_{ij} =\left\{\begin{aligned} & -1, & \text{если }(i,j)\in EG, \\
& 0, & \text {если }(i,j)\notin EG \t{ и } i\ne j,\\ 
& \deg (i), & \text {если } i=j. \end{aligned}
\right}

Иначе говоря, K(G) получается из матрицы смежности, если заменить все 1 на -1, а вместо нулей на главной диагонали поставить степени вершин. Заметим, что матрица K(G) - вырожденная, так как сумма элементов каждой строки равна 0, то есть столбцы линейно зависимы.

Теорема 4 (матричная теорема Кирхгофа). Если G - связный граф с не менее чем двумя вершинами, то алгебраические дополнения всех элементов матрицы K(G) равны между собой и равны числу каркасов графа G.

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >
Петр Петров
Петр Петров

произведение графов К(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(...)

}

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

 

 

Дмитрий Крюков
Дмитрий Крюков
Россия, Москва
Андрей Посохов
Андрей Посохов
Россия, Санкт-Петербург