Тема 17. Двоичные групповые коды: матричное кодирование, групповые свойства и таблица стандартной расстановки. Исправление ошибок.
Рассмотрим способ задания кода, обеспечивающий свойства группы для B,+. Для этого введем операцию “умножения” двоичного вектора на двоичную матрицу, аналогичную операции умножения числового вектора на числовую матрицу. Определение получится заменой умножения на операцию & - “логическое и” и сложения на операцию- “исключающее или”. Порядок перебора индексов и требования к размерностям не изменяются. В результате получаем определение для операции · :
Можно проверить (аналогично числовым матрицам), что для операции · выполняется дистрибутивность относительно поэлементного “исключающего или”: (x+y)·M=x·M+y·M. Кроме того, если матрица невырожденнаяx·M=0 x=0(0- вектор, все компоненты которого равны 0). Эти свойства обеспечивают задание двоичного группового кода любой невырожденной двоичной матрицей, если задатьy=f(x)=x·M(здесь используется представление входных и выходных последовательностей в виде векторов-строк). Такое задание называется матричным кодированием. Проверим выполнение свойств подгруппы для множестваBпри матричном кодировании.
1. Замкнутость:
yB, zBx,tVk:y=x·M,z=t·M y+z =x·M+t·M = (x+t)·M B
2. 0 - нейтральный элемент вA,
0=0·MB
3. Обратимость:
yB y+y=0.
Систематическому коду соответствует матрица (очевидно, невырожденная) с единичной подматрицей вида:
Рассмотрим структуру вычисления отдельных проверочных символов. Она задается соответствующим столбцом матрицы. Единичные элементы показывают, какие входные символы кодера участвуют в вычислении данного проверочного символа. А вычисление заключается в сложении по модулю 2. Поэтому такой код называется также кодом с проверками на четность.
Пример задания кода - двоичный групповой систематический (3,6) код:
Схема кодирующего устройства приведена на рис. 6.
Рис. 6.
Чтобы сделать связь структуры кодера с порождающей матрицей нагляднее, схема умышленно оставлена неоптимальной по сложности (числу операций ).
Рассмотрим теперь построение декодера и оценим его сложность. Всего из канала может быть получено 2nразличных блоков. Если сопоставить каждому возможному входу выход декодера изkразрядов оценки и еще один разряд - признак неисправимой ошибки, потребуется память из 2n(k+1)-разрядных ячеек. Декодирование осуществляется за одну операцию выборки из памяти. Такой подход пригоден только для очень малых размеров блоков.
Для упрощения декодирования рассмотрим разбиение множества Aна смежные классы по подгруппеB:A/B={y+B|yA}. Смежный класс, порожденный нейтральным элементом - вектором0- запишем в виде первой строки таблицы, а остальные классы - следующими строками. Первая строка совпадает с самой подгруппой допустимых кодовых комбинаций0+B=B. Всего в таблице будет 2n-kстрок по 2kэлементов в каждой строке.
Рассмотрим условие возникновения необнаруженной ошибки. Для этого необходимо, чтобы ỹBилиy+e=z,zB. Тогда, так как в рассматриваемой группе каждый элемент обратный самому себе,e=y+zи, так какyB, по замкнутости подгруппы относительно бинарной операции +eB. Таким образом, не обнаруживаются те и только те комбинации ошибок, векторные представления которых сами являются допустимыми кодовыми комбинациями. Всего таких комбинаций будет 2k-1, так как элемент0B- не ошибка. Запишем первую строку таблицы так, чтобы первым элементом был вектор0.
Остальные строки таблицы могут быть двух видов:
1) В строке (классе разбиения p+B) существует единственный элемент с наименьшим весом:zp+B:tp+Bw(z)w(t). Тогда такой вектор z назовемлидеромклассаp+B, выберем его порождающим элементом (любой элемент класса может быть порождающим) и запишем первым в данной строке.
2) В строке такого элемента нет - порождающим элементом выберем произвольный элемент класса и запишем первым в данной строке.
Порядок расположения остальных элементов в строках зададим такой, чтобы элемент являлся “суммой” (результатом бинарной операции +) между заголовком строки (лидером zдля строк первого типа или произвольным порождающим элементом для строк второго типа) и заголовком столбца (элементом подгруппы допустимых кодовых комбинаций. Схема построения такой таблицы показана на рис. 7.
0 - нейтр. эл-т | b1 | b2 | ... | |
z1 | z1+b1 | z1+b2 | ... | z1+ |
z2 | z2+b1 | z2+b2 | ... | z2+ |
... | ... | ... | ... | ... |
zm | zm+b1 | zm+b2 | ... | zm+ |
p1 | p1+b1 | p1+b1 | ... | p1+ |
... | ... | ... | ... | ... |
+b1 | +b2 | ... | + |
Рис. 7
На этом рисунке mстрок первого типа и 2n-k-mстрок второго типа. Всеми своими элементами таблица полностью покрывает множество векторов, которые могут быть получены из канала. Поэтому правило оптимального приема с исправлением ошибок будет заключаться в следующем:
1) Если принятый вектор попал в первую строку, то наиболее вероятно, что ошибок нет и =f-1(ỹ) - то есть для систематического кода просто берутся информационные символы.
2) Если принятый вектор попал в одну из строк первого типа, то наиболее вероятно, что ошибка имеет конфигурацию лидера этой строки, а передаваемая информация - заголовок столбца, содержащего принятый вектор.
3) Если принятый вектор попал в одну из строк второго типа, то фиксируется обнаруженная, но не исправляемая ошибка.
Таким образом, двоичный групповой код исправляет те и только те конфигурации ошибок, которые являются лидерами в строках первого типа. На рисунке 7 всего mтаких конфигураций.
Можно представить декодер как устройство, в котором запомнены все исправляемые конфигурации ошибок z1...zm, которое, если принятый вектор не является допустимым, осуществляет подбор (не более чем заmшагов) образца наиболее вероятной ошибки по условиюzl+ỹB, или, если это условие не выполняется, фиксирует неисправляемую ошибку. Это намного проще, чем табличное сопоставление вход и выхода декодера из первого подхода, но все-таки требует определенного числа операций и, возможно, памяти для элементов множестваB.
Проверочная матрица и синдромное декодирование.
Так как код является систематическим, проверку принадлежности можно заменить на повторное вычисление проверочных символов по информационным и сравнение с имеющимися проверочными символами. Сравнение будет заключаться в вычислении результата операции между вычисленным и принятым из канала проверочными символами (всегоn-kрезультатов). Если векторB, то все результаты равны 0. Можно представить эту процедуру в виде умножения принятого вектора на проверочную матрицу:
s=ỹ·H
где H- матрица размеромn(n-k),s- вектор-строка размерностиn-k, называемый вектором синдрома.
Можно проверить, что s=0ỹBи, что два вектораỹиỹ тогда и только тогда принадлежат одному и тому же смежному классу, когда их синдромы совпадают. Поэтому декодер можно еще упростить, сопоставив каждому из возможных 2n-kсиндромов оценку ошибки и сигнал о необнаруженной ошибке (в пределах каждой строки таблицы синдромы одинаковые, а у разных строк они различны). Так как исправлять необходимо только ошибки в информационных символах, можно представить следующую схему декодера:
1) По принятому вектору из nразрядов вычисляетсяn-kразрядов вектора синдрома (схема аналогична кодеру).
2) n-kразрядов синдрома используются как адрес в памяти части образцов ошибок для информационной части изkразрядов. Еще один разряд нужен для признака неисправимой ошибки (всего 2n-kячеек поk+1 разрядов).
3) kразрядов из памяти поступают на схему исправления ошибок (kопераций, выполняемых параллельно), а признак неисправимой ошибки передается получателю.
При этом, несмотря на значительное упрощение (2n-kячеек поk+1 разрядов против 2nячеек поk+1 разрядов), декодер остается эквивалентным декодеру максимального правдоподобия, рассмотренному в начале лекции.
Таким образом, если используется только обнаружение ошибок, код будет или обнаруживать 2n-2kконфигураций ошибок, а не обнаруживать 2k-1 конфигураций ошибок. Если используется исправление ошибок, то код будет исправлятьmконфигураций ошибок, обнаруживать, но не исправлять 2k(2n‑k‑m‑1) конфигураций ошибок, не обнаруживать 2k-1 конфигураций ошибок, и, наконец, обнаруживать, но не правильно исправлятьm(2k-1) конфигураций ошибок.
- «Дискретная математика».
- Тема 4. Ряд натуральных чисел. Рекуррентные формулы и функция следования. Принцип индукции. Примеры доказательств в формальной арифметике.
- Тема 5. Специальные виды бинарных отношений. Отношения эквивалентности. Классы эквивалентности. Разбиения.Примеры отношений эквивалентности.
- Тема 6. Специальные виды бинарных отношений: отношения порядка. Отрезки. Диаграммы Хассе.
- Тема 7. Модели теории графов. Определение простого графа. Способы задания простых графов. Отношения и матрицы смежности и инцидентности. Степень вершин простого графа и её свойства.
- Тема 8. Маршруты и циклы в простом графе.
- Тема 9. Размеченные графы. Вес рёбер и вес маршрута. Требования. Задача поиска кратчайшего маршрута. Алгоритм Флойда-Уоршалла.
- Тема 10. Планарные графы. Грани. Формула Эйлера. Полный граф. Двудольный граф. Полный двудольный граф. Необходимые и достаточные условия планарности.
- Тема 11. Бинарные алгебры с одной операцией: Отношение изоморфизма для бинарных алгебр.
- Тема 12. Бинарные алгебры с одной операцией: специальные свойства операций и специальные элементы.
- Тема 13. Моноиды. Степени элементов. Обратимость и сократимость. Особенности конечных моноидов.
- Тема 14. Алгебраические группы. Определение и свойства. Подгруппы. Конечные группы и циклические подгруппы степеней элементов.
- Тема 16. Двоичные групповые коды: постановка задачи повышения достоверности при передаче дискретной информации по ненадёжному каналу. Блоковое кодирование.
- Тема 17. Двоичные групповые коды: матричное кодирование, групповые свойства и таблица стандартной расстановки. Исправление ошибок.
- Тема 18. Алгебры с двумя бинарными операциями: классификация, кольца, области целостности и поля, свойства элементов.
- Тема 19. Конечные области целостности и поля. Поля простого порядка.Элементы, кратные единице. Характеристика поля.Векторное представление элементов поля. Характеристика и размерность.
- Тема 20. Кольцо многочленов с коэффициентами из поля. Операции над многочленами. Конечные поля: построение путём разложения на классы вычетов по модулю неприводимого многочлена.