- •Г. И. Худяков
- •1. Исторические и технические предпосылки пти
- •2. Основные положения прикладной теории информации
- •3. Количество информации в знаковых системах Информационная мера Шеннона
- •I. Информационная статика
- •4. Информационные свойства источников дискретных сообщений Избыточность источников дис
- •5. Оптимальное кодирование статических источников дис Кодирование Шеннона-Фано и Хаффмена
- •6. Потери информации в статических системах передачи сообщений в отсутствие помех
- •7. Потери информации в системах электросвязи при наличии помех Пятый постулат теории информации
- •8. Информационные характеристики систем электросвязи Совместная, условная и остаточная энтропии каналов электросвязи
- •9. Информационная ёмкость статических каналов передачи дискретных сообщений
- •10. Помехоустойчивое канальное кодирование Основные понятия и классификация избыточных кодов
- •Основные термины теории блочного кодирования.
- •11. Количественные меры измерительной информации Информационная мера Фишера
- •12. Передача дискретных сообщений с помощью многоуровневых сигналов. Проблема квантования
- •13. Асимптотические оценки информационной ёмкости статических каналов передачи дискретных сообщений
- •II. Информационная динамика
- •14. Динамические характеристики источников и каналов связи Пропускная способность каналов электросвязи
- •15. Динамические характеристики аналоговых систем передачи информации. Проблема дискретизации сигналов
- •16. Пропускная способность аналоговых каналов электросвязи Формула Шеннона и интервал Найквиста
- •17. Численные методы расчёта пропускной способности цифровых каналов электросвязи
- •Многопозиционная фазовая манипуляция
- •Квадратурная амплитудная модуляция
- •Каналы с многопозиционной фазовой манипуляцией
- •Квадратурная амплитудная модуляция
- •П.1. Основные понятия общей теории информации
- •П.2. Основные достижения специалистов бтл в области пти
- •П.4. Подход различных авторов к формуле Шеннона
- •П.5. Краткие биографии создателей пти
- •I. Информационная статика
- •II. Информационная динамика
- •Геннадий Иванович худяков
10. Помехоустойчивое канальное кодирование Основные понятия и классификация избыточных кодов
Выше мы определили коэффициент информационной надёжности χ(П) канала передачи дискретных сообщений, имеющего переходную матрицу П, как отношение максимальной – по всем возможным источникам ДИС – удельной информативности системы «ДИС–КПДС» к удельной информативности (энтропии) источника ДИС, согласованного с каналом КПДС. Каким образом можно практически реализовать максимально возможную (теоретическую) информационную надёжность системы передачи семиотической (знаковой, дискретной) информации?
Во-первых, для такой оптимальной (по критерию максимальной информационной надёжности канала КПДС) системы «ДИС–КПДС» следует – согласно байесовскому критерию (максимума апостериорной вероятности) – определить правила присвоения выходным символам wk (k = 1, 2, …, N ) значений входных знаков (первичных символов) uj ( j = 1, 2, …, N ).
Во-вторых, при произвольном источнике ДИС с помощью кодовых символов vr (r = 1, 2, …, M ) снять избыточность данного источника ДИС.
В-третьих, перекодировать поток символов Si(n) = ( vi1, vi2, …, vil, …) таким образом, чтобы соответствующие кодовые блоки имели априорные вероятности, соответствующие источнику ДИС, согласованному с данным каналом КПДС.
Если эти условия выполнены, то при произвольном источнике ДИС, имеющем удельную информативность (энтропию)
(бит/знак),
любое достаточно длинное (n >> 1) сообщение (последовательность, или текст) Si(n) = ( ui1, ui2, …, uil, …, uin ), несущее в себе количество информации
I(Si(n))
≈ n
≡ n
H(U),
будет передаваться по каналу КПДС, в котором имеются помехи и который обладает переходной матрицей П, в искажённом виде.
В результате действия в канале КПДС помех при передаче сообщения Si(n) длины n >> 1 на выходе канала мы получим максимально возможное, при данных ДИС и КПДС, количество информации: Iвых(Si(n)) ≈ n χ(П) H(U), или Iвых(Si(n)) ≤ n H(U). То есть если бы в канале КПДС помехи отсутствовали, то данное количество информации Iвых(Si(n)) мы могли бы передать с помощью m = n χ(П) знаков; при этом m ≤ n.
Потеря
информации в канале КПДС
происходит из-за того, что выбранное
нами оптимальное
правило присвоения
выходным
символам {wk}
значений входных знаков {uj}
приводит к некоторомуминимальному
количеству ошибок, которые мы не
обнаруживаем.
Если бы мы обнаруживали эти ошибки (и
не воспринимали ошибочные символы), а
ещё лучше – их исправляли, то с помощью
последовательности Si(n)
= (
ui1,
ui2,
…, uil,
…, uin
)
из n
входных знаков, где первые m
= n
χ(П)
знаков – информационные, а k
= n
– m
= n
[1
– χ(П)]
– проверочные, мы могли бы передавать
по каналу КПДС
с помехами почти
безошибочно
количество полезной информации I(Si(n))
≈ m
≡ m
H(U)
(бит).
При этом: чем надёжнее канал КПДС, тем меньший процент проверочных знаков нужно включать в передаваемую последовательность Si(n) и тем меньше будет вероятность ошибочной идентификации знаков uj. Поскольку проверочные символы также подвержены в канале КПДС искажениям, то при χ(П) = 0 никакими «ухищрениями» мы не сможем исправить ту ситуацию, при которой апостериорная вероятность P(wk |uj) не связана с априорной P(uj), ибо соответствующие проверочные символы, подаваемые на вход канала КПДС, никак не повлияют на его выход. В симметричном бинарном канале КПДС в этом случае и информационные знаки, и проверочные символы будут идентифицироваться на выходе КПДС с вероятностью 1/2, то есть канал КПДС, согласно К. Шеннону, можно «смело заменить бросанием монеты».
Для
того чтобы реализовать представленные
формально-математические
результаты, следует
искусственно
ввести
избыточность
при
передаче сообщений {uj}
с помощьюпроверочных
символов,
которые по определённому алгоритму,
известному получателю ПИ
(или зашитому в память декодера),
«привязываются»
к передаваемым (информационным) знакам
{uj}
или, лучше, к информационным блокам. Это
называется
помехоустойчивым,
или канальным, или избыточным кодированием
и
аналогично передаче телефонных сообщений
«по
буквам»:
«а» – Антон, «б» – Борис и т. п.
Современные
информационные системы в качестве
переносчиков информации используют
кодовые слова, состоящие из независимых
(после соответствующего кодирования
знаков {uj}
источникаДИС)
символов “единица” и “ноль”: V
= {v1,
v2}
= {1, 0} – бинарные каналы КПДС.
Кодер
источника
снимает избыточность источника ДИС.
Если канал КПДС
– симметричный, то дополнительного
согласования источника ДИС
и канала КПДС
в этом случае не потребуется.
При передаче символов “1” и “0” по каналу КПДС с помехами можно, например, утраивать их: “1” передавать как “111”, а “0” – как “000”. Тогда при воздействии на канал КПДС относительно слабых помех на выходе канала может появиться, например, тройка “101” или “100” и т. п. Если полученной на выходе канала КПДС тройке “101” приписывать передачу по каналу КПДС “единицы”, а “100” – “ноля” и т. п. (мажоритарное декодирование), то потери информации в канале КПДС минимальны – и канал становится почти абсолютно надёжным.
Однако такой способ помехоустойчивого кодирования «слишком дорогой». Поэтому обычно бинарный поток “единиц” и “нолей” разбивают на достаточно длинные блоки, которые снабжают несколькими «проверочными битами» (канальное кодирование), а на приёмной стороне канала КПДС путём анализа блоков обнаруживают и исправляют (или нет) ошибки в полученном блоке.
Простейшее блочное кодирование – передача информации по байтам. Байт содержит восемь (или 16, или 32) информационных «битов» (символов “0” и “1”), один проверочный «бит», один – стартовый и два – стоповых (границы байта). Проверочный «бит» добавляется по правилу: если в информационных «битах» содержится чётное количество «единиц», то к этим «битам» добавляется “ноль”, если нечётное – то “единица”. На приёмной стороне КПДС полученный байт проверяется на чётность: если количество “единиц” – нечётное, то байт забраковывается, поскольку определить и исправить в этом случае искажённый «бит» невозможно. Если мы проводим работу на ПК, то в этом случае компьютер «зависает», и обнаруженный в ПК неправильный байт не приводит к дальнейшим вредным для функционирования ПК последствиям.
Если в передаваемом байте присутствуют две ошибки, то байт не будет забракован – и будет разрушать информацию при всех дальнейших операциях на ПК. Чтобы этого не произошло, применяют операцию перемежения. Для этого берут, например, два последовательных блока по восемь «битов» и размещают информационные «биты» в следующей последовательности: v1, v9, v2, v10, v3, v11, …, v8, v16. «Биты чётности» a1 и a2 этих блоков размещают после восьмого (a1) и после шестнадцатого (a2) информационных «битов».
Затем из первых девяти символов формируют первый байт, из вторых – второй. На выходе канала КПДС в полученных двух байтах восстанавливают последовательность первоначальных блоков: v1, v2, v3, …, v8, a1; v9, v10, v11, …, v16, a2. Если в каком-либо из посланных байтов на выходе канала КПДС допущены две ошибки, идущие подряд, то в результате восстановления первоначальных байтов они будут разнесены по одной на каждый байт – и обнаружены. Таким образом, перемежение является методом борьбы с «групповыми» (идущими подряд) ошибками в канале КПДС.
Существует множество других способов помехоустойчивого канального кодирования (см. Прил. 3), методы разработки которых составляют содержание отдельной дисциплины прикладной математики: теория избыточного, или помехоустойчивого кодирования (подробнее см., например [13, 14, 33, 34, 45]).
Однако
математическая теория информации К.
Шеннона
позволяет сформулировать предельные
соотношения между
удельной информативностью (энтропией)
источникаДИС
и
удельной информационной ёмкостью ℰ(Π)
≡
макс(П)
статического канала КПДС
вне зависимости от способа помехоустойчивого
канального кодирования (см. заключении
по разд.
9).
Сущность помехоустойчивого кодирования (избыточности кодов) заключается во введении в закодированное сообщение Si(n) = wi1, wi2, …, wi n, почти не имеющее избыточности после прохождения сообщением кодера источника, некоторой «управляемой» избыточности. Задача помехоустойчивого кодирования заключается в добавлении к информационным символам первичных кодовых слов дополнительных символов таким образом, чтобы декодер сообщений мог бы найти и даже исправить ошибки, возникающие из-за воздействия помех при передаче закодированных сообщений по линиям электросвязи.
Существует множество различных способов введения управляемой избыточности в помехоустойчивые (избыточные) коды.
Избыточные коды делятся на блочные и непрерывные.
В блочных кодах передаваемая информация разбивается на отдельные блоки – кодовые комбинации, которые кодируются и декодируются независимо. Если число символов (элементов) первичного кода (длина информационного блока) равно m, а вводимых дополнительных проверочных символов (элементов) кода равно k, то общее число символов (элементов) в кодовой комбинации блочного избыточного кода равно n = m + k.
В непрерывных кодах передаваемая информационная последовательность символов не разделяется на блоки, а проверочные символы размещаются в определенном порядке между информационными. Среди непрерывных кодов особое место занимают свёрточные коды.
Блочные коды бывают равномерными (кодовые слова имеют одинаковые длины) и неравномерными. Равномерные коды делятся на разделимые и неразделимые. В разделимых кодах информационные и проверочные символы во всех кодовых комбинациях занимают одни и те же позиции. Поэтому разделимые коды обозначаются как (n, m)-коды.
В неразделимых кодах деление на информационные и проверочные символы отсутствует.
Разделимые коды делятся на линейные и нелинейные. Первые названы так потому, что их проверочные символы представляют собой линейные комбинации информационных символов. Важное место среди линейных кодов образуют циклические коды.
Нелинейные коды характеризуются наличием двух и более проверок внутри каждой кодовой комбинации.
Интегральной (обобщённой) характеристикой всех помехоустойчивых кодов, как и для случая реальных источников ДИС с избыточностью, является коэффициент избыточности кода k. Например, поскольку с помощью блочных разделимых (n, m)-кодов, которые имеют длину информационных блоков m, а общую длину блоков n, в отсутствие помех можно передавать In = log 2n = n (бит/знак) информации, а передаётся только Im = log 2m = m (бит/знак), то коэффициент избыточности такого кода следует определить как
kпк = (In – In)/In = (1 – m/n).
Значение этого коэффициента лежит в пределах от kпк = 0 (при k = n – m = 0) до kпк→ 1 при k → ∞.
Значит, можно утверждать:
|
для того чтобы обеспечить надёжную передачу дискретной (знаковой) информации с помощью заданной статической системы ССПИ при наличии в её линии электросвязи (КПДС) помех, необходимо, чтобы применяемый для этого помехоустойчивый код имел избыточность, не меньшую, чем информационная ненадёжность канала КПДС. Иначе в канале КПДС будет происходить не менее 100 [1 – χ(Π) – kпк] процентов потерь информации при любом способе кодирования сообщений с помощью кода с данной величиной kпк. |
Каким образом можно формализовать процедуры избыточного кодирования и декодирования бинарного информационного потока со снятой избыточностью: Si(n) = (vi1, vi2, …, vi l, …, vi n)?
Рассмотрим бинарное разделимое блочное кодирование.
В
простейшем случае это (3, 2)-коды. То есть
информационных кодовых комбинаций
(блоков) всего четыре:w1
= (0, 0), w2
= (1, 0), w3
= (0, 1) w4
= (1, 1).
Для наглядности их можно представить на плоскости (x, y) в системе координат (x, y, z) – см. рис. 10.


