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

2 Окт в 13:42
13 +1
0
Ответы
1

1) Энтропия источника

H = −∑ p_i log2 p_i =
−(0.5·log2 0.5 + 0.25·log2 0.25 + 0.125·log2 0.125 + 0.125·log2 0.125) =
−(0.5·(−1) + 0.25·(−2) + 0.125·(−3) + 0.125·(−3)) =
0.5 + 0.5 + 0.375 + 0.375 = 1.75 бит/символ.

2) Оптимальный префиксный (Хаффманов) бинарный код

Построение Хаффмана (объединяем C и D: 0.125+0.125=0.25, затем с B=0.25, затем с A=0.5) даёт, например, такой код:

A: 0B: 10C: 110D: 111

Это префиксный код (однозначно декодируемый).

3) Средняя длина кода и избыточность

Средняя длина L = ∑ p_i · l_i =
0.5·1 + 0.25·2 + 0.125·3 + 0.125·3 = 1.75 бит/символ.

Избыточность R = L − H = 1.75 − 1.75 = 0 бит/символ.
(Причина: вероятности являются двоичными степенями, поэтому Хаффман даёт идеальную эффективность.)

4) Влияние шумового канала с "пропуском" битов (deletion / erasure) и коррекция ошибок

Основные эффекты:

Пропуск битов нарушает синхронизацию кодовых слов переменной длины (как в Хаффмановском коде). Одна пропущенная бит-ошибка может привести к ошибочному разбору многих последующих символов (каскадный эффект).Для канала с отмеченными утерями (erasures), где при пропуске сообщается позиция утерянного бита, проблема проще; для чистых удалений (deletions) ресинхронизация труднее и модель канала сложнее (capacity и коды отличаются).

Способы повышения надежности (с компенсацией снижения эффективности):

Фреймирование/синхропоследовательности:
Разбивать поток на блоки (кадры) и ставить в начало/конец уникальные синхромаркеры (уникальные слова). При утрате битов можно восстановить границы блока по маркерам или по их частичному совпадению.Фиксированная длина кодирования символов:
Преобразовать в код фиксированной длины (например, 2 бита/символ: A=00,B=01,C=10,D=11). Это увеличивает среднюю длину (2 > 1.75), но облегчает ресинхронизацию и локализацию ошибок (все сдвиги кратны 2 при отсутствии удалений внутри блока).Контроль целостности и ARQ:
Добавлять контрольные суммы/CRC на кадры и при обнаружении ошибки — запрос повторной передачи (ARQ). Эффективно при двунаправленной связи и относительно низкой скорости потерь.FEC для каналов типа erasure:
Если удалённые биты (или целые символы/пакеты) помечаются как утерянные, применимы коды на исправление стираний: Reed–Solomon, Raptor/Fountain, LDPC-экраны для блоков. Они восстанавливают утерянные позиции без повторной передачи.Коды для вставок/удалений (insdel):
Для каналов с неизвестными удалениями/вставками существуют специализированные коды: Varshamov–Tenengolts (VT) — исправляют одну удалённую или вставленную позицию в блоке; более сложные конструкции (Levenshtein-коды и их обобщения) для нескольких удалений. Эти коды добавляют надёжность при невысокой избыточности, но сложнее в реализации и с меньшей корректирующей способностью, чем классические FEC.Интерливинг:
Разброс ошибок по блокам (при локальных сериях пропусков) с помощью интерливинга + FEC уменьшает шанс полной потери блока.Смешанные подходы:
Синхропоследовательности + FEC (или ARQ) дают практический баланс: маркеры позволяют ресинхронизироваться, FEC восстанавливает утерянные данные внутри рамки, ARQ обрабатывает случаи, где восстановление невозможно.

Практические рекомендации

Сначала уточнить модель канала: известны ли позиции пропущенных битов (erasures) или нет (deletions), есть ли двусторонняя связь (ARQ возможен).Для каналов с пометкой утерь (erasures): используйте блочные FEC (Reed–Solomon, Fountain) — хорошая эффективность при умеренной избыточности.Для каналов с deletions без маркировки: использовать синхромаркеры, блокирование, возможно VT/insdel-коды для небольшого числа удалений; при высокой вероятности удалений рассмотреть переход на фиксированную длину кодирования и сильное FEC.Учтите компромисс: любая коррекция ошибок требует избыточности, т.е. повышает среднюю длину передачи > 1.75 бит/символ.

Если хотите, могу:

показать пример, как одна пропущенная битовая ошибка портит декодирование для предложенного Хаффман-кода;оценить дополнительные биты (избыточность) для конкретного метода FEC (например, Reed–Solomon или VT) при заданной вероятности пропусков.
2 Окт в 14:18
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир