

72 Равномерный и неравномерный код. Префиксное кодирование.
Более короткие коды не совпадают с более длинными. Например, есть код {«0»,«10»,«11»}.
Допустим, а=0; b=10; c=11.
Тогда сообщение abac закодируем:”010011”, а можно ли преобразовать обратно? Первый символ – а однозначно. Следующий 1 полностью не определяет символ, «10» - b, следующий – a, после с.
Например, есть текст a,b,c,d,e,f. В файле 100 000 символов, причем а – 45 000, b – 13 000, c – 12 000, d
– 16 000, e – 9 000, f – 5 000.
Посмотрим, как влияет кодирование на размер файла: 1) Равномерный код.
Так как 6 символов кодируем в 3 битовом коде:
a=000, b=0001, c=010, d=011, e=100, f=101. Соответственно файл будет 300 000 бит.
2) Неравномерный код.
Те числа, что встречаются часто кодируем короткими битами, редкие – длинными. A=0, b=101, c=100, d=111, e=1101, f=1100.
Для представления используем кодовые деревья.
Известными алгоритмами построения кодовых деревьев являются алгоритм Хофмана, Фано-Шенона.