z
=(011)









=(101)

y




![]()
w3 w4
w1 w2




![]()
x
Рис. 10. Простейший блочный код (3, 2)
Ясно,
что любая (одна) ошибка декодирования
приводит к «перепутыванию» блоков {wj}
и к необнаруживаемой ошибке приёма
знаковой информации. Однако если мы
«грамотно» добавили проверочные символы,
то одну ошибку в блоке при декодировании
кодовых блоков можно обнаружить и
попросить источник ИС, например, повторить
передачу именно этого блока.
Для этого мы можем поступить следующим образом (см. рис. 10).
Если
передаётся информационный блок w1,
то его избыточный кодовый блок будет
;
еслиw2,
то
;
еслиw3,
то
и, наконец, еслиw4,
то
.
Ясно, по построению, что любую одиночную ошибку мы обнаружим.
Переведём
эти эвристические
соображения на
язык линейной алгебры.
Для этого запишем информационные кодовые
блоки множества символов {wj}
в виде вектор-столбцов:
,
,
,
.
Тогда
процесс кодирования можно представить
линейным
преобразованием
A
вектор-столбцов размера 2
×1
в вектор-столбцы размера 3
×1,
то есть матрица этого преобразования
A
будет иметь размер 3
×
2:
,
где
– кодовый блок избыточного кода для
блокаwj;
j
= 1, 2, 3, 4
Можно проверить, что в данном случае матрица кодирования имеет вид:
,
если
ввести суммирование по модулю два,
обозначив эту операцию как
.
Действительно.
Поскольку верхняя часть матрицы A
является единичной квадратной матрицей
порядка 2 (то есть размера 2×2), то в кодовые
блоки
войдут кодовые блокиwj,
а проверочные элементы (символы) aj
суть:
![]()
![]()
![]()
.
Для
декодирования мы должны построить такую
матрицу B
размера 2
×3,
чтобы получить тождество:
,
или
,
гдеE
– единичная матрица порядка 2 (размера
2
×2).
Отсюда получаем уравнение для нахождения матрицы B: B A = E. Это не значит, что B = A–1, поскольку для прямоугольных матриц A обратные матрицы A–1 не определены.
Таким образом, для нахождения матрицы B операции декодирования B нужно по матрице A найти такую псевдообратную матрицу, чтобы выполнялось тождество: B A = E, в котором размеры матриц B, A и E – 2 ×3, 3 ×2 и 2 ×2 соответственно.
Из уравнения B A = E вытекает система только четырёх уравнений:
![]()
![]()
![]()
.
«Чистые математики» разработали методы решения такого рода недоопределённых систем уравнений и нахождения псевдообратных матриц B. В данном случае матрица B имеет вид:
.
Путём непосредственной проверки можно убедиться, что B A = E:
×
=
.
Однако прежде, чем переходить к декодированию принимаемого блока
,
необходимо проверить, нет ли в этом
блоке ошибки? Для этого можно, например,
перемножить принимаемый вектор
с вектором-строкойh
= || 1
1 1 ||:
h
⊗
=aj.
Если выполняется равенство h
⊗
=aj
= 0, то в принятом блоке нет ни одной
однократной ошибки; если h
⊗
=aj
= 1 – имеется ошибка, исправить которую
не представляется возможным.
Действительно:
h
⊗
= || 1
1 1 ||·
= 0; h
⊗
= || 1
1 1 ||
⊗
= 1
1
= 0;
h
⊗
= || 1
1 1 ||
⊗
= 1
1
= 0;h
⊗
= || 1
1 1 ||⊗
= 1
1
= 0;
||
1
1 1 ||⊗
= 1; || 1
1 1 ||⊗
= 1; || 1
1 1 ||⊗
= 1; || 1
1 1 ||⊗
= 1
1
1
= 1.
Для обобщения рассмотренного выше примера введём
