Дан источник с алфавитом {A,B,C,D} и вероятностями 0.5, 0.25, 0.125, 0.125: вычислите энтропию H, постройте оптимальный префиксный код (например, Хаффмана), найдите среднюю длину кода и сравните с H; далее обсудите, как появление вероятности битовой ошибки в канале изменит требования к кодированию и какие методы коррекции ошибок и детектирования вы бы применили в практической системе

22 Окт в 14:50
7 +1
0
Ответы
1
Дано A={A,B,C,D} \mathcal{A}=\{A,B,C,D\}A={A,B,C,D} с вероятностями 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.
Энтропия:
H=−∑xp(x)log⁡2p(x)=−(0.5log⁡20.5+0.25log⁡20.25+0.125log⁡20.125+0.125log⁡20.125)=1.75 бит/символ. H=-\sum_{x} p(x)\log_2 p(x)
= -\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)
=1.75\ \text{бит/символ}.
H=x p(x)log2 p(x)=(0.5log2 0.5+0.25log2 0.25+0.125log2 0.125+0.125log2 0.125)=1.75 бит/символ.

Оптимальный префиксный (Хаффманов) код: объединяем CCC и DDD в узел 0.125+0.125=0.250.125+0.125=0.250.125+0.125=0.25, затем объединяем узлы 0.250.250.25 и 0.250.250.25 и т.д. Один возможный оптимальный код:
A:0,B:10,C:110,D:111. A:0,\quad B:10,\quad C:110,\quad D: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=∑xp(x)l(x)=0.5⋅1+0.25⋅2+0.125⋅3+0.125⋅3=1.75 бит/символ. L=\sum_x p(x)l(x)=0.5\cdot1 + 0.25\cdot2 + 0.125\cdot3 + 0.125\cdot3 = 1.75\ \text{бит/символ}.
L=x p(x)l(x)=0.51+0.252+0.1253+0.1253=1.75 бит/символ.
Сравнение: L=HL=HL=H — код достигает нижней границы энтропии (возможно, так как вероятности — степени 1/21/21/2).
Влияние битовой ошибки в канале и практические методы:
- Перемещение от идеального сжатия к надежной передаче требует добавления избыточности; перемычка между источником и каналом: либо отдельное кодирование (source coding) + коррекция ошибок (channel coding), либо совместное кодирование для коротких блоков/малой задержки.
- Переменные длины (префиксные) чувствительны к одиночным ошибкам (десинхронизация). Практики: кадрирование/синхронизация (фреймы, маркеры), периодические точки ресинхронизации или пакетизация символов в блоки фиксированной длины перед FEC.
- Методы детектирования и коррекции:
- Детектирование ошибок: CRC для кадра + ARQ (при наличии канала обратной связи).
- Простая коррекция: коды Хэмминга для одиночных ошибок (низкая избыточность).
- Блоковые коды мощнее: Reed–Solomon (хороши для ошибок/пучков), BCH.
- Современные мощные коды: LDPC и турбокоды — близки к пределу Шеннона при больших блоках.
- Сверточные коды + Viterbi для потоковой передачи с умеренной сложностью.
- Интерливинг для борьбы с пачками ошибок.
- Практические рекомендации:
- Для двусторонней связи с возможностью ретрансляции: использовать CRC+ARQ (высокая эффективность при низкой задержке).
- Для однонаправленной/реального времени: применить мощный FEC (LDPC/Reed–Solomon) с интерливингом; обеспечить кадрирование и, при необходимости, неравномерную защиту (UEP) — более важные символы получают более сильную защиту.
- Если требуется минимизировать уязвимость переменных длин — пакетировать/переформатировать в фиксированные блоки перед FEC или использовать кодирование, устойчивое к рассинхронизации.
Это основные выводы и практические методы для системы с заданным источником и наличием битовых ошибок.
22 Окт в 15:27
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир