Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дискретная Математика Лекции.doc
Скачиваний:
195
Добавлен:
16.05.2015
Размер:
1.16 Mб
Скачать

Решение.

Пронумеруем вершины графа, выпишем матрицу смежности и ее верхний треугольник (рис. 17).

, верхний треугольник, записанный в виде строки, имеет вид 01010111002 = 34810.

Легко увидеть, что данная нумерация вершин не является канонической. Действительно, сменим нумерацию вершин (рис. 18).

, верхний треугольник, записанный в виде строки, имеет вид 11000110102 = 79410.

Можно убедиться, что при всех других способах нумерации вершин получаются числа, меньшие 794. следовательно, последняя нумерация вершин является канонической, а кодом Харари данного графа является число 794.

  1. Восстановить и нарисовать граф по числу 501 как по коду Харари. Проверить, действительно ли нумерация вершин каноническая (то есть, является ли это число кодом Харари).

Решение.

Переведем число 501в двоичную форму, для чего будем последовательно делить его на 2, справа от черты записывая остатки от деления, а слева на следующей строке частные.

501 1

250 0

125 1

062 0

031 1

015 1

007 1

003   1

001     

Затем выписываем число, начиная с последнего частного, и далее все остатки снизу вверх: 01111101012. Код Харари должен быть треугольным числом, т.е. иметь длину 1, 3, 6, 10, 15, 21 и т.д., если длина, как в нашем случае, не совпадает ни с одним из этих чисел, то добавляем слева необходимое количество нулей (в данном примере добавлен один ноль слева). Разбиваем число на разряды: 0111-110-10-1, вписываем эти числа в верхний треугольник матрицы, затем восстанавливаем всю матрицу, записывая ее строки по столбцам:

Восстанавливаем по этой матрице граф с четырьмя вершинами (рис. 19):

Заметим, что данная нумерация вершин не является канонической. Перенумеруем вершины (рис. 20):

Для получившегося графа матрица смежности

, верхний треугольник, записанный в виде строки, имеет вид 11101100112 = 94710.

947 > 501, значит, число 501 не является кодом Харари графа.

3. Найти префиксный код бинарного ордерева (рис.21).

Рис. 21

Решение.

  1. Будем последовательно приписывать вершинам данного ордерева двоичные строки, состоящие из нулей и единиц. Корню не припишем ничего, его левому потомку припишем 0, правому – 1 (рис 22).

Рис. 22.

  1. Левому потомку 0 припишем индекс 00, а правому – 01, левому потомку 1 припишем индекс 10, а правому – 11 (см. рис 23).

11

Рис. 23.

  1. Продолжим этот процесс, пока все висячие вершины не получат некоторый двоичный индекс (рис. 24).

101

001

Рис. 24.

  1. Выпишем индексы висячих вершин слева направо.

{000, 001, 011, 101, 11}.

Это и есть префиксный код для заданного бинарного ордерева.

4. Восстановить бинарное ордерево по префиксному коду {00,010,011,101,11}.

Решение.

Поскольку наибольшая длина двоичной строки в коде равна трём, то бинарное ордерево имеет не более трёх уровней.

Так как первые цифры строк равны либо 0, либо 1, то корень имеет два потомка (рис. 25).

Рис. 25.

При этом каждый потомок корня имеет два потомка (рис.26).

Рис. 26.

Вершины 00 и 11 имеются в префиксном коде, поэтому уже являются висячими. Вершина 01 имеет два, а вершина 10 – одного потомка (рис.27(.

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

5. Найти код Прюфера заданного дерева (рис. 28).

Рис. 28