- •Г. И. Худяков
- •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 || ⊗ = 11 = 0;
h ⊗ = || 1 1 1 || ⊗ = 11 = 0;h ⊗ = || 1 1 1 ||⊗ = 11 = 0;
|| 1 1 1 ||⊗ = 1; || 1 1 1 ||⊗ = 1; || 1 1 1 ||⊗ = 1; || 1 1 1 ||⊗ = 111 = 1.
Для обобщения рассмотренного выше примера введём