9. лекция: групповые кодыОбъясняется, какой блочный код называется групповым. Математическое обоснование выводов. Упражнения для самопроверки. Совершенные и квазисовершенные коды. Их свойства. Полиномиальные коды. Частный случай полиномиальных кодов – циклические коды. Очень хорошее и доходчивое объяснение материала характерно для данной лекции Множество всех двоичных слов длины образует абелеву (коммутативную) группу относительно поразрядного сложения. Пусть - кодирующая -матрица, у которой есть -подматрица с отличным от нуля определителем, например, единичная. Тогда отображение переводит группу всех двоичных слов длины в группу кодовых слов длины . Предположим, что . Тогда для , , , получаем т.е. . Следовательно, взаимно-однозначное отображение группы двоичных слов длины при помощи заданной матрицы сохраняет свойства групповой операции, что означает, что кодовые слова образуют группу. Блочный код называется групповым, если его кодовые слова образуют группу. Если код является групповым, то наименьшее расстояние между двумя кодовыми словами равно наименьшему весу ненулевого слова. Это следует из соотношения . В предыдущем примере наименьший вес ненулевого слова равен 3. Следовательно, этот код способен исправлять однократную ошибку или обнаруживать однократную и двойную. При использовании группового кода незамеченными остаются те и только те ошибки, которые отвечают строкам ошибок, в точности равным кодовым словам. Такие строки ошибок переводят одно кодовое слово в другое. Следовательно, вероятность того, что ошибка останется необнаруженной, равна сумме вероятностей всех строк ошибок, равных кодовым словам. В рассмотренном примере вероятность ошибки равна . Рассмотрим задачу оптимизации декодирования группового кода с двоичной матрицей кодирования . Требуется минимизировать вероятность того, что . Схема декодирования состоит из группы всех слов, которые могут быть приняты (). Так как кодовые слова образуют нормальную (нормальность следует из коммутативности ) подгруппу , то множеству можно придать структуру таблицы: будем записывать в одну строку те элементы , которые являются членами одного смежного класса по . Первая строка, соответствующая нулевому слову из , будет тогда всеми кодовыми словами из , т.е. . В общем случае, если , то строка, содержащая (смежный класс ) имеет вид . Лидером каждого из таких построенных смежных классов называется слово минимального веса. Каждый элемент из однозначно представляется в виде суммы , где - лидер соответствующего смежного класса и . Множество классов смежности группы образуют фактор-группу, которая есть фактор-множество множества по отношению эквивалентности-принадлежности к одному смежному классу, а это означает, что множества, составляющие это фактор-множество, образуют разбиение . Отсюда следует, что строки построенной таблицы попарно либо не пересекаются, либо совпадают. Если в рассматриваемой таблице в первом столбце записать лидеры, то полученная таблица называется таблицей декодирования. Она имеет вид: То, что строк будет следует из теоремы Лагранжа1) , т.к. - это порядок фактор-группы , , . Декодирование слова состоит в выборе кодового слова в качестве переданного и последующем применении операции, обратной умножению на . Такая схема декодирования сможет исправлять ошибки. Для -кода из рассматриваемого примера таблица декодирования будет следующей: Первая строка в ней - это строка кодовых слов, а первый столбец - это лидеры. Чтобы декодировать слово , следует отыскать его в таблице и выбрать в качестве переданного слово в том же столбце и в первой строке. Например, если принято слово 110011 (2-я строка, 3-й столбец таблицы), то считается, что было передано слово 010011; аналогично, если принято слово 100101 (3-я строка, 4-й столбец таблицы), переданным считается слово 110101, и т.д. Групповое кодирование со схемой декодирования посредством лидеров исправляет все ошибки, строки которых совпадают с лидерами. Следовательно, вероятность правильного декодирования переданного по двоичному симметричному каналу кода равна сумме вероятностей всех лидеров, включая нулевой. В рассмотренной схеме вероятность правильной передачи слова будет . Кодовое слово любого столбца таблицы декодирования является ближайшим кодовым словом ко всем прочим словам данного столбца. Пусть переданное слово принято как , , т.е. это расстояние равно весу соответствующего лидера. Расстояние от до любого другого кодового слова равно весу их поразрядной суммы, т.е. т.к. - лидер смежного класса, к которому принадлежат как , так и . Доказано, при схеме декодирования лидерами по полученному слову берется ближайшее к нему кодовое. Упражнение 40 Для кодирующих матриц , : Построить соответственно -код и -код. Найти основные характеристики полученных кодов: минимальное расстояние между словами кода; вероятность необнаружения ошибки; максимальную кратность ошибок, до которой включительно они все исправляются или обнаруживаются. Построить таблицы декодирования. Уточнить характеристики полученных кодов, при использовании их для исправления ошибок, т.е. найти вероятность правильной передачи и описать ошибки, исправляемые этими кодами. Во что будут декодированы слова: 10001, 01110, 10101, 1001, 0110, 1101? Совершенные и квазисовершенные коды Групповой -код, исправляющий все ошибки веса, не большего , и никаких других, называется совершенным. Свойства совершенного кода1): Для совершенного -кода, исправляющего все ошибки веса, не большего , выполняется соотношение . Верно и обратное утверждение; Совершенный код, исправляющий все ошибки веса, не большего , в столбцах таблицы декодирования содержит все слова, отстоящие от кодовых на расстоянии, не большем . Верно и обратное утверждение; Таблица декодирования совершенного кода, исправляющего все ошибки в не более чем позициях, имеет в качестве лидеров все строки, содержащие не более единиц. Верно и обратное утверждение. Совершенный код - это лучший код, обеспечивающий максимум минимального расстояния между кодовыми словами при минимуме длины кодовых слов. Совершенный код легко декодировать: каждому полученному слову однозначно ставится в соответствие ближайшее кодовое. Чисел , и , удовлетворяющих условию совершенности кода очень мало. Но и при подобранных , и совершенный код можно построить только в исключительных случаях. Если , и не удовлетворяют условию совершенности, то лучший групповой код, который им соответствует называется квазисовершенным, если он исправляет все ошибки кратности, не большей , и некоторые ошибки кратности . Квазисовершенных кодов также очень мало. Двоичный блочный -код называется оптимальным, если он минимизирует вероятность ошибочного декодирования. Совершенный или квазисовершенный код - оптимален. Общий способ построения оптимальных кодов пока неизвестен. Для любого целого положительного числа существует совершенный -код, исправляющий одну ошибку, называемый кодом Хэмминга (Hamming), в котором и . Действительно, . Порядок построения кода Хэмминга следующий: Выбираем целое положительное число . Сообщения будут словами длины , а кодовые слова - длины ; В каждом кодовом слове бит с индексами-степенями двойки - являются контрольными, остальные - в естественном порядке - битами сообщения. Например, если , то биты - контрольные, а - из исходного сообщения; Строится матрица из строк и столбцов. В -ой строке стоят цифры двоичного представления числа . Матрицы для r=2, 3 и 4 таковы: Записывается система уравнений , где - матрица из предыдущего пункта. Система состоит из уравнений. Например, для : Чтобы закодировать сообщение , берутся в качестве , не равно степени двойки, соответствующие биты сообщения и отыскиваются, используя полученную систему уравнений, те , для которых - степень двойки. В каждое уравнение входит только одно , . В выписанной системе входит в 1-е уравнение, - во второе и - в третье. В рассмотренном примере сообщение будет закодировано кодовым словом . Декодирование кода Хэмминга проходит по следующей схеме. Пусть принято слово , где - переданное кодовое слово, а - строка ошибок. Так как , то . Если результат нулевой, как происходит при правильной передаче, считается, что ошибок не было. Если строка ошибок имеет единицу в -й позиции, то результатом произведения будет -я строка матрицы или двоичное представление числа . В этом случае следует изменить символ в -й позиции слова , считая позиции слева, с единицы. Пример. -код Хэмминга имеет в качестве одного из кодовых слов . Матрица приведена на шаге 3 хода построения кода Хэмминга. Ясно, что . Добавим к строку ошибок . Тогда и , т.е. ошибка находится в третьей позиции. Если , то и позиция ошибки - и т.п. Если ошибка допущена в более чем в одной позиции, то декодирование даст неверный результат. Код Хэмминга - это групповой код. Это следует из того, что -код Хэмминга можно получить матричным кодированием, при помощи -матрицы, в которой столбцы с номерами не степенями 2 образуют единичную подматрицу. Остальные столбцы соответствуют уравнениям шага 4 построения кода Хэмминга, т.е. 1-му столбцу соответствует уравнение для вычисления 1-го контрольного разряда, 2-му - для 2-го, 4-му - для 4-го и т.д. Такая матрица будет при кодировании копировать биты сообщения в позиции не степени 2 кода и заполнять другие позиции кода согласно схеме кодирования Хэмминга. Пример. Кодирующая матрица для -кода Хэмминга - Ее столбцы с номерами 3, 5, 6 и 7 образуют единичную подматрицу. Столбцы с номерами 1, 2 и 4 соответствуют уравнениям для вычисления контрольных бит, например, уравнению соответствует столбец 1101, т.е. для вычисления первого контрольного разряда берутся 1, 2 и 4 биты исходного сообщения или биты 3, 5 и 7 кода. К -коду Хэмминга можно добавить проверку четности. Получится -код с наименьшим весом ненулевого кодового слова 4, способный исправлять одну и обнаруживать две ошибки. Коды Хэмминга накладывают ограничения на длину слов сообщения: эта длина может быть только числами вида : 1, 4, 11, 26, 57, Но в реальных системах информация передается байтам или машинными словами, т.е. порциями по 8, 16, 32 или 64 бита, что делает использование совершенных кодов не всегда подходящим. Поэтому в таких случаях часто используются квазисовершенные коды. Квазисовершенные -коды, исправляющие одну ошибку, строятся следующим образом. Выбирается минимальное так, чтобы Каждое кодовое слово такого кода будет содержать контрольных разрядов. Из предыдущих соотношений следует, что Каждому из разрядов присваивается слева-направо номер от 1 до . Для заданного слова сообщения составляются контрольных сумм по модулю 2 значений специально выбранных разрядов кодового слова, которые помещаются в позиции-степени 2 в нем: для выбираются разряды, содержащие биты исходного сообщения, двоичные числа-номера которых имеют в -м разряде единицу. Для суммы это будут, например, разряды 3, 5, 7 и т.д., для суммы - 3, 6, 7 и т.д. Таким образом, для слова сообщения будет построено кодовое слово . Обозначим сумму по модулю 2 разрядов полученного слова, соответствующих контрольной сумме и самой этой контрольной суммы. Если , то считается, что передача прошла без ошибок. В случае одинарной ошибки будет равно двоичному числу-номеру сбойного бита. В случае ошибки, кратности большей 1, когда , ее можно обнаружить. Подобная схема декодирования не позволяет исправлять некоторые двойные ошибки, чего можно было бы достичь, используя схему декодирования с лидерами, но последняя значительно сложнее в реализации и дает незначительное улучшение качества кода. Пример построения кодового слова квазисовершенного -кода, исправляющего все однократные ошибки, для сообщения 100011010. Искомое кодовое слово имеет вид . Далее нужно вычислить контрольные суммы. Таким образом, искомый код - 0011000111010. Если в процессе передачи этого кода будет испорчен его пятый бит, то приемник получит код 0011100111010. Для его декодирования опять вычисляются контрольные суммы: Приемник преобразует изменением пятого бита полученное сообщение в отправленное передатчиком, из которого затем отбрасыванием контрольных разрядов восстанавливает исходное сообщение. Совершенный код Хэмминга также можно строить по рассмотренной схеме, т.к. для него . Для исправление одинарной ошибки к 8-разрядному коду достаточно приписать 4 разряда (), к 16-разрядному - 5, к 32-разрядному - 6, к 64-разрядному - 7. Упражнение 41 Может ли -код, минимальное расстояние между кодовыми словами которого 5, быть совершенным? Упражнение 42 Построить кодовые слова квазисовершенного -кода, исправляющего однократные ошибки, для тех сообщений, которые соответствуют числам 55, 200 и декодировать слова 1000001000001, 1100010111100, полученные по каналу связи, использующему этот код. Полиномиальные коды При полиномиальном кодировании каждое сообщение отождествляется с многочленом, а само кодирование состоит в умножении на фиксированный многочлен. Полиномиальные коды - блочные и отличаются от рассмотренных ранее только алгоритмами кодирования и декодирования. Пусть - двоичное сообщение. Тогда сопоставим ему многочлен . Все вычисления происходят в поле классов вычетов по модулю 2, т. е. от результата любой арифметической операции берется остаток от его деления на 2. Например, последовательности 10011 при соответствует многочлен . Зафиксируем некоторый многочлен степени , Полиномиальный код с кодирующим многочленом кодирует слово сообщения многочленом или кодовым словом из коэффициентов этого многочлена . Условия и необходимы, потому что в противном случае и не будут нести никакой информации, т.к. они всегда будут нулями. Пример. Рассмотрим кодирующий многочлен . Сообщение 01011, отвечающее многочлену , будет закодировано коэффициентами многочлена , т.е. . Полиномиальный код с кодирующим многочленом степени является матричным кодом с кодирующей матрицей размерности : Т е. ненулевые элементы в -й строке - это последовательность коэффициентов кодирующего многочлена, расположенных с -го по -й столбцах. Например, -код с кодирующим многочленом отвечает матрице или отображению: ; ; ; ; ; ; ; . Полиномиальные коды являются групповыми. Это следует из того, что коды, получаемые матричным кодированием, - групповые. Рассмотрим -код с кодирующим многочленом . Строка ошибок останется необнаруженной в том и только в том случае, если соответствующий ей многочлен делится на . Действительно, делится на тогда и только тогда, когда делится на . Поэтому любая ошибка, многочлен которой не делится на , будет обнаружена и, соответственно, любая ошибка, многочлен которой делится на , не может быть обнаружена. Таким образом, обнаружение ошибки при использовании полиномиального кода с кодирующим многочленом может быть реализовано при помощи алгоритма деления многочленов с остатком: если остаток ненулевой, то при передаче произошло искажение данных. Коды Хэмминга можно строить как полиномиальные, например, кодирующий многочлен определяет совершенный -код, отличный от рассмотренного ранее. Вообще же, если кодирующий многочлен , порождающий соответствующий -код, не является делителем ни одного из многочленов вида при , то минимальное расстояние между кодовыми словами порожденного им кода не меньше 3. Пусть - минимальное расстояние между кодовыми словами, оно равно минимуму среди весов ненулевых кодовых слов. Предположим . Тогда существует такой, что |
| Оглавление| |