- •Тема № 8. Жадные алгоритмы, теоретические основы, применение.
- •8.1 Введение.
- •8.2 Применимость жадного алгоритма
- •А.Принцип жадного выбора
- •Б.Оптимальность для подзадач
- •В. Жадный алгоритм или динамическое программирование?
- •8.3 Коды Хаффмена
- •Построение кода Хаффмена.
- •Правильность алгоритма Хаффмена.
- •Теорема 8.2 Жадный алгоритм Хаффмена строит оптимальный префиксный код.
- •8.4 Теоретические основы жадных алгоритмов
- •Что есть матроид?
- •Теорема 8.4 Множество X является множеством баз матроида m тогда и только тогда, когда выполняются следующие два свойства:
- •Теорема 8.6 Пусть a — какое-то множество подмножеств e, а I — множество частичных трансверсалей множества a. Тогда пара e, I — матроид.
- •Лемма. Жадный алгоритм стоит независимое множество максимального веса.
Лемма. Жадный алгоритм стоит независимое множество максимального веса.
Доказательство. Так как все веса положительные, то множество максимального веса будет базой матроида. Пусть BG = {e1, e2, e3, …, er}, причем выписаны они в том порядке, в каком алгоритм выбирал их. Тогда w(e1) ≥ w(e2) ≥ … ≥ w(er). Рассмотрим базу B = {f1, f2, f3, …, fr}, причем элементы тоже упорядочены по убыванию. Пусть она будет базой максимального веса. Далее будет доказано, что всегда будет выполняться неравенство w(ek) ≥ w(fk).
Будем доказывать от противного. Пусть k + 1 будет наименьшим индексом, для которого это соотношение не будет выполняться — w(ek+1) < w(fk+1). Рассмотрим два множества — Y = {e1, e2, e3, …, ek}, X = {f1, f2, f3, …, fk+1}. По третьему свойству матроидов Y {fi} I для какого-то i {1, 2, …, k + 1}. Но w(fi) ≥ w(fk+1) ≥ w(ek+1). Но алгоритм должен был выбрать fi в предпочтение ek+1. Получили противоречие. Поэтому w(ei) ≥ w(fi). Так как было сделано предположение, что B — максимального веса, то из этого следует что алгоритм действительно строит независимое множество максимального веса.