Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: Научного журнала «Студенческий» № 24(44)

Рубрика журнала: Информационные технологии

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6, скачать журнал часть 7

Библиографическое описание:
Михайлов С.А., Лохов А.К. ЦИКЛИЧЕСКИЕ КОДЫ // Студенческий: электрон. научн. журн. 2018. № 24(44). URL: https://sibac.info/journal/student/44/126739 (дата обращения: 16.04.2024).

ЦИКЛИЧЕСКИЕ КОДЫ

Михайлов Станислав Александрович

магистрант, Институт Микроприборов и систем управления, Национальный исследовательский университет «МИЭТ»,

РФ, г. Москва

Лохов Алексей Константинович

магистрант, Институт Микроприборов и систем управления, Национальный исследовательский университет «МИЭТ»,

РФ, г. Москва

Циклические коды относят к эффективным кодам, способным обнаружить одиночные ошибки и пачки ошибок, а также кратные ошибки. Данные коды надежны и могут применяться при блочной синхронизации, при которой выделение, к примеру, бита нечетности было бы затруднительно.

Один из способов циклического кодирования - умножение исходного кода на образующий полином , а декодирования - деление на . Остаток при делении должен равняться нулю, в противном случае – ошибка. Сигнал об ошибке поступает сразу на передатчик, вызывая повторную передачу [1].

Вектор сообщения можно записать следующим образов:

                        (1)

В данной систематической форме символы сообщения используются как часть кодового слова. И можно сдвинуть символы сообщения в  крайних правых разряда кодового слова, а затем прибавить биты четности, разместив их в крайние левые  разряды. Благодаря этому, происходит алгебраическая манипуляция полинома сообщения, и он будет сдвинутым вправо на  позиций. Если перемножить  на , то получится сдвинутый вправо полином сообщения:

                   (2)

При делении на  получим:

                                       (3)

где  - остаток, записанный в виде:

                          (4)

Данный остаток также можно записать следующим образом:

                                          (5)

Если прибавить  к уравнению (3), а затем использовать сложение по модулю 2, то получим:

                                    (6)

Данное кодовое слово можно записать через члены полинома:

.(7)

А полином кодового слова будет соответствовать вектору кода

                              (8)

где  - бит четности - , а  - бит сообщения - .

Алгебраическое описание циклического кода дается следующей теоремой.

Теорема. В алгебре классов вычетов по модулю многочлена  подпространство  является циклическим тогда и только тогда, когда  содержит все классы вычетов, представители которых кратны некоторому многочлену . Более того, многочлен  является делителем многочлена .

Доказательство. Достаточность. Пусть  - многочлен степени меньше , и  содержит все двоичные наборы, соответствующие классам вычетов по модулю , представители которых кратны многочлену . Рассмотрим произвольный вектор . Пусть двоичный вектор соответствует классу с представителем , который делится на . Тогда, циклический сдвиг вектора  соответствует классу с представителем . Так как многочлен  также делится на , то циклический сдвиг вектора  принадлежит коду , т. е.  - циклическое подпространство.

Необходимость. Пусть  - циклическое подпространство, и  -многочлен наименьшей степени, такой, что двоичный вектор, соответствующий классу вычетов принадлежит коду . Рассмотрим произвольный двоичный вектор , который соответствует классу вычетов с представителем  [1].

Многочлен  можно разделить на многочлен  таким образом, что степень остатка меньше степени многочлена, т. е. , где . Так как циклический код V является линейным, то двоичный вектор, соответствующий классу вычетов  принадлежит коду , и, следовательно, двоичный вектор, соответствующий классу вычетов  также принадлежит коду . Так как  - многочлен наименьшей степени с таким свойством, то , т. е. многочлен  делится на . Поскольку двоичный вектор , соответствующий классу вычетов , принадлежит любому линейному коду, то на  делится и многочлен .

Таким образом, любой циклический код задается некоторым многочленом , на который делится многочлен . Многочлен  называется порождающим многочленом циклического кода [2].

Пример: Рассмотрим циклический код длины 7. Многочлен  можно разложить на неприводимые многочлены следующим образом: . Согласно предыдущей теореме, все циклические коды исчерпываются кодами, порожденным многочленами .

Рассмотрим код, порожденный многочленом . Существует ровно 24 различных многочленов степени меньше 4, которые при умножении на многочлен  дают многочлен степени меньше 7. Перепишем эти многочлены: и соответственно, циклический код, порожденный многочленом есть код  = {0000000, 0001101, 0011010, 0010111, 0110100, 0111001, 0101110, 0100011, 1101000, 1100101, 1110010, 1111111, 1011100, 1010001, 1000110, 1001011}.

Можно показать, что циклический код , порожденный многочленом  степени  имеет размерность . Для этого достаточно рассмотреть двоичные векторы, которые соответствуют классам вычетов . Эти векторы являются линейно независимыми, так как любая их линейная комбинация с коэффициентами из поля {0,1}, в которой хотя бы один их коэффициентов не равен 0, определяет многочлен степени меньше , который по этой причине не может делиться на многочлен , и следовательно, любая линейная комбинация  с коэффициентами из поля {0,1}, в которой хотя бы один их коэффициентов не равен 0, не равна .

Таким образом, многочлен  степени , который является делителем многочлена , порождает циклический -код. В порождающую матрицу этого кода можно записать векторы, соответствующие классам  [3].

Пример: Действительно, код, рассмотренный в предыдущем примере, имеет базисные векторы 0001101, 0011010, 0110100, 1101000, соответствующие классам вычетов , т. е. имеет размерность 4. Порождающая матрица имеет вид:

Для задания проверочной матрицы циклического кода , порожденного многочленом , используется частное  от деления многочлена  на многочлен . Строится порождающая матрица для кода, порожденного многочленом , и ее вектор-строки записываются в обратном порядке. Полученная матрица и будет проверочной матрицей для исходного кода .

Пример: Для циклического (7,4)-кода, порожденного многочленом  . Порождающая матрица для кода, порожденного многочленом , имеет вид:+

Переписываем ее строки в обратном порядке и получаем проверочную матрицу циклического кода, порожденного многочленом :

 

Список литературы:

1.Вернер М. Основы кодирования. Учебник для ВУЗов. — М.: Техносфера, 2004. – 288 с.

2.Виснадул Б.Д. Основы компьютерных сетей. — М.: Форум: Инфра - М, 2007. – 272 с.

3.Таненбаум Э. Компьютерные сети. Учебное пособие. 4-е изд. — СПб.: Питер, 2003. – 992 с.: ил.

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.