В общем, около 50% входящего потока символов должно состоять из заданного символа, чтобы Хаффман закодировал его как один бит. Причина этого в том, что из-за того, как работает кодирование Хаффмана (кодирование одного символа не может быть префиксом другого), кодируя символ одним битом, вы требуете, чтобы первый бит для каждого другого символа em> быть противоположным значением (т. е. если один символ закодирован как 0
, все остальные должны начинаться с 1
плюс еще как минимум один бит). Поскольку вы устраняете половину возможного пространства кодирования для любой заданной длины бит, вам нужно найти способ кодировать по крайней мере половину вводимых символов, чтобы достичь безубыточности.
Обратите внимание, что есть особый случай, когда пространство символов состоит только из 3 символов. В таком случае любой символ с наибольшей частотой будет кодироваться 1 битом (поскольку два других будут вариациями 2-го бита любого значения первого бита, которое не выбрано) - если 2 или более имеют одинаково большую вероятность, любой из них может быть закодирован. Таким образом, в случае с тремя символами возможно, что символ, скажем, с вероятностью 34%, теоретически может быть закодирован как один бит (скажем, 0
), в то время как два других могут иметь вероятность 33% или меньше и быть закодированы как 10
и 11
.
Таким образом, если вы рассматриваете все возможности, то технически все, что составляет 1/3 или выше, потенциально может быть закодировано как один бит (в случае с тремя символами).
person
Amber
schedule
21.06.2010