Теория информации: дан бинарный источник с вероятностью единицы p = 0.1 и канал БСК с вероятностью ошибки 0.05; обсудите, как вычисляется энтропия источника и пропускная способность канала; предложите и проанализируйте кодирование (корректирующие коды или повторения), оптимизирующее надёжность при ограничениях задержки и пропускной способности

12 Окт в 08:16
4 +4
0
Ответы
1

Кратко и по делу — сначала вычисления информации, затем практические варианты кодирования с анализом компромиссов задержкаvsпропускнаяспособностьvsнадёжностьзадержка vs пропускная способность vs надёжностьзадержкаvsпропускнаяспособностьvsнадёжность.

1) Энтропия источника
Для бинарного источника X с PX=1X=1X=1=p=0.1 энтропия бит/символбит/символбит/символ HXXX = −p log2 p − 1−p1−p1p log21−p1−p1p.
Подставляем:
log2 0.1 ≈ −3.32193, log2 0.9 ≈ −0.15200,
HXXX ≈ 0.1·3.32193 + 0.9·0.15200 ≈ 0.33219 + 0.13680 ≈ 0.469 бит/символ.

Интерпретация: в среднем один символ несёт ≈0.469 бит информации; теоретически можно сжать поток почти до 0.469 бит/символ.

2) Пропускная способность канала BSCBSCBSC Для бинарного симметричного канала ошибкаq=0.05ошибка q = 0.05ошибкаq=0.05 ёё ёмкость C равна
C = 1 − H_bqqq,
где H_b — бинарная энтропия. Для q = 0.05
H_b0.050.050.05 = −0.05 log2 0.05 − 0.95 log2 0.95 ≈ 0.2864 бит,
поэтому
C ≈ 1 − 0.2864 = 0.7136 бит/канальное использование.

Значимая проверка: HXXX ≈ 0.469 < C ≈ 0.714, значит теоретически потеоремеШеннонапо теореме ШеннонапотеоремеШеннона есть кодирование, которое позволит передавать источник безошибочно при достаточно длинных блоках.

3) Практика: требования и общие принципы

Если требуется минимальная задержка — короткие блоки. Но короткие блоки не достигают предела Шеннона и дают хуже защиту.Если требуется максимальная надёжность при ограниченной полосе — можно увеличить избыточность понизитьскоростьпередачипонизить скорость передачипонизитьскоростьпередачи или использовать мощные коды на умеренной длине блоков.Поскольку источник несбалансирован p=0.1p=0.1p=0.1, выгодно сначала выполнить сжатие Huffman/арифметическоеHuffman/арифметическоеHuffman/арифметическое, чтобы подать на канал ≈0.469 бит/символ. Но переменное кодирование может давать задержки и чувствительно к ошибкам ошибкавсжатомпотокеможетиспортитьмногосимволовошибка в сжатом потоке может испортить много символовошибкавсжатомпотокеможетиспортитьмногосимволов, поэтому для малой задержки можно использовать блочное фиксированной длины сжатие кодированиеблоковкодирование блоковкодированиеблоков или применить схемы с контролем синхронизации / маркерами.

4) Простые практическипонятныепрактически понятныепрактическипонятные схемы и оценки

a) Повторение n−кратноеn-кратноеnкратное с большинственным решением
Формула для итоговой вероятности ошибки бита после повторения n нечётноеnнечётное nнечётноеn:
Pout = sum{k=n+1n+1n+1/2}^n Cn,kn,kn,k q^k 1−q1−q1q^{n−k}.
Для q = 0.05:

n = 1 безкодабез кодабезкода: P = 0.05, скорость = 1n = 3: P ≈ 0.00725 0.7250.725%0.725, скорость = 1/3 ≈ 0.333n = 5: P ≈ 0.00116 0.1160.116%0.116, скорость = 1/5 = 0.2n = 7: P ≈ 0.00060 0.060.06%0.06, скорость = 1/7 ≈ 0.143

