Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
153
Добавлен:
16.04.2013
Размер:
717.82 Кб
Скачать

Построение дерева по коду

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

Например, если дан код (010010010111010011), поступим так (см. рис. 2.34а). Дерево, соответствующее этому коду, изображено на рис. 2.34б.

В а) б) Рис. 2.34 Рис. 2.35торой способ кодирования

Перенумеруем вершины дерева произвольным образом (рис.2.35). Найдем висячую вершину с наименьшим номером. Запишем номер единственной смежной с ней вершины и удалим висячую вершину вместе с ребром. Для получившегося дерева снова найдем висячую вершину с наименьшим номером и т. д., пока не останется одно ребро. Длина кода при этом равна |E| – 1 = |V| – 2.

Пример.Построить код дерева, изображенного на рис. 2.35.

Висячая вершина с наименьшим номером – 1, смежная с ней – 2. Удаляем вершину 1 вместе с ребром и записываем в код 2. В оставшемся дереве висячая вершина с наименьшим номером – 5, смежная с ней – 4. Удаляем вершину 5 вместе с ребром и записываем в код 4. В оставшемся дереве висячая вершина с наименьшим номером – 6, смежная с ней – 4. Удаляем вершину 6 вместе с ребром и снова записываем в код 4. В оставшемся дереве висячая вершина с наименьшим номером – 7, смежная с ней – 4. Удаляем вершину 7 вместе с ребром и снова записываем в код 4. В оставшемся дереве висячая вершина с наименьшим номером – 4, смежная с ней – 2. Удаляем вершину 4 вместе с ребром и записываем в код 2. В оставшемся дереве висячая вершина с наименьшим номером – 2, смежная с ней – 3. Удаляем вершину 2 вместе с ребром и записываем в код 3. Осталось одно ребро. Получили код дерева [244423].

В

Рис. 2.36 Рис.2.37

осстановление дерева по кодурассмотрим на примере кода [2557389]. Вместо первого числа в коде пишем наименьшее, не встречающееся в коде: 1557389. Вместо второго числа в новой последовательности пишем наименьшее, не встречающееся в ней: 1257389 и т.д. Получаем последовательность 1245637. Расположив ее под кодом, получим список ребер: (2,1), (5, 2), (5, 4), (7, 5), (3,6), (8,3), (9, 7). Строим сначала граф по этому списку ребер (рис.2.36). В последовательности 1245637 отсутствуют числа 8 и 9. Соединяем вершины 8 и 9 ребром и получаем граф (рис. 2.37).

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

Эйлеровы пути. Эйлеровы циклы

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

Теорема. Пусть дан связный граф. В нем существуетэйлеров путь тогда и только тогда, когда две вершины графа имеют нечетную степень, а все остальные – четную. Эйлеров цикл существует тогда и только тогда, когда все вершины графа имеют четную степень.

Соседние файлы в папке Прокофьевская книга по дискретке