Код Хаффмана для распределения вероятности - это код префикса с минимальной средневзвешенной длиной кодового слова , где - длина го кодового слова. Хорошо известна теорема о том, что средняя длина каждого символа кода Хаффмана находится между и , где - энтропия Шеннона. распределения вероятностей.∑ p i ℓ i ℓ я
Плохой канонический пример, где средняя длина превышает энтропию Шеннона почти на 1, - это распределение вероятностей, такое как , где энтропия равна почти 0, а средняя длина кодового слова равна 1. Это дает разрыв между энтропией и длиной кодового слова почти .
Но что происходит, когда существует предел наибольшей вероятности в распределении вероятностей? Предположим, например, что все вероятности меньше, чем . Самый большой пробел, который я мог найти в этом случае, относится к распределению вероятностей, например , где энтропия чуть больше 1, а средняя длина кодового слова чуть меньше 1,5, что дает разрыв приближается к . Это лучшее, что вы можете сделать? Можете ли вы дать верхнюю границу зазора, которая строго меньше 1 для этого случая?
Теперь рассмотрим случай, когда все вероятности очень малы. Предположим , вы выбираете распределение вероятностей букв, каждая из которых имеет вероятность . В этом случае самый большой разрыв возникает, если вы выберете . Здесь вы получите разрыв около
Этот вопрос был вдохновлен этим вопросом TCS Stackexchange .
Судя по ограничению , я думаю, что вы намеревались задать другой вопрос ... или вы просто не указали, как вы берете "среднее". Поэтому я отвечу на оба. Ответ нет на оба вопроса.H(p)≤…≤H(p)+1
Во-первых, если вы определяете среднюю длину кода, используя равномерное распределение по кодовым словам, и берете в качестве верхней границы вероятности любого одного элемента, то рассмотрите код длины где кодовые слова имеют длину а остальные имеют длину . Для распределения, идеально закодированного этим кодом, средняя длина приближается к , если только у вас нет нижней границы для вероятности одного элемента, тогда как энтропия равна . q + k 2 q - 1 q 2 q + k - 1 q + k q + k q + k2−q q+k 2q−1 q 2q+k−1 q+k q+k q+k2
Теперь давайте рассмотрим «среднюю длину», означающую среднюю длину кодового слова, когда код Хаффмана используется для кодирования . Здесь граница жесткая, и пример распределения, достигающего ее в пределе, - это случай, в котором каждый элемент встречается с вероятностью для(Последнему элементу назначается любая оставшаяся вероятность, но она не будет иметь никакого значения асимптотически).2 д ± 1 / 2 кв ∈ Z .p 2q±1/2 q∈Z.
Например, рассмотрим Тогдаq=7.
A=52,B=76522 - 6,5 762 - 7,5A+B=128,A2–√+B/2–√≤128,maxA∈ZA дает . Наше распределение имеет элемента с вероятностью , с вероятностью , и один элемент получает остатки.A=52,B=76 52 2−6.5 76 2−7.5
Тогда , в то время как код Хаффмана достигает потерь энтропии. (Между прочим, потеря энтропии имеет имя, независимо от того, используете ли вы кодирование Хаффмана или произвольное кодирование для : расхождение Кульбака-Либлера . Использование этого, как я обнаружил несколько дней назад, приводит к более жестким двусторонним границам Чернова, как вы можете видеть в Википедии для границ Черноффа.)( 52 ⋅ 0,5 - 76 ⋅ 0,5 ) / 128 ≈ 0,99436 Q D ( P | | Q ) = Σ р я войти р IH(X)=(52⋅6.5+76⋅7.5)/128=7.09375 (52⋅0.5−76⋅0.5)/128≈0.99436 Q D(P∥Q)=∑pilogpiqi+∑(1−pi)log1−pi1−qi
источник