Комментарий: повторение даёт сильное снижение ошибки, но очень неэффективно по пропускной способности. При необходимости очень низкой задержки и простой реализации — повторение малого n 3или53 или 53или5 — простой выбор.

b) Hamming 7,47,47,4 Код 7,47,47,4 исправляет 1 ошибку в блоке из 7 бит, скорость R=4/7≈0.571.
Вероятность неуспеха произвольных≥2ошибоквблокепроизвольных ≥2 ошибок в блокепроизвольных2ошибоквблоке при q=0.05:
P_fail = 1 − P000 − P111 ≈ 1 − 0.6983 − 0.2569 ≈ 0.0447 ≈4.47≈4.47% блоков ломаются4.47.
Преимущество: большая скорость 0.5710.5710.571. Недостаток: при q=0.05 код даёт лишь небольшое улучшение по сравнению с необработанным битом 55% → ~4.5% блоковых ошибок5.

c) BCH / Reed–Solomon / короткие LDPC / короткие Polar / сверточные коды

BCH и короткие циклические коды дают гарантированное исправление до t ошибок; лучше для малых n если нужен гарантированный минимум расстояния.Сверточные коды с Viterbi малыеconstraintlength,напримерK=7малые constraint length, например K=7малыеconstraintlength,напримерK=7 дают хорошую производительность при умеренных задержках.LDPC и Polar хорошо подходят при длинах блоков от сотен до тысяч бит: они приближаются к пределу Шеннона, но требуют буферов/задержки и более сложного декодирования.Для коротких блоков предпочтительнее Polar сосписковымдекодированиемсо списковым декодированиемсосписковымдекодированием или специально оптимизированные короткие LDPC protographprotographprotograph — они дают лучшее практическое соотношение R/FER при длинах ~128–1024.

5) Как применять это к вашей задаче вариантывзависимостиотограниченийварианты в зависимости от ограниченийвариантывзависимостиотограничений

Вариант A — минимальная задержка, умеренная надёжность

Не использовать сильные блочные коды больших длин.Простой рецепт: сжать маленькими блоками например,блоки16–32символанапример, блоки 16–32 символанапример,блоки16–32символа арифметическим/Huffman-кодом → получить ≈0.469 бит/символ в среднем.Для защиты применять короткий сверточный код rate1/2или2/3rate 1/2 или 2/3rate1/2или2/3 с Viterbi или повторение n=3 еслидекодированиепростоеесли декодирование простоееслидекодированиепростое. Это даёт низкую задержку парадесятковбитпара десятков битпарадесятковбит и приемлемую защиту.Пример: если после сжатия на 32 символа требуется ~15 бит информации, можно применить сверточный код k=15→n≈30приrate1/2k=15 → n≈30 при rate 1/2k=15n30приrate1/2 с декодированием Viterbi; задержка ≈30 символов канала.

Вариант B — высокая надёжность, допускается умеренная задержка и небольшое падение пропускной способности

Сжать блоками средней длины например,100–1000символовнапример, 100–1000 символовнапример,100–1000символов до ≈0.469 бит/символ.Применить мощный код LDPC/PolarLDPC/PolarLDPC/Polar длиной n∼512–4096 и скоростью R чуть ниже C (например R ≈ 0.6–0.65 < 0.7136) для получения очень низкой вероятности ошибки.Такой подход близок к пределу Шеннона и при достаточной длине даёт экспоненциально малую FER.

Вариант C — простейшая реализация с минимальной логикой и очень высокой надёжностью готовностьплатитьпопропускнойспособностиготовность платить по пропускной способностиготовностьплатитьпопропускнойспособности

Прямо повторять каждый бит n=5–7 и декодировать большинством. Очень простая логика, замечательная надёжность P≈10−3–10−4P≈10^−3–10^−4P103–104, но скорость падает в 5–7 раз.

