О деревьях
Представления деревьев
Каждому дереву можно поставить в соответствие некоторый код. С помощью этого кода можно восстановить дерево с точностью до изоморфизма. Существуют различные способы кодировки деревьев, которые позволяют решать конкретные задачи (подсчет деревьев, установление изоморфизма, генерирование всех неизоморфных деревьев и т.д.). Представлением дерева называется способ записи информации о нем, однозначно и полностью восстанавливающий структуру дерева и позволяющий вычислить его характеристики. Выбор представления зависит от решаемой задачи и способа ее решения. Рассмотрим наиболее распространенные способы задания деревьев.
Представление с помощью матрицы смежности
Это представление является общим для всех видов графов; оно задает граф с точностью до изоморфизма, но вместе с тем данное представление неэкономично, так как ненулевыми являются для -вершинного дерева только из элементов матрицы.
Задание графа матрицей смежности, размера , где — число вершин графа. , если вершины и смежные, в противном случае . — симметрическая матрица для неориентированного графа и несимметрическая для ориентированного.
Для неориентированного графа матрица смежности симметрична относительно главной диагонали, поэтому можно задавать только верхнюю треугольную половину матрицы, но это не улучшает ситуацию. Другой недостаток этого представления заключается в том, что трудоемкость алгоритмов, работающих с таким представлением, не может быть ниже.
Пример.
Представление с помощью списков смежности
В этом представлении каждой вершине дерева сопоставляется список смежных вершин вида .
Для дерева из предыдущего примера списки смежности имеют вид
При машинной организации списки смежности могут быть связаны между собой разными способами, например, копируя структуру дерева.