Не могли бы вы объяснить, как конвертировать из lz77 в Хаффмана?
2 ответа
Легко:
На первом шаге вы получите три цифры:
- предыдущий индекс
- количество повторяющихся символов
- следующий символ (будь то ASCII или Unicode)
Алгоритм требует, чтобы вы указали скользящее окно впереди. Это означает, что вы знаете, насколько большие (1) и (2) могут быть максимально. Другими словами, вы знаете, сколько битов (1) и (2) займет. Поскольку (3) по сути также является символом из алфавита фиксированной длины, вы также знаете битовую длину (3)
Это означает, что безопасно просто объединить их. Таким образом, вывод первого алгоритма можно рассматривать как вывод битовой последовательности, где каждый элемент в последовательности имеет фиксированную длину.
Это идеально подходит для применения Хаффмана.
Конечно, специфика не упоминается, и вы можете выбрать один из множества вариантов.
- нормализованный стол Хаффмана
- 1 на левой ветви против 0 на левой ветви
- приоритеты при объединении предметов с одинаковым количеством
- так далее
Поэтому я не могу с готовностью объяснить точные выходные значения, которые вы показываете. Но я надеюсь, что смогу хотя бы объяснить, как добраться от А до Б.
Ты не можешь Показанная кодировка, ну, образно. Не буквально. Символы A, B и C все закодированы в один бит 0. Очевидно, что это не очень поможет в конце декодирования.