Глава 10 |
|
|
|
|
|
|
|
|
|
|
|
Деревья |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
П |
|
10.1 Определение и свойства деревьев |
|
|
|
|
|
|
|
|
|
|
|
. |
|
. |
|
|
|
|
|
|
|
|
|
В |
|
|
Определение 10.1. Дерево - это связный граф без циклов. |
Лес - граф, компонентами которого являются деревья. |
|
Барашев |
|
|
|
|
|
А |
|
|
|
|
|
. |
|
Пример 10.1. |
|
|
|
|
|
|
|
|
|
|
|
|
а) Граф G1 - дерево |
|
|
|
|
|
|
|
|
s |
|
@s |
s |
|
|
HsУнучекs Hs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@s |
|
Z |
|
|
s |
|
|
|
|
|
s |
|
@@s |
|
s |
ZZZ |
|
|
|
|
|
|
|
|
s |
|
G1 |
|
s |
|
|
s |
|
|
|
|
|
|
|
|
МИРЭА |
|
б) G2 - лес, состоящий из 4 компонентов (деревьев) |
|
|
|
sHHHH |
s |
|
|
sHHHH s |
|
|
@s |
@ |
|
Hs |
HH |
|
|
|
Hs HH |
|
|
|
|
@ |
|
|
|
|
|
|
|
G2 |
|
|
|
|
|
|
|
в) Граф G3 не является деревом (граф содержит цикл из трех вершин, так называемый "треугольник").
|
|
|
|
s |
|
|
@s |
Z |
|
|
s |
@@s |
s |
ZZZ |
|
|
|
s |
G3 |
|
|
s |
Понятие дерева широко используется во многих областях математики и информатики. Например, как инструмент при вычислениях в
Доказательство.
теории множеств и теории вероятностей , как удобный способ хранения |
данных, способ сортировки или поиска данных. |
. |
|
|
|
|
|
|
|
|
П |
|
Лес и дерево обладают многими важными свойствами. |
|
|
|
|
|
|
|
. |
|
Определение 10.2. Ребро графа, удаление которого увеличивает ко- |
|
|
|
|
|
|
|
В |
|
|
личество компонент связности графа, называется мостом. |
Пример 10.2. |
|
|
|
|
|
. |
v1 |
v5 |
С |
|
|
|
sHHH v3 |
v4 |
|
s |
|
.А |
|
|
|
|
|
|
H |
|
|
|
|
|
|
|
|
|
|
s |
sHHHH |
|
|
Ребро {v3, v4} - мост. |
v |
|
s2 |
v |
|
s6 |
|
|
|
|
|
|
|
|
чающий в себяУнучекребро ei. Удалив ребро ei, заменим его на после- |
|
|
|
|
|
|
МИРЭА |
|
Лемма. БарашевРебро в графе является мостом тогда, и только тогда, когда оно не входит ни в один цикл.
Необходимость. Пусть некоторое ребро ei является мостом. Докажем, что не существует цикла, содержащего данное ребро.
Предположим, что это не так, то есть существует цикл, вклю-
довательность ребер, образующих цикл вместе с данным ребром. Любые две вершины, входящие в компоненту связности, которой принадлежит ei, остаются связными, число компонент связности не увеличивается, что противоречит определению моста.
Достаточность. Пусть некоторое ребро ei не входит ни в один цикл. Допустим, что при удалении данного ребра его концы остаются связными. Это говорит о том, что существует маршрут, соединяющий оба конца. Объединим этот маршрут и ребро ei. Получили цикл, что противоречит условию леммы.
Теорема 10.1. Граф является лесом тогда, и только тогда, когда
каждое ребро графа - мост. |
П |
|
|
|
Доказательство. По определению, лес - граф без циклов.. Значит, ни |
. |
|
одно ребро не входит ни в какой цикл, то есть все ребра - мосты. |
В |
|
. |
Теорема 10.2. Граф G является деревом тогда и только тогда, ко- |
гда любые две его вершины соединены ровно одной простой цепью. |
Барашев |
|
Доказательство. |
|
С |
Необходимость. Пусть G - дерево. Докажем, что.любыеАего две вер- |
шины vi и vj соединены ровно одной простой цепью. |
В силу связности дерева существует хотя бы один маршрут из vi |
|
Унучек |
|
в vj. Предположим, что таких путей по меньшей мере два. Объ- |
единив маршруты, получаем цикл - противоречие с определением |
дерева. |
МИРЭА |
Достаточность. Докажем, что, если в графе G любые две вершины vi и vj соединены ровно одной простой цепью, то G - дерево.
Так как любые две вершины графа соединены цепью, то, в силу теоремы 9.4, граф связен.
Если бы в графе был цикл, то любые две вершины этого цикла соединялись по крайней мере двумя простыми цепями. Значит, G не содержит циклов и связен. По определению G - дерево.
Теорема 10.3. В каждом дереве число вершин на единицу больше числа ребер.
Доказательство. Пусть G - дерево с n вершинами.
Согласно теореме 10.1 каждое ребро дерева является мостом. Удаление каждого моста, согласно определению 10.2, увеличивает количество компонент связности на 1.
Так как дерево - связный граф, то исходный граф G имеет одну компоненту связности. Удалив любое ребро, получаем 2 компоненты связности. Удалив 2 моста, имеем 3 компоненты связности. В общем случае, удалив i ребер, получаем i + 1 компоненту связности.
И так далее, удалив все мосты, получаем n компонент связности - изолированных вершин. Значит, процедуру удаления применяли к
n −1 мосту. Таким образом, в исходном графе |
П |
|
G было.n −1 |
ребро. |
|
. |
|
Остальные свойства деревьев сформулируем в следующей теоре- |
ме, которая дается без доказательства. |
В |
А |
|
|
|
|
Теорема 10.4. Для графа G с n вершинами следующие утверждения |
эквивалентны: |
. |
1.G - дерево;
2.G не содержит циклов и имеет n − 1 ребро;
3.G связен и имеет n − 1 ребро;
4.G связен и каждое его ребро является мостом;
5.G не содержит циклов, но добавление любого ребра приводит к образованию ровно одного цикла.Барашев .
Следствие 10.4.1.УнучекВ дереве,МИРЭАсодержащем не менее двух вершин, по крайней мере две вершины являются висячими.
10.2 Остовные деревья
Определение 10.3. Остовом (остовным деревом) графа G называется подграф T , являющийся деревом и содержащий все вершины графа G.
Пример 10.3.
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
s |
G |
T1 |
T2 |
T3 |
Деревья T1, T2 и T3 - остовы графа G. |
|
. |
Теорема 10.5. У каждого связного графа G существует подграф T , |
|
|
|
П |
который является остовным деревом. |
. |
Доказательство. Пусть граф G содержитВцикл. Если ребро.{vi, vj} |
входит в цикл, то существует по крайней мере два маршрута из vi в |
vj. Удалим ребро {vi, vj}, маршрут из vi в vj |
все равно существует. |
|
|
|
А |
Если, после удаления ребра, граф еще содержит.цикл, удалим ребро |
{vk, vs}, входящее в цикл. Будем удалять ребра, пока все циклы не |
|
С |
Весом графаБарашевG =< V, E > называют сумму весов всех его ребер: |
будут удалены. Поскольку количество ребер в графе конечно, процесс |
Унучек∑ |
удаления также конечен. |
|
В итоге получим связный граф без циклов, то есть дерево. |
|
МИРЭА |
Определение 10.4. Граф называется взвешенным, если каждому его ребру e поставлено в соответствие неотрицательное число λ(e) -
вес ребра.
λ(G) = λ(e)
e E
Если бы вершины графа обозначали города, то вес ребра мог бы означать расстояние между городами, стоимость проезда и т.п. .
Определение 10.5. Минимальным остовом графа G называется остов, вес которого меньше или равен весу любого другого остовного дерева графа G.
Рассмотрим задачу.
Имеется n пунктов, которые объединяют в единую телефонную сеть. Для любых двух пунктов vi и vj известна стоимость прокладки кабеля lij. Требуется проложить кабель таким образом, чтобы любые два пункта имели телефонную связь, и при этом суммарная стоимость прокладки кабеля была бы минимальной.
Эту задачу удобно решать с помощью графов. Очевидно, что искомая схема будет соответствовать минимальному остову в полном гра-
фе с n вершинами. На языке графов задачу можно сформулировать |
|
|
|
. |
следующим образом: в данном полном графе найти остов, имеющий |
наименьший вес. |
|
П |
|
|
. |
|
|
Существует несколько методов построения минимального остова |
|
В |
|
|
. |
простого связного взвешенного (не обязательно полного) графа G. Мы |
рассмотрим два из них - алгоритмы Краскала и Прима. |
|
|
|
|
А |
10.2.1 Алгоритм Краскала построения минимального остова |
в графе |
|
. |
|
С |
|
|
|
|
|
Идея метода состоит в том, чтобы создавать дерево T , выбирая ребра
снаименьшим весом так, чтобы не возникал цикл.
1.Упорядочим ребра в порядке возрастания их весов.
2.Включаем в остов все вершины исходного графа.
3.Включаем в остов T первое ребро из списка.
4.Включаем в T следующие в списке ребра заданного графа, не образующие циклов с уже включенными в остов ребрами.
Алгоритм заканчивается, когда в остов включено n − 1 ребро (n - количество вершин в исходном графе).БарашевМИРЭАУнучек
10.2.2Алгоритм Прима построения минимального остова в графе
Алгоритм похож на предыдущий; различие состоит в том, что строим последовательность деревьев, увеличивая на каждом шаге количество вершин в дереве.
1. Возьмем произвольную вершину v1 из множества вершин графа V . Из всех ребер, смежных с v1, возьмем ребро с наименьшим весом. Сформируем дерево T1.
2. Пусть дерево Tk уже сформировано. Если имеется вершина, не принадлежащая Tk, выбираем ребро с наименьшим весом, смежное с ребром дерева Tk. Получили дерево Tk+1.
3. Предыдущий шаг продолжаем, пока есть вершины графа, не при- |
надлежащие остову (то есть до тех пор, пока граф не станет связ- |
ным). |
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
П |
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
Пример 10.4. Построить минимальный остов графа, изображенного |
на рисунке, используя: |
|
|
|
|
|
|
|
В |
|
. |
а) алгоритм Краскала; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
А |
Барашев |
|
б) алгоритм Прима. |
|
|
|
|
|
|
|
. |
|
|
2 @s |
|
5 |
|
5 @s |
|
|
|
@4 |
@s |
|
@2 |
|
|
|
s@ 2 |
s |
@ |
|
4 |
Сs |
|
|
|
|
3 |
|
|
|
@ |
|
|
Унучек |
|
|
|
|
|
|
|
|
|
@ |
|
|
|
|
|
@ |
|
@ |
|
|
|
4 |
|
@ |
3 |
|
4 |
|
|
3 |
@ |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ |
|
|
|
|
@МИРЭА4 @ 4 |
|
|
|
|
@s |
|
5 |
|
|
@s |
|
|
|
G
Решение.
Сначала для удобства обозначим вершины графа. Порядок нумера-
ции вершин не важен. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v1 |
|
5 |
|
v5 |
|
|
|
|
2 @s |
|
5 @s |
|
|
|
|
@4 |
|
@2 |
|
|
|
|
3 |
@@ |
|
|
@@ |
|
|
v0 s@ |
2 |
|
sv2 |
v |
4 |
|
v |
|
|
|
@s |
4 |
s |
7 |
|
3 |
@ |
3 |
|
|
|
3 |
|
|
|
|
|
|
|
|
@ |
|
|
|
|
|
|
@ |
|
|
|
@ |
|
|
|
|
|
|
v |
s3 |
|
5 |
|
v |
s6 |
|
|
|
G
а) Алгоритм Краскала.
1.Выписываем ребра в порядке возрастания их длин: Ребра длины 2: {v0, v1}, {v0, v2}, {v5, v7};
Ребра длины 3: {v0, v3}, {v1, v2}, {v2, v3}, {v4, v6}; Ребра длины 4: {v1, v4}, {v3, v4}, {v5, v6}, {v6, v7};
Ребра длины 5: {v1, v5}, {v3, v6}, {v4, v5}.
2.Включаем в остов все восемь вершин графа.
|
vs1 |
|
vs5 . |
v0 s |
sv2 |
sv4 |
.Пsv7 |
|
|
В |
|
|
vs3 |
|
vs6 . |
|
|
|
|
А |
4. ВключаемБарашевв T ребра {v0, v2} и {v5, v7}, так как они не образу- |
3. Включаем в остов ребро {v0, v1 |
|
. |
} - первое ребро из списка. |
2 |
s |
|
С |
|
|
|
s |
|
|
v1 |
|
v5 |
|
Унучек |
|
sv7 |
v0 s |
sv2 |
sv4 |
|
v0МИРЭАs 2 sv2 sv4 @sv7 |
|
vs3 |
|
vs6 |
|
ют цикла с ребром {v0, v1}. Количество ребер в дереве равно 3.
5.Ребро {v0, v3} длины 3 также включаем в остов. Количество ребер 4.
|
|
v1 |
|
v5 |
|
|
|
|
2 s |
|
s@@2 |
|
|
|
|
|
|
|
|
@@ |
|
v0 |
s@@2 |
|
sv2 |
sv4 |
|
sv7 |
|
|
|
|
3@ |
vs3 |
|
vs6 |
|
|
|
|
|
@ |
|
|
|
|
. |
|
|
|
|
|
|
|
6. Ребра {v1, v2} и {v2, v3} в остов не включаем, так как они
образуют циклы с уже включенными в дерево ребрами. Ребро
|
|
|
В . |
{v4, v6} не образует цикла с ребрами.изПT , включаем его в |
остов. Количество ребер в T равно пяти. |
|
|
|
|
|
|
|
|
@ А |
Барашев |
|
|
v5 |
|
|
|
v1 |
|
|
. |
2 s |
|
|
|
s@@2 |
|
2 |
sv2 |
v |
|
С |
@ v |
v0 s@@ |
|
s@@4 |
3 |
|
|
|
s 7 |
3 |
vs3 |
|
vs6 |
|
|
|
@ |
|
|
@ |
|
|
|
|
@ |
|
|
|
@ |
|
|
|
7.Ребро {v1, v4} длины 3 включаем в остов, а ребро {v3, v4} - нет (образуется цикл). Ребро {v5, v6} включаем в остов.
Унучек |
|
|
|
МИРЭА |
|
|
|
v1 |
|
|
v5 |
|
|
|
2 s@@4 |
|
|
s@@2 |
|
|
|
|
|
sv2 |
@ |
@ v |
@ |
@ v |
|
2 |
|
|
|
v0 s@@ |
|
|
s@@4 |
4 |
s 7 |
|
|
3 |
vs3 |
|
|
3 |
|
|
|
|
|
|
|
vs6 |
|
|
|
|
@@ |
|
|
|
@@ |
|
|
T
Количество ребер на данном этапе работы алгоритма равно 7, что ровно на единицу меньше, чем количество вершин. Ал-