Рассчитайте энтропию Шеннона и минимальную среднюю длину кодового слова для распределения символов с вероятностями [0.5, 0.25, 0.125, 0.125]; обсудите связь между энтропией и сжатием данных, объясните, при каких условиях практические кодировщики (например, Huffman, arithmetic coding) приближаются к теоретическому пределу
Расчёт энтропии: H=−∑ipilog2pi=−(0.5log20.5+0.25log20.25+0.125log20.125+0.125log20.125)
H=-\sum_i p_i\log_2 p_i = -\big(0.5\log_2 0.5 + 0.25\log_2 0.25 + 0.125\log_2 0.125 + 0.125\log_2 0.125\big) H=−i∑pilog2pi=−(0.5log20.5+0.25log20.25+0.125log20.125+0.125log20.125)=−(0.5(−1)+0.25(−2)+0.125(−3)+0.125(−3))=0.5+0.5+0.375+0.375=1.75 бит/символ.
= -\big(0.5(-1)+0.25(-2)+0.125(-3)+0.125(-3)\big)=0.5+0.5+0.375+0.375=1.75\ \text{бит/символ}. =−(0.5(−1)+0.25(−2)+0.125(−3)+0.125(−3))=0.5+0.5+0.375+0.375=1.75бит/символ. Минимальная средняя длина кодового слова: - Для префиксных кодов верно неравенство H≤L<H+1 \;H \le L < H+1\;H≤L<H+1. - Для данного распределения оптимальный Хаффманов код даёт длины [1,2,3,3][1,2,3,3][1,2,3,3] (например: символы с вероятностями 0.5,0.25,0.125,0.1250.5,0.25,0.125,0.1250.5,0.25,0.125,0.125 кодируются как 0,10,110,1110,10,110,1110,10,110,111), поэтому средняя длина L=0.5⋅1+0.25⋅2+0.125⋅3+0.125⋅3=1.75 бит/символ.
L=0.5\cdot1+0.25\cdot2+0.125\cdot3+0.125\cdot3=1.75\ \text{бит/символ}. L=0.5⋅1+0.25⋅2+0.125⋅3+0.125⋅3=1.75бит/символ.
Таким образом здесь L=HL=HL=H — Хаффман достигает теоретического минимума. Связь между энтропией и сжатием данных (кратко): - Энтропия HHH — теоретический нижний предел средней длины кода (с учётом бит/символ) для источника без памяти. - Практическая эффективность сжатия определяется тем, насколько средняя длина кода близка к HHH; избыточность = L−HL-HL−H. Когда практические кодировщики приближаются к пределу: - Хаффман: оптимален среди префиксных (целочисленные длины). Он достигает HHH ровно, если все вероятности равны степеням 2−l2^{-l}2−l (как в вашем примере). В общем даёт гарантированно H≤L<H+1H \le L < H+1H≤L<H+1. - Арифметическое (или стохастическое) кодирование: может приближать HHH сколь угодно близко при кодировании длинных блоков символов или при высокой точности представления дробных длин; для блочного кода среднего размера избыточность на символ убывает с ростом блока и стремится к нулю (Ln/n→HL_n/n \to HLn/n→H при n→∞n\to\inftyn→∞). - Практические ограничения: конечная длина блоков, вычислительная точность, модель (ошибки в оценке вероятностей), требования к задержке и памяти; они определяют, насколько близко реально можно подойти к HHH. Коротко: здесь H=1.75H=1.75H=1.75 б/симв, минимальная средняя длина префиксного кода также 1.751.751.75 б/симв; в общем арифметическое кодирование и блочное кодирование позволяют добиваться уровня, близкого к HHH, при росте размера блока или точности.
H=−∑ipilog2pi=−(0.5log20.5+0.25log20.25+0.125log20.125+0.125log20.125) H=-\sum_i p_i\log_2 p_i = -\big(0.5\log_2 0.5 + 0.25\log_2 0.25 + 0.125\log_2 0.125 + 0.125\log_2 0.125\big)
H=−i∑ pi log2 pi =−(0.5log2 0.5+0.25log2 0.25+0.125log2 0.125+0.125log2 0.125) =−(0.5(−1)+0.25(−2)+0.125(−3)+0.125(−3))=0.5+0.5+0.375+0.375=1.75 бит/символ. = -\big(0.5(-1)+0.25(-2)+0.125(-3)+0.125(-3)\big)=0.5+0.5+0.375+0.375=1.75\ \text{бит/символ}.
=−(0.5(−1)+0.25(−2)+0.125(−3)+0.125(−3))=0.5+0.5+0.375+0.375=1.75 бит/символ.
Минимальная средняя длина кодового слова:
- Для префиксных кодов верно неравенство H≤L<H+1 \;H \le L < H+1\;H≤L<H+1.
- Для данного распределения оптимальный Хаффманов код даёт длины [1,2,3,3][1,2,3,3][1,2,3,3] (например: символы с вероятностями 0.5,0.25,0.125,0.1250.5,0.25,0.125,0.1250.5,0.25,0.125,0.125 кодируются как 0,10,110,1110,10,110,1110,10,110,111), поэтому средняя длина
L=0.5⋅1+0.25⋅2+0.125⋅3+0.125⋅3=1.75 бит/символ. L=0.5\cdot1+0.25\cdot2+0.125\cdot3+0.125\cdot3=1.75\ \text{бит/символ}.
L=0.5⋅1+0.25⋅2+0.125⋅3+0.125⋅3=1.75 бит/символ. Таким образом здесь L=HL=HL=H — Хаффман достигает теоретического минимума.
Связь между энтропией и сжатием данных (кратко):
- Энтропия HHH — теоретический нижний предел средней длины кода (с учётом бит/символ) для источника без памяти.
- Практическая эффективность сжатия определяется тем, насколько средняя длина кода близка к HHH; избыточность = L−HL-HL−H.
Когда практические кодировщики приближаются к пределу:
- Хаффман: оптимален среди префиксных (целочисленные длины). Он достигает HHH ровно, если все вероятности равны степеням 2−l2^{-l}2−l (как в вашем примере). В общем даёт гарантированно H≤L<H+1H \le L < H+1H≤L<H+1.
- Арифметическое (или стохастическое) кодирование: может приближать HHH сколь угодно близко при кодировании длинных блоков символов или при высокой точности представления дробных длин; для блочного кода среднего размера избыточность на символ убывает с ростом блока и стремится к нулю (Ln/n→HL_n/n \to HLn /n→H при n→∞n\to\inftyn→∞).
- Практические ограничения: конечная длина блоков, вычислительная точность, модель (ошибки в оценке вероятностей), требования к задержке и памяти; они определяют, насколько близко реально можно подойти к HHH.
Коротко: здесь H=1.75H=1.75H=1.75 б/симв, минимальная средняя длина префиксного кода также 1.751.751.75 б/симв; в общем арифметическое кодирование и блочное кодирование позволяют добиваться уровня, близкого к HHH, при росте размера блока или точности.