Деревья
Как уже упоминалось, есть класс графов, называемых деревьями, которые особенно интенсивно используются в вычислительных приложениях. Граф G = (V, E) называется деревом, если он связен и ацикличен(т.е. не содержит циклов).
Пусть G = (V, E) – граф с n вершинами и m ребрами. Можно сформулировать несколько необходимых и достаточных условий, при которых G является деревом:
- Любая пара вершин в G соединена единственным путем.
- G связен и m=n– 1.
- G связен, а удаление хотя бы одного его ребра нарушает связность графа.
- G ацикличен, но если добавить хотя бы одно ребро, то в G появится цикл.
Эквивалентность большинства из этих условий устанавливается без особого труда. Наиболее сложно разобраться со вторым из них. В следующем примере мы докажем, что дерево с n вершинами имеет ровно n– 1 ребро. Пример 7.7. Докажите с помощью индукции по числу вершин, что для дерева T с n вершинами и m ребрами выполнено соотношение: m=n– 1. Решение. Поскольку дерево с единственной вершиной вообще не содержит ребер, то доказываемое утверждение справедливо при n = 1. Рассмотрим дерево Т с n вершинами (и m ребрами), где n> 1 и предположим, что любое дерево с kn вершинами имеет ровно k – 1 ребро. Удалим ребро из Т. По третьему свойству дерево Т после этой процедуры превратится в несвязный граф. Получится ровно две компоненты связности, ни одна из которых не имеет циклов (в противном случае исходный граф Т тоже содержал бы циклы и не мог бы быть деревом). Таким образом, полученные компоненты связности – тоже деревья. Обозначим новые деревья Т1 и Т2. Пусть n1 – количество вершин у дерева Т1, а n2 – y T2.Поскольку n1+ n2= n, то n1< n и n2< n. По предположению индукции дерево Т1 имеет n1 – 1 ребро, а Т2–n2 – 1. Следовательно, исходное дерево Т насчитывало ( с учетом одного удаленного) (n1– 1) + (n2 – 1) + 1 = n – 1 ребро, что и требовалось доказать. Несложно доказать, что в любом связном графе найдется подграф, являющийся деревом. Подграф в G , являющийся деревом и включающий в себя все вершины G, называется остовным деревом. Остовное дерево в графе G строится просто: выбираем произвольное его ребро и последовательно добавляем другие ребра, не создавая при этом циклов, до тех пор, пока нельзя будет добавить никакого ребра, не получив при этом цикла. Благодаря примеру 7.7, мы знаем, что для построения остовного дерева в графе из n вершин необходимо выбрать ровно n – 1 ребро. Пример 7.8. Найдите два разных остовных дерева в граве, изображенном на рис. 7.12.
| A | B | C | D | E | |
| A | — | 13 | 3 | 9 | 9 |
| B | 13 | — | 11 | 11 | 13 |
| C | 3 | 11 | — | 9 | 7 |
| D | 9 | 11 | 9 | — | 2 |
| E | 9 | 13 | 7 | 2 | — |
Решение. Ребра выбираются следующим образом: первое – 1 DE веса 2; второе – AC веса 3; третье – СЕ веса 7. на этой ступени строящееся дерево выглядит так, как на рис. 7.14
Источник
2.10. Корневые деревья. Код дерева
Любое дерево можно рассматривать как корневое, если одну из вершин выбрать в качестве корня, а остальные расположить на соответствующих уровнях (ярусах). Пример корневого дерева приведен на рис. 2.26. Корень располагается на нулевом уровне. Припишем каждой вершине некоторое число, называемое весом. Веса концевых вершин равны единице, вес корня дерева равен числу всех его вершин. Вес произвольной вершины равен общему числу вершин поддерева, корнем которого она является. Возле каждой вершины дерева на рис. 2.26 указан ее вес. При таком представлении корневое дерево однозначно определяется упорядоченной последовательностью β( G ) весов его вершин, в которой на первом 40
месте стоит вес корня дерева, а затем следуют соответствующие последова- тельности для поддеревьев: β( G ) = (17, 1, 4, 1, 1, 1, 11, 4, 1, 2, 1, 6, 1, 1, 3, 1, 1).
| 4 | 1 | 1 1 | Одна из стандартных проце- | |||||||
| дур | выбора | корня состоит в сле- | ||||||||
| 1 | 2 1 | 1 | ||||||||
| 3 | дующем: из дерева удаляются все | |||||||||
| 1 | 1 | 1 | 3 | концевые вершины и ребра, затем | ||||||
| 2 | в полученном дереве снова удаля- | |||||||||
| 4 | 6 | |||||||||
| 1 | ются все вершины и ребра. В пер- | |||||||||
| 1 | ||||||||||
| 4 | 11 | вом | случае | оставшаяся | вершина | |||||
| 0 | выбирается в качестве корня и | |||||||||
| 17 | Рис. 2.26 | называется | центром, во | втором | ||||||
| случае две вершины и связываю- | ||||||||||
| щее их ребро образуют бицентр. | ||||||||||
| При этом за корень принимается та вершина, из которой вырастает дерево | ||||||||||
с меньшим числом вершин (если число вершин одинаково, то за корень принимается любая из вершин бицентра).
| На рис. 2.27, а приведено дерево, | в котором выделен бицентр, корневая | ||
| форма этого дерева изображена на рис. 2.27, б. | |||
| корень | 3 | ||
| бицентр | 2 | ||
| 1 | |||
| 0 | |||
| а | б | ||
Рис. 2.27 Аналитически корневое дерево можно задать также с помощью кода γ( G ), представляющего собой последовательность 0 и 1, записанную в определенном порядке. Осуществляется обход дерева по всем ребрам по одному разу в каждом из противоположных направлений. При движении по ребру от корневой вершины в последовательность g ( G ) записывается 0, а при обратном движении – 1. Обход начинается и заканчивается в корне дерева. Длина последовательности g ( G ) равна удвоенному количеству ребер дерева. Для графа, приведенного на рис. 2.27, б, g ( G ) = (01001011000110010111). 41
Источник