В алгоритме Хаффмана мы формируем дерево и заменяем каждый символ значением дерева 1 и 0, почему бы нам просто не использовать двоичные цифры, такие как a=0,b=1,c=10,d=01,e=11
и так далее чем заменить их символами и при распаковке применить обратное и заменить двоичные цифры на алфавиты.Почему мы не используем простые двоичные значения для сжатия данных
Как это:
character Huffman-code binary-code
a 00 0
b 01 1
c 101 01
и так далее ...
Пункт Хаффмана заключается в том, что результат однозначен. Используя ваш пример, если код, который вы хотите распаковать, - «00101», то он однозначно «ac» в Хаффмане. Используя ваш алгоритм, это могут быть «aabab», «acc», «acab» ... – JJJ
Код Хаффмана для «abcd» - «000110111110», есть вероятность двусмысленности, не так ли? –
Нет, и, кстати, это не код Хаффмана, поскольку он не является оптимальным (единственный код, начинающийся с 1, равен 101, что может быть просто 1). Это по-прежнему префиксный код, поэтому он однозначно декодируется. – harold