Дано сообщение из канала связи с вероятностями символов p(a)=0.5, p(b)=0.25, p(c)=0.25: постройте оптимальный префиксный код (например, по алгоритму Хаффмана), вычислите энтропию и среднюю длину кода, обсудите пределы сжатия и как меняются выводы при добавлении коррелированных символов
Оптимальный префиксный код (Хаффман): - Один из оптимальных кодов: a↦0, b↦10, c↦11a \mapsto 0,\; b \mapsto 10,\; c \mapsto 11a↦0,b↦10,c↦11. Энтропия источника: H=−∑x∈{a,b,c}p(x)log2p(x)=−12log212−14log214−14log214=12+12+12=1.5 бит/символ.
H = -\sum_{x\in\{a,b,c\}} p(x)\log_2 p(x) = -\tfrac12\log_2\tfrac12 - \tfrac14\log_2\tfrac14 - \tfrac14\log_2\tfrac14 = \tfrac12 + \tfrac12 + \tfrac12 = 1.5\ \text{бит/символ}. H=−x∈{a,b,c}∑p(x)log2p(x)=−21log221−41log241−41log241=21+21+21=1.5бит/символ. Средняя длина кода: L=∑xp(x)ℓ(x)=12⋅1+14⋅2+14⋅2=1.5 бит/символ.
L = \sum_x p(x) \ell(x) = \tfrac12\cdot1 + \tfrac14\cdot2 + \tfrac14\cdot2 = 1.5\ \text{бит/символ}. L=x∑p(x)ℓ(x)=21⋅1+41⋅2+41⋅2=1.5бит/символ.
Здесь L=HL=HL=H, значит полученный префиксный код достигает энтропии (нулевая избыточность). Пределы сжатия и общие неравенства: H≤L<H+1
H \le L < H+1 H≤L<H+1
(для кодов на отдельных символах). Для блочных кодов длины nnn выполняется H(Xn)n≤Ln<H(Xn)n+1n,
\frac{H(X^n)}{n} \le L_n < \frac{H(X^n)}{n} + \frac{1}{n}, nH(Xn)≤Ln<nH(Xn)+n1,
и при n→∞n\to\inftyn→∞ можно приближаться к энтропийной скорости источника. Как меняются выводы при добавлении коррелированных символов: - При наличии корреляций полезна не односимвольная статистика, а условная/блочная: энтропийная скорость равна limn→∞H(Xn)/n\lim_{n\to\infty} H(X^n)/nlimn→∞H(Xn)/n и может быть меньше энтропии одиночного распределения. - Хаффман, построенный на одном символе, не использует корреляцию; чтобы её учесть, кодируют блоки (блочный Хаффман) или применяют адаптивные/арифметические методы с моделью контекста. При блочном кодировании неэффективность на символ падает не более чем на 1/n1/n1/n. - Пример: если второй символ однозначно определяется первым, условная энтропия H(Y∣X)=0H(Y|X)=0H(Y∣X)=0 и энтропийная скорость уменьшится вдвое по сравнению с энтропией по одиночному распределению; это даёт возможность дополнительного сжатия ниже HHH одиночного распределения, но не ниже энтропийной скорости источника. Краткий вывод: для заданных вероятностей оптимальный префиксный код приведён выше, он достигает энтропии 1.51.51.5 бит/символ; при наличии корреляций следует учитывать условную/блочную энтропию и применять блочные или статистические методы кодирования, чтобы приблизиться к реальной энтропийной скорости.
- Один из оптимальных кодов: a↦0, b↦10, c↦11a \mapsto 0,\; b \mapsto 10,\; c \mapsto 11a↦0,b↦10,c↦11.
Энтропия источника:
H=−∑x∈{a,b,c}p(x)log2p(x)=−12log212−14log214−14log214=12+12+12=1.5 бит/символ. H = -\sum_{x\in\{a,b,c\}} p(x)\log_2 p(x)
= -\tfrac12\log_2\tfrac12 - \tfrac14\log_2\tfrac14 - \tfrac14\log_2\tfrac14
= \tfrac12 + \tfrac12 + \tfrac12 = 1.5\ \text{бит/символ}.
H=−x∈{a,b,c}∑ p(x)log2 p(x)=−21 log2 21 −41 log2 41 −41 log2 41 =21 +21 +21 =1.5 бит/символ.
Средняя длина кода:
L=∑xp(x)ℓ(x)=12⋅1+14⋅2+14⋅2=1.5 бит/символ. L = \sum_x p(x) \ell(x) = \tfrac12\cdot1 + \tfrac14\cdot2 + \tfrac14\cdot2 = 1.5\ \text{бит/символ}.
L=x∑ p(x)ℓ(x)=21 ⋅1+41 ⋅2+41 ⋅2=1.5 бит/символ. Здесь L=HL=HL=H, значит полученный префиксный код достигает энтропии (нулевая избыточность).
Пределы сжатия и общие неравенства:
H≤L<H+1 H \le L < H+1
H≤L<H+1 (для кодов на отдельных символах). Для блочных кодов длины nnn выполняется
H(Xn)n≤Ln<H(Xn)n+1n, \frac{H(X^n)}{n} \le L_n < \frac{H(X^n)}{n} + \frac{1}{n},
nH(Xn) ≤Ln <nH(Xn) +n1 , и при n→∞n\to\inftyn→∞ можно приближаться к энтропийной скорости источника.
Как меняются выводы при добавлении коррелированных символов:
- При наличии корреляций полезна не односимвольная статистика, а условная/блочная: энтропийная скорость равна limn→∞H(Xn)/n\lim_{n\to\infty} H(X^n)/nlimn→∞ H(Xn)/n и может быть меньше энтропии одиночного распределения.
- Хаффман, построенный на одном символе, не использует корреляцию; чтобы её учесть, кодируют блоки (блочный Хаффман) или применяют адаптивные/арифметические методы с моделью контекста. При блочном кодировании неэффективность на символ падает не более чем на 1/n1/n1/n.
- Пример: если второй символ однозначно определяется первым, условная энтропия H(Y∣X)=0H(Y|X)=0H(Y∣X)=0 и энтропийная скорость уменьшится вдвое по сравнению с энтропией по одиночному распределению; это даёт возможность дополнительного сжатия ниже HHH одиночного распределения, но не ниже энтропийной скорости источника.
Краткий вывод: для заданных вероятностей оптимальный префиксный код приведён выше, он достигает энтропии 1.51.51.5 бит/символ; при наличии корреляций следует учитывать условную/блочную энтропию и применять блочные или статистические методы кодирования, чтобы приблизиться к реальной энтропийной скорости.