Опубликован: 25.07.2006 | Уровень: для всех | Доступ: платный | ВУЗ: Новосибирский Государственный Университет
Лекция 11:

О деревьях

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >
Аннотация: Представления деревьев. Представление с помощью матрицы смежности. Представление с помощью списков смежности. Представление с помощью списка ребер и кода Прюфера. Алгоритм построения кода Прюфера. Алгоритм раскодирования. Уровневые коды корневых деревьев. Перечисление и подсчет деревьев. Непомеченные деревья. Ориентированные деревья. Каркасы в неориентированном графе. Каркасы в ориентированных графах.

Представления деревьев

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

Представление с помощью матрицы смежности

Это представление является общим для всех видов графов; оно задает граф с точностью до изоморфизма, но вместе с тем данное представление неэкономично, так как ненулевыми являются для n -вершинного дерева только 2\times n-2 из n^{2} элементов матрицы.

Задание графа матрицей смежности, размера n\times
n, где n — число вершин графа. A(i,j)=1, если вершины i и j смежные, в противном случае A(i,j)=0. Aсимметрическая матрица для неориентированного графа и несимметрическая для ориентированного.

Для неориентированного графа матрица смежности симметрична относительно главной диагонали, поэтому можно задавать только верхнюю треугольную половину матрицы, но это не улучшает ситуацию. Другой недостаток этого представления заключается в том, что трудоемкость алгоритмов, работающих с таким представлением, не может быть ниже.

Пример.


Рис. 11.1.
\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}

Представление с помощью списков смежности

В этом представлении каждой вершине дерева сопоставляется список смежных вершин вида v_{i_{1}},v_{i_{2}}\dts v_{i_{n}}.

Для дерева из предыдущего примера списки смежности имеют вид

\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}

При машинной организации списки смежности могут быть связаны между собой разными способами, например, копируя структуру дерева.

< Лекция 10 || Лекция 11: 1234 || Лекция 12 >
Никита Толышев
Никита Толышев
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Константин Леденев
Константин Леденев
Россия
Олег Равков
Олег Равков
Россия