Изменения

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

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

654 байта убрано, 12:35, 15 декабря 2013
Нет описания правки
== Корректность алгоритма Хаффмана для <tex>n</tex>-ичной системы счисления ==
Доказательство аналогично тому,что представлено в теме [[Алгоритм Хаффмана]].Только вместо двух символом с минимальными частотами надо брать <tex>n</tex> символов с минимальными частотами(по алгоритму вес символа также может равняться 0)
==Задача о подсчете числа битовбит==
Имеются частоты символов,встречающихся в исходном тексте.Необходимо подсчитать суммарное число бит,необходимое для кодирования этого текста.
Псевдокод алгоритма:
'''int''' DamerauLevenshteinDistance('''char''' Sa[1..Mn], '''char''' T[1..N]) '''int''' d[0..M, 0..N] '''int''' i, j, cost ''// База динамики'' '''for''' i '''from''' 0 '''to''' Mисходный массив частот всех n символов,встречающихся в тексте" d[i, 0] sum= i '''for''' j '''from''' 1 '''to''' N d[0, j] = j ; '''for''' i '''from''' 1 '''to''' Mdo '''for''' j '''from''' 1 '''to''' N sort(a) ''// Стоимость заменысортируем массив по возрастанию'' '''if''' S a[i2] == Ta[1]+a[j2] '''then''' replaceCost = 0 '''else''' replaceCost sum = 1 d+ a[i, j2] = minimum( d[i n-1, j ] + deleteCost, ''// удаление'' d[i , j-1] + insertCost, ''// вставка'' d delete(a[i-1, j-1] + replaceCost ) ''// заменаубираем из массива ненужный элемент и больше его не рассматриваем'' ) '''if'''(i > 1 '''and''' j > 1 '''and''' S[i] while n!== T[j-1] '''and''' S[i-1] == T[j]) '''then''' d[i, j] = minimum( d[i, j], d[i-2, j-2] + transposeCost ''// транспозицияпока не останется одна частота в массиве'' ) '''return''' d[M, N]sum
Анонимный участник

Навигация