Коды Хаффмана:  
Пусть имеется массив частот встречаемости символов A, бита символа B и образованного символа C. Тогда для построения оптимального кода для каждого символа нужно сделать следующее: Выберем 2 символа с наименьшими значениями A(скажем это были символы s1 и s2), и образуем новый символ (скажем s3): A[s3]=A[s1]+A[s2]; после чего делаем пометки B[s1]=0,B[s2]=1,C[s1]=s3,C[s2]=s3. Символы s1 и s2 исключаем из дальнейшего рассмотрения. Когда останется только один символ, построение кодов завершено.
Кодирование:
Пусть нужно закодировать символ s. Пока s неравен последнему символу, выводим B[s] и присваеваем s значение C[s]
Декодирование обратно кодированию.

 

Hosted by uCoz