Циклічний код
Циклічний код - лінійний код, що володіє властивістю циклічності, тобто кожна циклічна перестановка кодового слова також є кодовим словом. Використовується для перетворення інформації для захисту її від помилок (див. Виявлення і виправлення помилок).
1. Введення
Нехай слово довжини n над алфавітом з елементів кінцевого поля
і
поліном, що відповідає цьому слову, від формальної змінної
. Видно, що це відповідність не просто взаимнооднозначное, але й ізоморфне. Так як "слова" складаються з літер з поля, то їх можна складати і множити (поелементно), причому результат буде в тому ж полі. Поліном, відповідний лінійної комбінації
пари слів
і
, Дорівнює лінійної комбінації поліномів цих слів
Це дозволяє розглядати безліч слів довжини n над кінцевим полем як лінійний простір поліномів зі ступенем не вище n-1 над полем
2. Алгебраїчне опис
Якщо кодове слово, що виходить циклічним зсувом на один розряд вліво з слова
, То відповідний йому поліном
виходить з попереднього множенням на x:
, Користуючись тим, що
,
Зсув вправо і вліво відповідно на розрядів:
Якщо - Довільний поліном над полем
і
- Кодове слово циклічного
коду, то
теж кодове слово цього коду.
2.1. Породжує поліном
Визначення породжує поліномом циклічного коду
називається такий ненульовий поліном
з
, Ступінь якого найменша і коефіцієнт при старшій ступеня
.
Теорема 1
Якщо - Циклічний
код та
- Його породжує поліном, тоді ступінь
дорівнює
і кожне кодове слово може бути єдиним чином представлено у вигляді
,
де ступінь менше або дорівнює
.
Теорема 2
- Породжує поліном циклічного
коду є дільником двочлена
Наслідки: таким чином в якості породжує полінома можна вибирати будь поліном, дільник . Ступінь обраного полінома буде визначати кількість перевірочних символів
, Число інформаційних символів
.
2.2. Породжує матриця
Поліноми лінійно незалежні, інакше
при ненульове
, Що неможливо.
Значить кодові слова можна записувати, як і для лінійних кодів, таким чином:
, Де
є породжує матрицею,
- Інформаційним поліномом.
Матрицю можна записати в символьній формі:
2.3. Перевірочна матриця
Для кожного кодового слова циклічного коду справедливо . Тому перевірочну матрицю можна записати як:
Тоді:
3. Кодування
3.1. Несистематичне
При несистематичний кодуванні кодове слово виходить у вигляді твори інформаційного полінома на породжує
.
Воно може бути реалізоване за допомогою перемножителя поліномів.
3.2. Систематичне
При систематичному кодуванні кодове слово формується у вигляді інформаційного подблока і перевірочного
Нехай інформаційне слово утворює старші ступеня кодового слова, тоді
Тоді з умови , Слід
Це рівняння і задає правило систематичного кодування. Воно може бути реалізоване за допомогою багатотактного лінійних фільтрів (МЛФ)
4. Приклади
4.1. Двійковий (7,4,3) код
В якості подільника виберемо породжує поліном третього ступеня
, Тоді отриманий код буде мати довжину
, Число перевірочних символів (ступінь породжує полінома)
, Число інформаційних символів
, Мінімальна відстань
.
Породжує матриця коду:
,
де перший рядок являє собою запис полінома коефіцієнтами за зростанням ступеня. Решта рядків - циклічні зрушення першого рядка.
Перевірочна матриця:
,
де i-ий стовпець, починаючи з 1-ого, являє собою залишок від ділення на поліном
, Записаний за зростанням ступенів, починаючи зверху.
Так, наприклад, 4-ий стовпець виходить , Або у векторній записи
.
Легко переконатися, що .
4.2. Двійковий (15,7,5) БЧХ код
В якості породжує полінома можна вибрати твір двох дільників
:
.
Тоді кожне кодове слово можна отримати за допомогою твору інформаційного полінома зі ступенем
таким чином:
.
Наприклад, інформаційномуслову відповідає поліном
, Тоді кодове слово
, Або у векторному вигляді