Алгоритм
1. Дано: неотрицательные веса. Для i = 0, 1, 2, … , n полагают вес дерева совпадает с весом соответствующего листа, стоимость равна нулю, корень совпадает с листом:
2. Для выполнить шаг 3.
3. Для i = 0,1,2, …,n – l выполнить шаг 4.
4. Положить Пусть т – значение параметра , для которого сумма минимальна.
Положить
Вычислив с помощью приведенного выше алгоритма, мы можем построить дерево , используя следующую процедуру:
1. корень дерева . Если , то ak имеет в качестве левого узла , а в качестве правого .
2. Рассмотрим внутреннюю вершину ат . Если ат = , то ат имеет в качестве левого узла, а в качестве правого.
Согласно принципу оптимальности, чтобы выбрать корень оптимального дерева, нужно вычислить для каждого узла с весом pi стоимость в предположении, что ai является корнем дерева Т . Это требует знания оптимальных правого и левого поддеревьев ak .
Если вычисления проводятся по рекурсивной схеме сверху вниз, то одни и те же оптимальные поддеревья будут вычисляться повторно. Поэтому алгоритм построения оптимального дерева лучше всего организовывать снизу вверх.
Данная задача демонстрирует эффективность динамического программирования (позволяет уменьшить время поиска). Исчерпывающий поиск всех деревьев потребовал бы времени, экспоненциально растущего с увеличением числа узлов п . Существует примерно бинарных деревьев с п узлами.
Пример. Пусть имеются четыре упорядоченных элемента с весами р1 = 2, р2 =1, р3 =3, р4 =1; q0 =1, q1 =2, q2 =3, q3 =2, q4 =1. Построить оптимальное дерево бинарного поиска.
□ Воспользуемся алгоритмом Гильберта – Мура .
1. Для полагаем
2. и выполним шаг 3.
3. Так как i = 0, 1, 2, …, n – l , то i = 0, 1, 2, 3. Выполним шаг 4.
4. Вычисляем веса деревьев по формуле:
,
где .
Тогда, учитывая l , получим
Вычисления весов будем проводить с изменением значения i , т.е. деревья расположатся в следующем порядке: :
Вычисляем стоимость деревьев , минимизируя сумму
и каждый раз оптимально выбираем корень.
Используя указанную выше процедуру построения дерева, построим это дерево:
Корнем дерева является . Для корня левым узлом будет , а правым – . Для корня левым узлом будет , а правым – , т.е лист b2 . Для корня левым листом будет , а правым – . Для корня а4 левым листом будет , а правым – . ■
- Богданов а.Е. Курс лекций
- Содержание
- § 1. Основные понятия теории множеств
- Основные понятия теории множеств
- Способы задания множеств
- Операции над множествами
- § 2. Соответствия. Функции. Отображения
- § 3. Понятие алгебры. Алгебра множеств кантора
- Диаграмма Эйлера-Венна
- § 4. Бинарные отношения
- Способы задания бинарных отношений
- Свойства бинарных отношений
- § 5. Бинарное отношение эквивалентности
- § 6. Бинарное отношение порядка. Упорядоченные
- § 7. Решетки (структуры). Изоморфизм
- Изоморфизм множеств
- Дедекиндовые решетки
- Дистрибутивные решетки
- § 8. Отношения (обобщение). Алгебраические
- Операции над отношениями
- Алгебраические системы
- Глава ιι. Комбинаторный анализ
- § 1. Основные определения
- Правила суммы и произведения
- § 2. Формулы расчета перестановок и сочетаний
- § 3. Бином и полином
- § 4. Подстановки
- § 5. Метод включений и исключений
- § 6. Метод производящих функций
- § 7. Комбинаторная мера информации. Вероятность искажения информации
- Глава ιіі. Теория графов
- § 1. Первоначальные понятия теории графов
- § 2. Операции над графами. Способы задания графов Операции над графами
- Способы задания графов
- § 3. Маршруты, цепи, циклы и другие характеристики графа
- § 4. Алгебраическая форма представления графа
- Глава іv. Некоторые приложения графов
- § 1. Эйлеровы графы. Алгоритм флери. Гамильтоновы
- Эйлеровы графы
- Алгоритм Флери.
- Метод построения эйлерового обхода двоичного куба
- Гамильтоновы графы. Метод Робертса – Флореса
- Метод перебора Робертса – Флореса
- § 2. Пространство циклов графа
- § 3. Независимое множество вершин графа
- Алгоритм выделения пустых подграфов
- § 4. Вершинное число внешней устойчивости графа
- § 5. Плотность графа
- Алгоритм выделения полных подграфов
- § 6. Раскраска графа
- Оценки хроматического числа
- Алгоритм минимальной раскраски вершин графа
- § 7. Планарность графа
- Глава V. Оптимизационные алгоритмы теории графов
- § 1. Определение кратчайших путей. Алгоритм дейкстры
- § 2. Максимальный поток через сеть. Алгоритм
- Алгоритм Форда – Фалкерсона
- § 3. Построение остова экстремального веса. Алгоритм краскала
- § 4. Метод ветвей и границ: задача коммивояжера. Общая модель задачи поиска
- Дерево поиска частичных решений
- § 5. Применение ориентированных деревьев в задачах теории кодирования и диагностирования
- § 6. Построение оптимального дерева бинарного поиска. Алгоритм гильберта – мура
- Алгоритм Гильберта – Мура построения оптимального дерева бинарного поиска Суть алгоритма
- Алгоритм
- § 7. Сложность задач теории графов. Задача синтеза управляющих систем
- Задача синтеза управляющих систем
- Задача о выполнимости
- Литература
- Электронное пособие курс лекций
- «Дискретная математика».