- •4.1. Основные понятия и определения теории графов
- •4.2. Типы графов
- •4.3. Матричные представления графов
- •4.5. Операции над графами
- •4.6. Метрические характеристики графа. Расстояние в графах
- •Затем, изымая степень, соответствующую вершине , получим
- •4.8. Достижимость и связность
- •4.8.1. Основные определения
- •4.8.2. Матрицы достижимостей
- •4.8.3. Нахождение сильных компонент
- •Алгоритм нахождения сильных компонент графа можно описать следующей последовательностью шагов
- •Таким образом, сильные компоненты графа можно находить по следующему алгоритму.
- •4.8.4. Базы и антибазы
- •4.9. Независимые и доминирующие множества
- •4.9.1. Нахождение всех максимальных независимых множеств
- •Опишем алгоритм нахождения всех максимальных независимых множеств вершин графа.
- •4.10. Покрытия и раскраски
- •4.11. Деревья, остовы и кодеревья
- •4.11.1. Основные определения
- •4.11.2. Алгоритм построения остова неорграфа
- •4.11.4. Обходы графа по глубине и ширине
- •Доказательство.
- •4.11.5. Упорядоченные и бинарные деревья
- •4.12. Эйлеровы циклы. Гамильтонов контур
- •4.12.1. Метод Флёри построения эйлерова цикла
- •Матрица м данного графа имеет вид
- •4.12.3. Алгебраический метод выделения гамильтоновых путей и контуров
- •4.13. Плоские и планарные графы
- •4.13.1. Формула Эйлера
- •4.13.2. Критерии анализа планарности
- •4.13.3. Алгоритм укладки графа на плоскости
- •Задачи и упражнения
- •5. Разрешимые и неразрешимые проблемы
- •Библиографический список
4.11.5. Упорядоченные и бинарные деревья
Определим по индукции понятие упорядоченного дерева:
1) пустое множество и список (а), где а некоторый элемент, является упорядоченным деревом;
2) если T1, T2,..., Тп непустые упорядоченные деревья, a некоторый новый элемент, то список Т = (a, T1, T2, ..., Тn) образует упорядоченное дерево. При этом элемент а называемся корнем упорядоченного дерева Т;
3) любое упорядоченное дерево строится в соответствии с п.п. 1 и 2.
Если T1, T2, ..., Тn упорядоченные деревья, то список (T1, T2, ..., Тn) называется упорядоченным лесом.
Для заданного упорядоченного дерева Т определим множество S(Т) его упорядоченных поддеревьев:
если Т = , то S(T) = ;
если Т = (а), то S(T) = {(a)};
если Т=(a, T1, T2, ..., Тn), то S(T)=S(T1)...S(Tn){Т}.
Непустое упорядоченное дерево Т может интерпретироваться в виде системы пронумерованных непустых множеств, каждое из которых взаимно однозначно соответствует упорядоченному поддереву из S(Т) так, что:
1) если Т' поддерево упорядоченного дерева Т", Т',Т"S(T), то для соответствующих множеств X' и X" выполняется включение X' X";
2) если Т' не является поддеревом упорядоченного дерева Т", Т',Т"S(T), то соответствующие множества не пересекаются.
Пример. Упорядоченному дереву
(1, (2, (4), (6)), (3, (6, (8), (9)), (7)))
соответствует система множеств, изображенная на рис. 4.38.
Рис. 4.38 Рис. 4.39
Упорядоченное дерево может также интерпретироваться в виде так называемого уступчатого списка, который используется в оглавлениях. На рис. 4.39 представлен уступчатый список, соответствующий упорядоченному списку из примера.
Согласно следующему тезису любая схема, в которой заданы определенные приоритеты между элементами, может рассматриваться как некоторое упорядоченное дерево.
Тезис. Любая иерархическая классификационная схема интерпретируется некоторым упорядоченным деревом.
Например, и виде упорядоченного дерева представляется любой терм. На рис. 4.40 изображено упорядоченное дерево, соответствующее терму t=a-b(c:d+e:f).
Рис. 4.40
Частным случаем упорядоченного дерева является бинарное дерево. Определение понятия бинарного дерева повторяет определение для упорядоченного дерева с ограничением п{0,1,2} в п.2. При этом для бинарного дерева Т = ((a),T1,T2), бинарное поддерево T1 называется левым поддеревом, а T2 – правым поддеревом.
Бинарные деревья имеют более простое устройство, чем упорядоченные, и вместе с тем любой упорядоченный лес взаимно однозначно соответствует некоторому бинарному дереву.
Опишем алгоритм преобразования упорядоченною леса Т = (T1, T2, .., Tn) в бинарное дерево В (Т).
Шаг 1. Если n = 0, В(Т) = .
Шаг 2. Если п > 0, то корнем бинарного дерева В(Т) является корень упорядоченного дерева Т1, левое поддерево дерева В(Т) - бинарное дерево В(Т11, Т12, …, Т1m), где Т1= ((a1),T11, T12, ..., T1m), правое поддерево дерева В(Т) - бинарное дерево В(Т2, ..., Тn).