Дана дискретная вероятностная модель источника с алфавитом {A,B,C} и вероятностями {0.6,0.3,0.1}. Выведите энтропию источника, предложите оптимальный код по Шеннону и Хаффману, сравните среднюю длину кодов и оцените, насколько код достигает теоретического минимума
Энтропия: H(X)=−∑ipilog2pi=−0.6log20.6−0.3log20.3−0.1log20.1≈1.29546H(X)=-\sum_{i} p_i\log_2 p_i = -0.6\log_2 0.6 -0.3\log_2 0.3 -0.1\log_2 0.1 \approx 1.29546H(X)=−∑ipilog2pi=−0.6log20.6−0.3log20.3−0.1log20.1≈1.29546 бит/символ. Оптимальный код по Шеннону (Shannon code): Длины li=⌈−log2pi⌉l_i=\lceil -\log_2 p_i\rceilli=⌈−log2pi⌉: для A(0.6)A(0.6)A(0.6) — lA=1l_A=1lA=1, для B(0.3)B(0.3)B(0.3) — lB=2l_B=2lB=2, для C(0.1)C(0.1)C(0.1) — lC=4l_C=4lC=4. Возможный код (через дробные кумулятивные суммы): A:0, B:10, C:1110A:0,\; B:10,\; C:1110A:0,B:10,C:1110. Средняя длина: LShannon=0.6⋅1+0.3⋅2+0.1⋅4=1.6L_{\text{Shannon}}=0.6\cdot1+0.3\cdot2+0.1\cdot4=1.6LShannon=0.6⋅1+0.3⋅2+0.1⋅4=1.6 бит/символ. Оптимальный код по Хаффману (Huffman): Склеиваем 0.10.10.1 и 0.30.30.3 → 0.40.40.4, затем с 0.60.60.6. Длины: lA=1, lB=2, lC=2l_A=1,\; l_B=2,\; l_C=2lA=1,lB=2,lC=2. Один из кодов: A:0, B:10, C:11A:0,\; B:10,\; C:11A:0,B:10,C:11. Средняя длина: LHuffman=0.6⋅1+0.3⋅2+0.1⋅2=1.4L_{\text{Huffman}}=0.6\cdot1+0.3\cdot2+0.1\cdot2=1.4LHuffman=0.6⋅1+0.3⋅2+0.1⋅2=1.4 бит/символ. Сравнение с теоретическим минимумом: H≈1.29546H\approx 1.29546H≈1.29546. Избыточность (редунданс): для Хаффмана RH=LHuffman−H≈0.10454R_{\text{H}}=L_{\text{Huffman}}-H\approx 0.10454RH=LHuffman−H≈0.10454 бита, для Шеннона RS=LShannon−H≈0.30454R_{\text{S}}=L_{\text{Shannon}}-H\approx 0.30454RS=LShannon−H≈0.30454 бита. Эффективности: ηH=H/LHuffman≈0.9253\eta_{\text{H}}=H/L_{\text{Huffman}}\approx 0.9253ηH=H/LHuffman≈0.9253 (≈92.5%), ηS=H/LShannon≈0.8097\eta_{\text{S}}=H/L_{\text{Shannon}}\approx 0.8097ηS=H/LShannon≈0.8097 (≈81.0%). Универсальная оценка: для префиксных кодов всегда выполняется H≤L<H+1H\le L< H+1H≤L<H+1; здесь Хаффман даёт ближе к минимальному HHH и является оптимальным среди префиксных кодов.
H(X)=−∑ipilog2pi=−0.6log20.6−0.3log20.3−0.1log20.1≈1.29546H(X)=-\sum_{i} p_i\log_2 p_i = -0.6\log_2 0.6 -0.3\log_2 0.3 -0.1\log_2 0.1 \approx 1.29546H(X)=−∑i pi log2 pi =−0.6log2 0.6−0.3log2 0.3−0.1log2 0.1≈1.29546 бит/символ.
Оптимальный код по Шеннону (Shannon code):
Длины li=⌈−log2pi⌉l_i=\lceil -\log_2 p_i\rceilli =⌈−log2 pi ⌉: для A(0.6)A(0.6)A(0.6) — lA=1l_A=1lA =1, для B(0.3)B(0.3)B(0.3) — lB=2l_B=2lB =2, для C(0.1)C(0.1)C(0.1) — lC=4l_C=4lC =4.
Возможный код (через дробные кумулятивные суммы): A:0, B:10, C:1110A:0,\; B:10,\; C:1110A:0,B:10,C:1110.
Средняя длина:
LShannon=0.6⋅1+0.3⋅2+0.1⋅4=1.6L_{\text{Shannon}}=0.6\cdot1+0.3\cdot2+0.1\cdot4=1.6LShannon =0.6⋅1+0.3⋅2+0.1⋅4=1.6 бит/символ.
Оптимальный код по Хаффману (Huffman):
Склеиваем 0.10.10.1 и 0.30.30.3 → 0.40.40.4, затем с 0.60.60.6. Длины: lA=1, lB=2, lC=2l_A=1,\; l_B=2,\; l_C=2lA =1,lB =2,lC =2.
Один из кодов: A:0, B:10, C:11A:0,\; B:10,\; C:11A:0,B:10,C:11.
Средняя длина:
LHuffman=0.6⋅1+0.3⋅2+0.1⋅2=1.4L_{\text{Huffman}}=0.6\cdot1+0.3\cdot2+0.1\cdot2=1.4LHuffman =0.6⋅1+0.3⋅2+0.1⋅2=1.4 бит/символ.
Сравнение с теоретическим минимумом:
H≈1.29546H\approx 1.29546H≈1.29546.
Избыточность (редунданс): для Хаффмана RH=LHuffman−H≈0.10454R_{\text{H}}=L_{\text{Huffman}}-H\approx 0.10454RH =LHuffman −H≈0.10454 бита, для Шеннона RS=LShannon−H≈0.30454R_{\text{S}}=L_{\text{Shannon}}-H\approx 0.30454RS =LShannon −H≈0.30454 бита.
Эффективности: ηH=H/LHuffman≈0.9253\eta_{\text{H}}=H/L_{\text{Huffman}}\approx 0.9253ηH =H/LHuffman ≈0.9253 (≈92.5%), ηS=H/LShannon≈0.8097\eta_{\text{S}}=H/L_{\text{Shannon}}\approx 0.8097ηS =H/LShannon ≈0.8097 (≈81.0%).
Универсальная оценка: для префиксных кодов всегда выполняется H≤L<H+1H\le L< H+1H≤L<H+1; здесь Хаффман даёт ближе к минимальному HHH и является оптимальным среди префиксных кодов.