Изменения

Перейти к: навигация, поиск

Алгоритм Хаффмана

60 байт добавлено, 11:49, 31 декабря 2011
м
Нет описания правки
{{Определение
|definition=
Пусть <tex>A=\{a_{1},a_{2},...,a_{n}\}</tex> - алфавит из n различных символов, <tex>W=\{w_{1},w_{2},...,w_{n}\}</tex> - соответствующий ему набор положительных целых весов. Тогда набор бинарных кодов <tex>C=\{c_{1},c_{2},...,c_{n}\}</tex>, такой, что:
1.<tex>c_{i}</tex> не является префиксом для <tex>c_{j}</tex>, при <tex>i != \ne j</tex>
2.Сумма <tex>\sum\limits_{i \in [1, n]} w_{i}\cdot c_{i}</tex> минимальна. (<tex>|c_{i}|</tex> - длина кода <tex>c_{i}</tex>)
называется '''кодом Хаффмана'''.
4. Добавим к списку только что сформированный узел.
5. Если в списке больше одного узла, то повторить п.2-п.5пункты со второго по пятый.
== Пример ==
 
[[Файл:Mississippi.png|400px|thumb|right|Дерево Хаффмана для слова ''"Миссисипи"'']]
Для примера возьмём слово ''"Миссисипи"''. Тогда алфавит будет <tex>A= \{</tex> ''и, м, п, с'' <tex>\} </tex>, а набор весов <tex>W=\{4, 1, 1, 3\}</tex>:
И, наконец, объединяем два узла ''и'' и ''мпс''. Итак, мы получили дерево Хаффмана и соответствующую ему таблицу кодов:
 
[[Файл:Mississippi.png|400px|thumb|left|Дерево Хаффмана для слова ''"Миссисипи"'']]
{| class="wikitable"
355
правок

Навигация