Стандартное расположение группового кода представляет собой показанное в таблице 2 разложение множества (группы) всех возможных
–элементных слов, представляющих собой группу, на смежные классы по подгруппе из
кодовых слов, составляющих (
,
)–код, т. е. по подгруппе, включающей в себя все разрешенные комбинации (
,
)–кода.
Таблица 2

Размешенные в первом столбце кодовые слова называются образующими (лидерами) смежных классов. В стандартном расположении кода они выбираются так, чтобы в их состав входили наиболее вероятные образцы ошибок в кодовом слове.
Пример: код (5,2)
,
, а его стандартное расположение имеет вид:
00000 10111 01101 11010 – разрешенные кодовые комбинации

Код (5,2) имеет
= 3. Он гарантирует исправление одиночных ошибок, конфигурация которых дана в первом столбце. Процедура исправления ошибок может быть следующей: Принятое кодовое слово анализируют (путем перебора и сопоставления с ним всех слов, находящихся в таблице стандартного расположения) и определяют, в каком столбце оно находится, а затем, в качестве исправленного кодового слова берут слово, находящееся в верхней строке.
Если длина кода большая и таблица стандартного расположения также большая, пользоваться таким алгоритмом неудобно, поэтому при декодировании используют таблицу синдромов, представляющую собой список образцов ошибок и список соответствующих синдромов, которые однозначно характеризуют каждый смежный класс.
Такую таблицу, например, можно составить на основе проверочной матрицы кода (5,2)
. Столбцы этой матрицы совпадают со значениями синдрома, соответствующего наличию ошибки в разряде с номером, равном номеру этого столбца (см. свойство 8). Эта таблица синдромов будет иметь вид:
| Значение синдрома | Образец ошибки |
Таким образом, с помощью этой таблицы по синдрому можно определить вид лидера смежного класса, совпадающего с образцом ошибки, которому принадлежит принятая комбинация. Для исправления ошибки теперь достаточно сложить (для двоичного кода – по модулю 2) принятую комбинацию с найденным лидером смежного класса.
Коды Хемминга
Коды Хэмминга – класс двоичных блочных кодов, которые имеют следующие параметры:
, (1)
где 
Минимальное кодовое расстояние этих кодов
= 3, поэтому они способны исправлять все одиночные ошибки или обнаруживать все ошибочные комбинации из двух или менее ошибок в блоке.
Коды Хэмминга являются одним из немногочисленных известных классов совершенных или плотно упакованных кодов, для которых в выражении, определяющем границу Хэмминга, имеет место равенство:
, (2)
где 
Подставив в выражение (2)
= 1 (т. к. код Хэмминга исправляет лишь одиночные ошибки), получаем:



(3)
В соответствии с (1), для кода Хэмминга
, поэтому равенство (3) очевидно справедливо.
Таким образом, коды Хэмминга имеют наименьшее возможное при заданной длине кодовой комбинации
количество проверочных разрядов
, которое обеспечивает минимальное кодовое расстояние
= 3, позволяющее гарантированно исправлять все ошибки единичной кратности. При этом, при заданном
и одном и том же числе проверочных разрядов, они позволяют максимизировать число
.
Вычисляя в соответствии с формулой (1), можно получить следующие разряды размерностей кода Хэмминга: (7,4), (15,11), (31,26)…
С увеличением
и
, кодовое расстояние
, а следовательно, исправляющая способность
не увеличивается, но растет скорость кода
.
Проверочная матрица кода Хэмминга имеет
строк и
столбцов, причем столбцами являются все возможные, отличные друг от друга ненулевые последовательности.
Пример: для кода Хэмминга (7,4)

В канонической форме проверочная матрица выглядит так:
, отсюда вытекает следующее правило построения канонической формы поверочной матрицы (
,
)–кода Хэмминга.
Так же, как для любого блочного линейного кода:
, где
- единичная матрица,
- прямоугольная матрица, столбцами которой являются все возможные разные
–разрядные комбинации двоичного кода, не совпадающие с кодовыми словами, имеющими место в столбцах матрицы
.
Транспонируя полученную таким образом
, можно получить матрицу
, а по ней построить порождающую матрицу:

Проверочная матрица любого кода Хэмминга всегда содержит как минимум 3 линейно независимых столбца, поэтому кодовое расстояние всегда равно 3. Если столбцы проверочной матрицы представляют упорядоченную запись десятичных чисел в двоичной форме, то вычисленный синдром
однозначно указывает на номер позиции искаженного символа (представляет собой двоичное представление номера искаженного символа).

