Есть ли соглашение для генерации кодировки Хаффмана для определенного алфавита? Кажется, что результирующая кодировка зависит как от того, присваиваете ли вы «0» левому ребенку или правому ребенку, так и по тому, как вы определяете, какой символ пойдет в левое дерево.Конвенция для кодирования Хаффмана
Wikipedia говорит, что:
В общей конвенции, бит «0» означает следующее левого ребенка и бит «1» означает следующее правом ребенка.
Так что это ответ на первую половину дисперсии. Тем не менее, я не мог найти никакого соглашения во второй половине. Я бы предположил, что что-то вроде того, что узел с меньшей вероятностью идет слева, но несколько примеров деревьев Хаффмана онлайн не делают этого.
Например:
Так есть соглашение о присвоении узлов слева и справа, или это зависит от реализации?
Прошу прощения, если это дубликат, но я не смог найти ответ.
Я думаю, что единственное «соглашение» - это алгоритмы, которые мы выбрали как «стандартные», т. Е. Gzip. –
В этом случае это имеет значение? Будет ли когда-нибудь случай, когда выбор одного даст менее эффективный код, чем результат выбора другого? (возможно, это должен быть новый вопрос) – andars