6) Использование несимметрии источника p=0.1p=0.1p=0.1 для выигрыша

Необязательное, но эффективное: не кодировать бит «как есть», а использовать несимметричное unequalunequalunequal защишённое кодирование: чаще встречающиеся 0-символы можно кодировать с меньшей защитой, редкие 1 — с более сильной защитой UEPUEPUEP. Это экономит ресурс канала на защиту.Пример простой схемы: передавать «0» одиночным битом, а «1» как защищённую сигнатуру например,3−битоваяповторённаяметканапример, 3-битовая повторённая метканапример,3битоваяповторённаяметка. Поскольку единиц всего 10%, общая скорость падает не сильно, а влияние ошибок на 1 минимизируется.

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

Если у вас жесткая требование превышения HXXX≤C — то теоретически возможно, но на практике нужно выбор кода и длины блоков.Для минимальной задержки: короткие сверточные коды ViterbiViterbiViterbi, или короткие Polar/LDPC специально оптимизированные для малого n; при этом используйте небольшие блоки сжатия иливовсефиксированныйкодбезсжатия,еслиуправлениеошибкамивсжатомпотокепроблематичноили вовсе фиксированный код без сжатия, если управление ошибками в сжатом потоке проблематичноиливовсефиксированныйкодбезсжатия,еслиуправлениеошибкамивсжатомпотокепроблематично.Для максимальной надёжности при умеренной задержке: сжать арифметическоеарифметическоеарифметическое и использовать LDPC/Polar длиной несколько сотен–тысяч.Если реализация и простота важны: повторение n=3 или 5 даёт существенное падение битовой ошибки 0.05→0.00725или0.001160.05→0.00725 или 0.001160.050.00725или0.00116 при сильном падении скорости.

8) Пример числового сравнения действиявсистемедействия в системедействиявсистеме

Исход: 1 символ → в среднем 0.469 бит после сжатия.Сценарий: использовать код с эффективной скоростью R_channel = 0.5 т.е.0.5инфо−бит/канал.использованиет.е. 0.5 инфо-бит / канал.использованиет.е.0.5инфобит/канал.использование. Тогда канал обеспечивает 0.5 бит/использование > 0.469 ⇒ возможно надежное кодирование. Требуемое среднее число канал. использований на символ ≈ 0.469/0.5 ≈ 0.938 меньше1меньше 1меньше1.Если вместо мощного кода вы выбираете повторение n=3 rate1/3≈0.333rate 1/3≈0.333rate1/30.333, то среднее канал.использований на символ ≈ 0.469/0.333 ≈ 1.407 больше1больше 1больше1 — т.е. большая потеря пропускной способности, но простая реализация и хорошая защита.

Заключение

Теоретически передача без ошибок возможна, потому что HXXX=0.469 < C=0.7136.На практике выбор оптимальной схемы зависит от допустимой задержки и от того, готовы ли вы тратить пропускную способность ради простоты.Если цель — минимальная задержка при приличной надёжности: сжатие по блокам + короткий сверточный/Polar код. Если цель — простота и очень высокая надёжность при малом требовании к пропускной способности: повторение n=5–7. Если цель — максимальная эффективность — сжать большие блоки и использовать LDPC/Polar длиной сотни–тысячи бит.

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

подобрать конкретный код параметрыn,kпараметры n,kпараметрыn,k для заданной задержки макс.числоканал.исп./блокмакс. число канал.исп./блокмакс.числоканал.исп./блок и целевой вероятности ошибки;показать Python-код для расчёта вероятности ошибки для повторения, Hamming, и биномиальных сумм; илипредложить конкретную цепочку размерблокасжатия,кодиожидаемаяFERразмер блока сжатия, код и ожидаемая FERразмерблокасжатия,кодиожидаемаяFER под ваши численные требования по задержке/пропускной способности/вероятности ошибки.
12 Окт в 08:47
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир