Количественная оценка информации. ЛекцииРефераты >> Программирование и компьютеры >> Количественная оценка информации. Лекции
Если в принятом коде есть ошибка, то результаты проверок по контрольным позициям образуют двоичное число, указывающее номер ошибочной позиции. Исправляют ошибку, изменяя символ ошибочной позиции на обратный.
Для исправления одиночной и обнаружения двойной ошибки, кроме проверок по контрольным позициям, следует проводить еще одну проверку на четность для каждого кода. Чтобы осуществить такую проверку, следует к каждому коду в конце кодовой комбинации добавить контрольный символ таким образом, чтобы сумма единиц в полученной комбинации всегда была четной. Тогда в случае одной ошибки проверки по позициям укажут номер ошибочной позиции, а проверка на четность укажет наличие ошибки. Если проверки позиций укажут на наличие ошибки, а проверка на четность не фиксирует ошибки, значит в коде две ошибки
Циклические коды
Циклические коды [4, 6, 7, 9, 12, 13] названы так потому, что в них часть комбинаций кода либо все комбинации могут быть получены путем циклического сдвига одной или нескольких комбинаций кода. Циклический сдвиг осуществляется справа налево, причем крайний левый символ каждый раз переносится в конец комбинации. Циклические коды, практически[13], все относятся к систематическим кодам, в них контрольные и информационные разряды расположены на строго определенных местах. Кроме того, циклические коды относятся к числу блочных кодов. Каждый блок (одна буква является частным случаем блока) кодируется самостоятельно.
Идея построения циклических кодов базируется на использовании неприводимых в поле[14] двоичных чисел многочленов. Неприводимыми называются многочлены, которые не могут быть представлены в виде произведения многочленов низших степеней с коэффициентами из того же поля, так же, как простые числа не могут быть представлены произведением других чисел. Иными словами, неприводимые многочлены делятся без остатка только на себя или на единицу.
Неприводимые многочлены в теории циклических кодов играют роль образующих (генераторных, производящих) многочленов. Если заданную кодовую комбинацию умножить на выбранный неприводимый многочлен, то получим циклический код, корректирующие способности которого определяются неприводимым многочленом.
Предположим, требуйся закодировать одну из комбинаций четырехзначного двоичного кода. Предположим также, что эта комбинация - . Пока не обосновывая свой выбор, берем из таблицы неприводимых многочленов (табл. 2, приложение 9) в качестве образующего многочлен . Затем умножим на одночлен той же степени, что и образующий многочлен. От умножения многочлена на одночлен степени п степень каждого члена многочлена повысится на , что эквивалентно приписыванию нулей со стороны младших разрядов многочлена. Так как степень выбранного неприводимого многочлена равна трем, то исходная информационная комбинация умножается на одночлен третьей степени:
Это делается для того, чтобы впоследствии на месте этих нулей можно было бы записать корректирующие разряды.
Значение корректирующих разрядов находят по результатуотделения на :
или
Таким образом,
или в общем виде
(75)
где - частное, a - остаток от деления на .
Так как в двоичной арифметике , а значит, , то можно при сложении двоичных чисел переносить слагаемые из одной части равенства в другую без изменения знака (если это удобно), поэтому равенство вида можно записать и как и как . Все три равенства в данном случае означают, что либо и равны 0, либо а и равны 1, т. е. имеют одинаковую четность.
Таким образом, выражение (75) можно записать как
(76)
что в случае нашего примера даст
или
Многочлен 1101001 и есть искомая комбинация, где 1101 - информационная часть, а 001 - контрольные символы. Заметим, что искомую комбинацию мы получили бы и как в результате умножения одной из комбинаций полного четырехзначного двоичного кода (в данном случае 1111) на образующий многочлен, так и умножением заданной комбинации на одночлен, имеющий ту же степень, что и выбранный образующий многочлен (в нашем случае таким образом была получена комбинация 1101000) с последующим добавлением к полученному произведению остатка от деления этого произведения на образующий многочлен (в нашем примере остаток имел вид 001).
Таким образом, мы уже знаем два способа образования комбинаций линейных систематических кодов, к которым относятся и интересующие нас циклические коды. Эти способы явились теоретическим основанием для построения кодирующих и декодирующих устройств.
Шифраторы циклических кодов, в том или ином виде, построены по принципу умножения двоичных многочленов. Кодовые комбинации получаются в результате сложения соседних комбинаций по модулю два, что, как мы увидим ниже, эквивалентно умножению первой комбинации на двучлен .
Итак, комбинации циклических кодов можно представлять в виде многочленов, у которых показатели степени соответствуют номерам разрядов, коэффициенты при х равны 0 или 1 в зависимости от того, стоит 0 или 1 в разряде кодовой комбинации, которую представляет данный многочлен. Например,