Пропускная способность дискретного канала с помехами
Пропускная способность дискретного канала без помех
Определим пропускную способность канала как максимальное количество информации, которое можно передавать по нему в единицу времени:
C = max{Ixy}/ tx (бит/с) (4.1)
Для канала без помех справедливо условие Ixy = Hx, а потому его пропускная способность:
Cбп = max{Hx}/ tx = log2m / tx (4.2)
В частном случае передачи двоичных разрядов (m = 2) справедливо
Сбп = 1/tx (4.3).
Для нас важно, как соотносится величина Сбп с потоком информации источника H`z, который определяется по формуле
H`z = Hz/tz (бит/с) (4.4).
Пропускная способность канала используется полностью, когда H`z = C. Между тем, уменьшение энтропии Hz может привести к сокращению информационного потока. Чтобы его увеличить, требуется сократить время tz. Если учесть, что
tz = tx * lср, где lср - средняя длина кода символа, то становится ясно: чтобы полнее использовать пропускную способность канала для любого источника, нужно рационально кодировать сообщения, по возможности сокращая величину lср.
Если записать условие полного использования пропускной способности канала H`z = C в развернутом виде, то для канала без помех оно будет иметь вид:
Hz/tz = log2m/tx (4.5),
а с учетом tz = tx * lср и log2m = 1 (при m=2) мы получим условие:
lср = Hz (4.6)
По сути, доказательство этой так называемой теоремы Шеннона о кодировании для канала без помех сводится к нахождению процедуры, позволяющей получить требуемый код. Эта процедура, именуемая эффективным кодированием, была предложена самим Шенноном и в дальнейшем усовершенствована (с точки зрения удобства ее практического применения) Хаффменом.
В обоих случаях речь идет о посимвольном кодировании и величина Hz имеет значение безусловной энтропии. В принципе можно пойти дальше и рассматривать кодирование цепочек символов. В этом случае Hz будет иметь смысл условной энтропии порядка l, где l - максимальная длина цепочки. О "цепочечном" кодировании речь впереди, а пока мы рассмотрим классический подход к эффективному кодированию на уровне символов.
Рассмотрим теперь вариант, когда помехи в канале вызывают появление ошибок с вероятностью p0. В этом случае из соотношения 3.1 следует:
C = max {Hx - Hx/y}/ tx = (log2m - Hx/y) / tx (4.8)
Рассмотрим наиболее распространенный случай так называемого двоичного симметричного канала. При этом m = 2 (log2m = 1), а вероятности ошибки “переход "1" в "0” ” “переход "0" в "1" ” одинаковы.
Если теперь рассмотреть в качестве случайного события передачу разряда кода с ошибкой (вероятность p0), то, используя формулу (2.8) для определения энтропии, получим:
Hx/y = Hy/x = -p0 log2p0 - (1 - p0) log2(1 - p0) (4.9)
С учетом этого (4.8) преобразуется к виду:
C = [1 - p0log2p0 - (1 - p0)log2(1 - p0)]/tx (4.10)
Таким образом, пропускная способность симметричного двоичного канала с помехами определяется только скоростью передачи разрядов кода (Vx = 1/tx) и вероятностью ошибок.
Наглядно зависимость C(p0) иллюстрирует рисунок 2.
Рисунок 2
Как видно, максимальное значение пропускной способности канала достигается при p0 = 0 «канал без помех»и при p0 = 1 (очевидно, что если канал передает все символы с ошибками, то последние легко устраняются инвертированием). Минимальное значение C = 0 имеет место при p0 = 0.5.
Шеннон показал, что за счет кодирования пропускную способность канала с помехами также можно использовать максимально полно (напомним, что сама она будет ниже, чем у канала без помех).
Способ кодирования, который позволяет этого добиться, основан на использовании избыточных кодов, когда каждый информационный блок защищается контрольными разрядами и чем больше длина блока, тем меньше удельный вес этих избыточных разрядов, позволяющих обнаружить и исправить ошибки. Вопросы применения корректирующих кодов мы рассмотрим в разделе 5.