1 2... 7
Пусть передано кодовое слово 1100110. Предположим, что ошибка в 4 разряде: 110 1 110, тогда:
– код числа 4, следовательно, ошибка в 4 разряде.
Следует отметить, что соответствующий упорядоченной проверочной матрице код является несистематическим. Проверочная матрица в упорядоченном виде позволяет записать совокупность проверочных уравнений, в которых проверочные символы занимают позиции с номерами
, 
Для кода Хэмминга (7,4):

Первый проверочный символ
занимает позицию
в нижней строке матрицы. Местоположение других единиц в этой строке определяет значение индексов слагаемых в правой части первого уравнения. Второй символ
занимает позицию
во второй строке. Значения индексов слагаемых в правой части второго уравнения определяется положением других единиц в этой строке. Третий символ
занимает позицию
в четвертой строке матрицы. Значения индексов слагаемых в правой части третьего уравнения определяется положением единиц в этой сроке. При этом элементы синдрома могут быть определены из соотношения:

В том случае, если проверочная матрица задана в систематическом виде, синдром определяется по общему правилу:
, а местоположение ошибки определяется, как номер столбца в матрице
, совпадающего со значением синдрома (см. свойство 8 линейных блочных кодов п. 2.2.2).
Корректирующая способность кода Хэмминга может быть увеличена введением дополнительной проверки на четность. В этом случае проверочная матрица для рассматриваемого кода (7,4) будет иметь вид:
, следовательно
= 4.
Циклические коды
Основные понятия
Циклическим кодом называется линейный блочный (n,k) -код, для которого циклический сдвиг влево на один разряд любого разрешенного кодового слова дает также разрешенное кодовое слово.
Множество кодовых слов циклического кода может быть представлено совокупностью многочленов степени (n-1) и менее, делящихся на некоторый многочлен g(x) степени r=n-k, являющийся сомножителем двучлена xn+1.
Многочлен g(x) называется порождающим.
Многочленом над полем GF(q) называется математическое выражение вида:
,
где n – длина кода,
- коэффициенты из поля GF(q).
Если код построен над полем GF(2), то коэффициенты принимают значения 0 или 1 и код называется двоичным.
Пример: если кодовое слово циклического кода
то соответствующий ему многочлен -
.
Степень числа x указывает положение соответствующего элемента кодовой комбинации, а коэффициенты многочлена определяют значение этих элементов.
Кодовые комбинации q -ного кода можно интерпретировать многочленом над полем GF(q).
Длина циклического кода называется примитивной и сам код называется примитивным, если его длина n=qm-1, где m – целое.
Если длина кода меньше длины примитивного кода, то код называется укороченным или непримитивным.
Как следует из определения общее свойство кодовых слов циклического кода – это их делимость без остатка на некоторый многочлен g(x), называемый порождающим.
Результатом деления двучлена xn+1 на многочлен g(x) является проверочный многочлен h(x):

При декодировании циклических кодов используются многочлен ошибок e(x) и синдромный многочлен S(x).
Многочлен ошибок степени не более (n-1) определяется из выражения:
,
где
и
- многочлены, отображающие соответственно принятое (с ошибкой) и переданное кодовые слова.
Ненулевые коэффициенты в е(x) занимают позиции, которые соответствуют ошибкам.
Пример:

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


Синдромный многочлен зависит только от многочлена ошибок е(х). Это положение используется при построении таблицы синдромов, применяемой в процессе декодирования. Эта таблица содержит список многочленов ошибок и список соответствующих синдромов, определяемых из выражения:

| е(х) | S(x) |
| 1 | Rg(x)[1] |
| X | Rg(x)[x] |
| X2 | Rg(x)[x2] |
| · | · |
| · | · |
| · | · |
| X+1 | Rg(x)[x+1] |
| X2+1 | Rg(x)[x2+1] |
| · | · |
| · | · |
| · | · |
В процессе декодирования по принятому кодовому слову вычисляется синдром S(x), затем в таблице находится соответствующий многочлен е(х), суммирование которого с принятым кодовым словом дает исправленное кодовое слово:

Многочлены можно складывать, умножать и делить, используя известные правила алгебры, но с приведением результата по mod 2, а затем по mod (xn+1), если степень результата превышает степень (n-1).
Пример:


Допустим, что длина кода n=7, то результат приводим по mod (x7+1).

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







