Объясните понятие энтропии Шеннона на конкретном примере источника символов с неравномерным распределением вероятностей (например, p(a)=0.5, p(b)=0.25, p(c)=0.125, p(d)=0.125) и покажите, как это влияет на оптимальное кодирование
Коротко — что такое энтропия и как она влияет на кодирование, на конкретном примере. Определение: энтропия источника XXX с распределением p(x)p(x)p(x) — среднее количество информации в символе H(X)=−∑xp(x)log2p(x).
H(X) = -\sum_x p(x)\log_2 p(x). H(X)=−x∑p(x)log2p(x). Дано: p(a)=0.5, p(b)=0.25, p(c)=0.125, p(d)=0.125p(a)=0.5,\; p(b)=0.25,\; p(c)=0.125,\; p(d)=0.125p(a)=0.5,p(b)=0.25,p(c)=0.125,p(d)=0.125. Вычислим вклад каждого символа: −p(a)log2p(a)=−0.5log20.5=0.5,
- p(a)\log_2 p(a) = -0.5\log_2 0.5 = 0.5, −p(a)log2p(a)=−0.5log20.5=0.5,−p(b)log2p(b)=−0.25log20.25=0.5,
- p(b)\log_2 p(b) = -0.25\log_2 0.25 = 0.5, −p(b)log2p(b)=−0.25log20.25=0.5,−p(c)log2p(c)=−0.125log20.125=0.375,
- p(c)\log_2 p(c) = -0.125\log_2 0.125 = 0.375, −p(c)log2p(c)=−0.125log20.125=0.375,−p(d)log2p(d)=0.125⋅3=0.375.
- p(d)\log_2 p(d) = 0.125\cdot 3 = 0.375. −p(d)log2p(d)=0.125⋅3=0.375.
Сумма даёт энтропию H(X)=0.5+0.5+0.375+0.375=1.75 bits.
H(X)=0.5+0.5+0.375+0.375=1.75\ \text{bits}. H(X)=0.5+0.5+0.375+0.375=1.75bits. Влияние на кодирование: теоретически средняя длина любого префиксного (безамбигуозного) кода Lˉ\bar{L}Lˉ удовлетворяет H(X)≤Lˉ<H(X)+1.
H(X) \le \bar{L} < H(X) + 1. H(X)≤Lˉ<H(X)+1.
Для частот, которые являются степенями 1/21/21/2 (диадические), можно построить префиксный код с целочисленными длинами, дающий Lˉ=H(X)\bar{L}=H(X)Lˉ=H(X). Построим оптимальный (Хаффмана) код для данного распределения: сначала объединяем ccc и ddd (оба по 0.1250.1250.125), затем объединяем их с bbb (0.250.250.25), затем с aaa (0.50.50.5). Один возможный префиксный код: a↦0,b↦10,c↦110,d↦111.
a \mapsto 0,\quad b \mapsto 10,\quad c \mapsto 110,\quad d \mapsto 111. a↦0,b↦10,c↦110,d↦111.
Длины кодов: l(a)=1, l(b)=2, l(c)=3, l(d)=3l(a)=1,\; l(b)=2,\; l(c)=3,\; l(d)=3l(a)=1,l(b)=2,l(c)=3,l(d)=3. Средняя длина Lˉ=0.5⋅1+0.25⋅2+0.125⋅3+0.125⋅3=1.75 bits.
\bar{L} = 0.5\cdot1 + 0.25\cdot2 + 0.125\cdot3 + 0.125\cdot3 = 1.75\ \text{bits}. Lˉ=0.5⋅1+0.25⋅2+0.125⋅3+0.125⋅3=1.75bits.
Здесь Lˉ=H(X)\bar{L}=H(X)Lˉ=H(X), то есть код оптимален и без избыточности, потому что распределение диадическое. Сравнение с равномерным 4-символьным источником: при равномерном распределении Huniform=−4⋅14log214=2H_{\text{uniform}} = -4\cdot\frac14\log_2\frac14 = 2Huniform=−4⋅41log241=2 bits, т.е. неравномерность снизила среднюю длину на 2−1.75=0.252 - 1.75 = 0.252−1.75=0.25 bits в среднем на символ. Вывод: энтропия даёт нижнюю границу средней длины кода; для диадических вероятностей можно добиться равенства Lˉ=H \bar{L}=H Lˉ=H. В общем случае оптимизация кодов (например, Хаффмана) стремится приблизить Lˉ\bar{L}Lˉ к H(X)H(X)H(X).
Определение: энтропия источника XXX с распределением p(x)p(x)p(x) — среднее количество информации в символе
H(X)=−∑xp(x)log2p(x). H(X) = -\sum_x p(x)\log_2 p(x).
H(X)=−x∑ p(x)log2 p(x).
Дано: p(a)=0.5, p(b)=0.25, p(c)=0.125, p(d)=0.125p(a)=0.5,\; p(b)=0.25,\; p(c)=0.125,\; p(d)=0.125p(a)=0.5,p(b)=0.25,p(c)=0.125,p(d)=0.125.
Вычислим вклад каждого символа:
−p(a)log2p(a)=−0.5log20.5=0.5, - p(a)\log_2 p(a) = -0.5\log_2 0.5 = 0.5,
−p(a)log2 p(a)=−0.5log2 0.5=0.5, −p(b)log2p(b)=−0.25log20.25=0.5, - p(b)\log_2 p(b) = -0.25\log_2 0.25 = 0.5,
−p(b)log2 p(b)=−0.25log2 0.25=0.5, −p(c)log2p(c)=−0.125log20.125=0.375, - p(c)\log_2 p(c) = -0.125\log_2 0.125 = 0.375,
−p(c)log2 p(c)=−0.125log2 0.125=0.375, −p(d)log2p(d)=0.125⋅3=0.375. - p(d)\log_2 p(d) = 0.125\cdot 3 = 0.375.
−p(d)log2 p(d)=0.125⋅3=0.375. Сумма даёт энтропию
H(X)=0.5+0.5+0.375+0.375=1.75 bits. H(X)=0.5+0.5+0.375+0.375=1.75\ \text{bits}.
H(X)=0.5+0.5+0.375+0.375=1.75 bits.
Влияние на кодирование: теоретически средняя длина любого префиксного (безамбигуозного) кода Lˉ\bar{L}Lˉ удовлетворяет
H(X)≤Lˉ<H(X)+1. H(X) \le \bar{L} < H(X) + 1.
H(X)≤Lˉ<H(X)+1. Для частот, которые являются степенями 1/21/21/2 (диадические), можно построить префиксный код с целочисленными длинами, дающий Lˉ=H(X)\bar{L}=H(X)Lˉ=H(X).
Построим оптимальный (Хаффмана) код для данного распределения: сначала объединяем ccc и ddd (оба по 0.1250.1250.125), затем объединяем их с bbb (0.250.250.25), затем с aaa (0.50.50.5). Один возможный префиксный код:
a↦0,b↦10,c↦110,d↦111. a \mapsto 0,\quad b \mapsto 10,\quad c \mapsto 110,\quad d \mapsto 111.
a↦0,b↦10,c↦110,d↦111. Длины кодов: l(a)=1, l(b)=2, l(c)=3, l(d)=3l(a)=1,\; l(b)=2,\; l(c)=3,\; l(d)=3l(a)=1,l(b)=2,l(c)=3,l(d)=3. Средняя длина
Lˉ=0.5⋅1+0.25⋅2+0.125⋅3+0.125⋅3=1.75 bits. \bar{L} = 0.5\cdot1 + 0.25\cdot2 + 0.125\cdot3 + 0.125\cdot3 = 1.75\ \text{bits}.
Lˉ=0.5⋅1+0.25⋅2+0.125⋅3+0.125⋅3=1.75 bits. Здесь Lˉ=H(X)\bar{L}=H(X)Lˉ=H(X), то есть код оптимален и без избыточности, потому что распределение диадическое.
Сравнение с равномерным 4-символьным источником: при равномерном распределении Huniform=−4⋅14log214=2H_{\text{uniform}} = -4\cdot\frac14\log_2\frac14 = 2Huniform =−4⋅41 log2 41 =2 bits, т.е. неравномерность снизила среднюю длину на 2−1.75=0.252 - 1.75 = 0.252−1.75=0.25 bits в среднем на символ.
Вывод: энтропия даёт нижнюю границу средней длины кода; для диадических вероятностей можно добиться равенства Lˉ=H \bar{L}=H Lˉ=H. В общем случае оптимизация кодов (например, Хаффмана) стремится приблизить Lˉ\bar{L}Lˉ к H(X)H(X)H(X).