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