Допустим, у нас есть следующая каноническая кодовая таблица Хаффмана.
Symbol Code-length Codeword
A 2 00
B 2 01
C 2 10
D 2 11
Теперь мы читаем символы из входного файла и кодируем его, просто глядя на приведенную выше таблицу. Однако многие ресурсы говорят, что в случае канонического Хаффмана мы не должны отправлять кодовые слова. Вместо этого достаточно длины кода для каждого символа.
Если текстовый файл содержит ACCDB, должен ли я передавать 00 01 10 11 или 10 10 10 10 (двоичный эквивалент соответствующей длины кода) как закодированный битовый поток? Пожалуйста, исправьте меня, если я ошибаюсь, и я ценю любое объяснение.
Более того, если это так для канонического Хаффмана, как мы можем декодировать этот битовый поток, чтобы вернуть исходные символы ACCDB (без использования дерева Хаффмана в декодере)?