Основывается на неравенстве Макмиллана.
Алгоритм
- Вычисляем потенциальную длину кодового слова каждого символа так:
- Берём его частоту
- $l_i = \lceil \log_2{p_i}\rceil$
- Имеем набор длин кодовых слов
- Придумаем код с такими длинами:
- Рисуем префиксное дерево, чтобы построенный код был префиксным
- Делаем его насыщенным, тогда стоимость будет маленькой.

Мокеев Д.Б. - Лекции по дискретной математике