577
правок
Изменения
→Достоинства кодов без памяти
Примерами кодов без памяти являются [[Алгоритм Хаффмана|кодирование Хаффмана]] и кодирование Шеннона - Фано.
=== Достоинства кодов без памяти ===
Эти коды являются однозначно декодируемыми, в них никакое кодовое слово не является префиксом какого-то другого кодового слова. Это очень упрощает декодирование, поэтому часто именно им отдается предпочтение. Так же таким способом кодирования удается получить более короткие коды, чем с помощью кода фиксированной длины. И что немаловажно, декодировать сообщение можно по мере поступления, не получая его целиком.
=== Недостатки кодов без памяти ===
Коды Хаффмана и Шеннона - Фано являются оптимальными, но все же имеют ряд недостатков. Во-первых, при кодировании методами Хаффмана или Шеннона используются вероятности появления символов алфавита в тексте. То есть для построения кода нам нужно обладать этой информацией. Для того, чтобы декодер мог расшифровать файл таблицу частот, которой пользовался кодер, следует записать в сжатый файл. Следовательно, длина сжатого сообщения увеличивается на длину таблицы частот, которая должна посылаться впереди данных, что может не оправдать сжатия. Во-вторых, необходимость наличия полной частотной статистики перед началом собственно кодирования требует двух проходов по сообщению: одного для построения модели сообщения (таблицы частот и Н-дерева), другого для собственно кодирования.