О деревьях
Представления деревьев
Каждому дереву можно поставить в соответствие некоторый код. С помощью этого кода можно восстановить дерево с точностью до изоморфизма. Существуют различные способы кодировки деревьев, которые позволяют решать конкретные задачи (подсчет деревьев, установление изоморфизма, генерирование всех неизоморфных деревьев и т.д.). Представлением дерева называется способ записи информации о нем, однозначно и полностью восстанавливающий структуру дерева и позволяющий вычислить его характеристики. Выбор представления зависит от решаемой задачи и способа ее решения. Рассмотрим наиболее распространенные способы задания деревьев.
Представление с помощью матрицы смежности
Это представление является общим для всех видов графов; оно задает граф
с точностью до изоморфизма, но вместе с тем данное представление
неэкономично, так как ненулевыми являются для -вершинного дерева
только
из
элементов матрицы.
Задание графа матрицей смежности, размера , где
— число вершин графа.
, если
вершины
и
смежные, в противном случае
.
—
симметрическая матрица
для неориентированного графа и несимметрическая для ориентированного.
Для неориентированного графа матрица смежности симметрична относительно главной диагонали, поэтому можно задавать только верхнюю треугольную половину матрицы, но это не улучшает ситуацию. Другой недостаток этого представления заключается в том, что трудоемкость алгоритмов, работающих с таким представлением, не может быть ниже.
Пример.
![\begin{pmatrix}{0} & {0} & {0} & {1} & {0} & {0} & {0} & {0} & {0} \\
{0} & {0} & {0} & {1} & {0} & {0} & {0} & {0} & {0} \\
{0} & {0} & {0} & {1} & {0} & {0} & {0} & {0} & {0} \\
{1} & {1} & {1} & {0} & {1} & {0} & {0} & {0} & {0} \\
{0} & {0} & {0} & {1} & {0} & {1} & {1} & {0} & {0} \\
{0} & {0} & {0} & {0} & {1} & {0} & {0} & {0} & {0} \\
{0} & {0} & {0} & {0} & {1} & {0} & {0} & {1} & {1} \\
{0} & {0} & {0} & {0} & {0} & {0} & {1} & {0} & {0} \\
{0} & {0} & {0} & {0} & {0} & {0} & {1} & {0} & {0}
\end{pmatrix}](/sites/default/files/tex_cache/05806a0eacaf7edbbf230e67198e4c15.png)
Представление с помощью списков смежности
В этом представлении каждой вершине дерева сопоставляется список смежных
вершин вида .
Для дерева из предыдущего примера списки смежности имеют вид
![\begin{aligned} & \begin{aligned}
\,\,v_{4} &: v_{1},v_{2},v_{3},v_{5};\\
v_{5} &:v_{4},v_{6},v_{7}; \\
v_{7} &:v_{5},v_{8},v_{9};\\
\end{aligned}\\ & \left.
\begin{aligned}
v_{1} &:v_{4}; \\
v_{2} &:v_{4}; \\
v_{3} &:v_{4}; \\
v_{6} &:v_{5}; \\
v_{8} &:v_{7}; \\
v_{9} &:v_{7};
\end{aligned}
\right\} \t{— необязательно}
\end{aligned}](/sites/default/files/tex_cache/7afc3d7855a1190f5441a15ffde76660.png)
При машинной организации списки смежности могут быть связаны между собой разными способами, например, копируя структуру дерева.