Алгоритм Хаффмана для n ичной системы счисления — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 3: Строка 3:
  
 
== Пример ==
 
== Пример ==
Возьмем какое-то слово,состоящее из букв:<tex>\</tex> ''а, б, в, г, д, е'' <tex>\} </tex>, а набор весов <tex>W=\{4, 1, 1, 3\}</tex>:
 
  
{| class="wikitable"
+
== Корректность алгоритма Хаффмана для <tex>n</tex>-ичной системы счисления ==
! Узел || и || м || п || с
+
Доказательство аналогично тому,что представлено в теме [[Алгоритм Хаффмана]].Только вместо двух символом с минимальными частотами надо брать <tex>n</tex> символов с минимальными частотами(по алгоритму частота символа также может равняться 0)
|-
 
| Вес || 4 || 1 || 1 || 3
 
|}
 
 
 
По алгоритму возьмем два символа с наименьшей частотой {{---}} это ''м'' и ''п''. Сформируем из них новый узел ''мп'' весом 2 и добавим его к списку узлов:
 
 
 
{| class="wikitable"
 
! Узел || и || мп || с
 
|-
 
| Вес || 4 || 2 || 3
 
|}
 
 
 
Затем объединим в один узел узлы ''мп'' и ''c'':
 
 
 
{| class="wikitable"
 
! Узел || и || мпс
 
|-
 
| Вес || 4 || 5
 
|}
 
 
 
И, наконец, объединяем два узла ''и'' и ''мпс''. Итак, мы получили дерево Хаффмана и соответствующую ему таблицу кодов:
 
 
 
{| class="wikitable"
 
! Символ || и || м || п || с
 
|-
 
| Код || 0 || 100 || 101 || 11
 
|}
 

Версия 23:46, 11 декабря 2013

Алгоритм

Для построения [math]n[/math]-ичного кода Хаффмана надо использовать операцию сжатия алфавита, при которой каждый раз сливаются не две, а [math]n[/math] букв исходного алфавита, имеющих наименьшие вероятности.Сжатие алфавита, при котором [math]n[/math] букв заменяются на одну, приводит к уменьшению числа букв на [math]n-1[/math]; так как для построения [math]n[/math]-ичного кода, очевидно, требуется, чтобы последовательность сжатий в конце концов привела нас к алфавиту из [math]n[/math] букв (сопоставляемых [math]n[/math] сигналам кода), то необходимо, чтобы число [math]m[/math] букв первоначального алфавита было представимо в виде [math]n = m + k(m - 1[/math] ),[math]k \in \mathbb{Z}[/math]. Этого, однако, всегда можно добиться, добавив, если нужно, к первоначальному алфавиту еще несколько фиктивных букв, вероятности которых считаются равными нулю. После этого построение [math]n[/math]-ичного кода Хаффмана и доказательство его оптимальности (среди всех [math]n[/math]-ичных кодов) проводятся уже точно так же, как и случае двоичного кода.

Пример

Корректность алгоритма Хаффмана для [math]n[/math]-ичной системы счисления

Доказательство аналогично тому,что представлено в теме Алгоритм Хаффмана.Только вместо двух символом с минимальными частотами надо брать [math]n[/math] символов с минимальными частотами(по алгоритму частота символа также может равняться 0)