Стандартное расположение группового кода

Стандартное расположение группового кода представляет собой показанное в таблице 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).

 

 

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

Пример:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: