
125 Кібербезпека / 4 Курс / 4.2_Управління інформаційною безпекою / Лiтература / V_P_Babak_A_A_Kliuchnykov-Teoreticheskye_osnovy_zashchity_informat
...pdf
ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
(111), и наоборот. Итак, d |
H |
000 , 111 3. Поскольку в этом коде только |
||||||
|
|
|
|
|||||
два кодовых слова, то dmin |
3. |
|
|
|||||
Двоичное векторное пространство V2 обычно называют хэмминговым |
||||||||
пространством. Пусть v - кодовое слово кода C. Хэмминговой сферой |
St (v) |
|||||||
радиуса t с центром в точке v есть множество векторов (точек) в V2 , |
кото- |
|||||||
рые находятся от этого центра на расстоянии, меньшем или равным t : |
|
|||||||
|
St (v) x C |
|
dH (x,v) t . |
(7.18) |
||||
|
|
|||||||
Заметим, что количество слов (векторов) в St (v) : |
|
|||||||
|
|
|
|
|
|
t |
n |
|
|
|
|
St (v) |
|
. |
(7.19) |
||
|
|
|
|
|
|
i 0 |
i |
|
Пример 7.11. Хэмминговы сферы радиуса t 1, которые окружают кодовые слова (3, 1, 3) двоичного кода-повторения, изображены на рис. 7.25.
X 2 |
X |
2 |
X 0 |
X |
X1 |
X 1 |
S1 (000) |
S1 (111) |
Рис. 7.25. Хэмминговы сферы радиуса t 1, окружающие кодовые слова (3,1,3) двоичного кода-повторения
Укажем, что Хэмминговы сферы для этого кода не пересекаются, т.е. в пространстве V2 нет векторов (или вершин в единичном трехмерном кубе),
принадлежащих одновременно S1(000) и S1 (111). Соответственно, если изменить любую одну позицию кодового слова v, то образуется вектор, который останется внутри хэмминговой сферы с центром в v. Эта идея принципиальна для понимания и определения корректирующей способности кода.
Корректирующей способностью t |
кода C называют наибольший ра- |
|||||||||
диус хэмминговой сферы St (v) |
для всех кодовых слов v C, |
такой, при ко- |
||||||||
тором для любых разных пар vi , |
vj |
C, |
соответствующие им хэмминговы |
|||||||
сферы не пересекаются, т.е. |
|
|
|
|
|
|
j |
|
|
|
|
|
|
|
|
|
|||||
t max l |
S (v ) |
|
S (v |
) 0,v v |
. |
(7.20) |
||||
|
|
l |
i |
|
l |
j |
i |
|
|
|
Это отвечает более распространенному определению |
|
|||||||||
t d |
min |
1 |
/ 2 , |
|
|
(7.21) |
||||
|
|
|
|
|
|
|
|
|
|
530

Глава 7. Кодирование информации
где x - целая часть x, т.е. целое число, которое не превышает x.
Заметим, что для определения минимального кодового расстояния произвольного блочного кода C необходимо вычислить все 2k (2k 1) расстоя-
ния между разными парами кодовых слов. Это практически невозможно даже для сравнительно коротких кодов, например из k 50. Одной из важных преимуществ линейных блочных кодов является то, что для вычисления dmin
достаточно знать только хэмминговы весы 2k 1 ненулевых кодовых слов.
7.3. Блочное помехоустойчивое кодирование
Линейное блочное кодирование. Построение оптимального кода означает поиск в V2 подмножества элементов, наиболее отдаленных один от дру-
гого. Это сильно сложная задача. Более того, если даже это сделано, то остается невыясненным, как назначить кодовые слова информационным сообщениям. Приведем общую классификацию блочного помехоустойчивого кодирования (рис. 7.26).
|
Блочное кодирование |
|
|
Линейное кодирование |
Полиномное кодирование |
Циклические коды |
|
Коды Хэмминга |
Код Рида-Соломона |
Сокращенные |
|
циклические |
|||
|
|
||
Код Гелея |
Код Рида-Малера |
Боуза-Чоудхури- |
|
Хоквенгема |
|||
|
|
||
|
Булевы полиномы |
Коды с контролем |
|
|
|
||
|
|
избыточности (СRC) |
|
|
|
Коды с последовательной |
|
|
|
максимальной длиной |
|
|
|
(МLS) |
|
Рис. 7.26. Классификация блочного помехоустойчивого кодирования |
Линейный код (множество кодовых слов) является векторным подпространством в пространстве V2 . Это означает, что операция кодирования мо-
жет быть умножением на матрицу. Правила добавления и умножения двоичных чисел приведены в табл. 7.11.
Пусть С - двоичный линейный код (n, k, dmin ). Поскольку С представляет собой k-измеримое подпространство, то он имеет базис, например
531

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
(v0 , v1,..., vk 1 ), такой, при котором любое кодовое слово |
v C можно запи- |
сать как линейную комбинацию элементов этого базиса |
|
v u0v0 u1v1 ... uk 1vk 1, |
(7.22) |
где ui 0,1 , 0 i k. Уравнение (7.22) можно дать в матричной форме через
породную матрицу G и вектор-сообщение u (u0 v uG,
где
|
|
v |
|
|
|
v |
v |
|
|
0 |
|
|
|
0,0 |
0,1 |
G |
|
v1 |
|
|
|
v1,0 |
v1,1 |
|
|
|
|
|
|
||
|
|
|
|
|
|||
|
|
v |
|
|
|
|
v |
|
|
|
|
v |
|||
|
k 1 |
|
|
k 1,0 |
k 1,1 |
,u1,..., uk 1 ) :
|
|
|
(7.23) |
v |
|
|
|
0,k 1 |
|
|
|
v1,k 1 |
|
. |
(7.24) |
|
|
||
|
|
|
|
|
|
|
|
vk 1,k 1 |
|
|
|
|
|
|
Таблица 7.11
а |
b |
а + b |
ab |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
Поскольку С является k-измеримым векторным пространством в V2 , то существует (n – k)-измеримое дуальное пространство C , которое порожда-
ется строками матрицы H - так называемой проверочной |
матрицы, где |
GH T 0, где НТ - транспонированная матрица Н. Укажем, в частности, что |
|
любое кодовое слово v C удовлетворяет условию |
|
vH T 0. |
(7.25) |
Уравнение (7.25) является фундаментальным для декодирования линейных кодов.
Линейный код C , который генерируется матрицей Н, является двоичным линейным кодом (n, n k, dminT ), который называют дуальным кодом С.
Как уже отмечалось, линейные коды отличаются тем, что для определения минимального расстояния кода достаточно знать минимум хэмминговых весов ненулевых кодовых слов. Дальше этот факт будет доказан. Определим
хэммингов вес wtH (x) вектора x V2 |
как количество ненулевых элементов в |
|
х. Из определение хэммингового |
расстояния вытекает, что |
wtH (x) |
dH (x,0). Для двоичного линейного кода С получаем |
|
|
dH (v1, v2 ) dH (v1 v2 , 0) wtH (v1 v2 ). |
(7.26) |
532

Глава 7. Кодирование информации
Наконец, из свойства линейности кода имеем v1 v2 C. Отсюда вытекает, что минимальное расстояние кода С можно вычислить как минималь-
ный вес по всем 2k 1 ненулевым кодовым словам. Эта задача существенно проще, чем полный перебор по всем парам кодовых слов, хотя и остается очень сложной даже для кодов среднего размера (или размерности k).
Кодирование и декодирование линейных блочных кодов. Равенство
(7.23) определяет правило кодирования для линейного блочного кода, которым можно воспользоваться непосредственно. Если кодирование должно быть систематическим, то произвольную породную матрицу G линейного блочного (n, k, dmin ) кода С можно превратить в систематическую (канони-
ческую) форму Gsys с помощью элементарных операций и перестановок столбцов матрицы. Матрица Gsys состоит из двух подматриц: единичной матрицы размера k × k, что обозначается Іk, и проверочной подматрицей Р размера k × (п – k). Таким образом,
|
Gsys (Ik |
|
P), |
|
|
|
(7.27) |
|||||
|
|
|
|
|
||||||||
где |
|
|
|
|
|
|
|
|
|
|
|
|
|
P0,0 |
|
P0,1 |
|
|
|
|
P0,n k 1 |
|
|
||
|
P |
|
P |
|
|
|
|
|
P |
|
|
|
P |
1,0 |
|
1,1 |
|
|
|
|
|
1,n |
k 1 |
. |
(7.28) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
P |
|
|
|
|
|
P |
|
|
|
|
P |
|
|
|
|
|
|
|
|
||||
|
k 1,0 |
|
k 1,1 |
|
|
|
|
k 1,n k 1 |
|
|
||
Поскольку GH T 0, то отсюда вытекает, |
что систематическая форма |
|||||||||||
проверочной матрицы имеет вид |
|
|
|
|
|
|
|
|
|
|
|
|
|
H |
sys |
(P |
|
I |
n k |
) . |
|
|
(7.29) |
||
|
|
|
|
|||||||||
Пример 7.12. Рассмотрим двоичный линейный (4, 2, 2) код с порожда- |
||||||||||||
ющей матрицей |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
|
0 |
|
|
|
|||
|
G |
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
0 |
0 |
1 |
|
1 |
|
|
|
||
Перестановками второго и четвертого столбцов превратим эту матрицу в |
||||||||||||
систематическую форму |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
0 |
1 |
|
1 |
|
|
|
||
|
Gsys |
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
0 |
1 |
1 |
|
0 |
|
|
|
Таким образом, проверочная подматрица |
1 |
1 |
|
P |
|
. |
|
|
1 |
0 |
|
В этом случае выполняется соотношение P P . Из формулы (7.29) вытекает, что систематическая форма проверочной матрицы имеет вид
533

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
|
1 |
1 |
1 |
0 |
|
Hsys |
|
|
|
|
. |
|
1 |
0 |
0 |
1 |
|
В дальнейшем будут использованы обозначения u (u0 , u1,....., uk 1 ) для информационного сообщения и обозначения v (v0 , v1,....., vn 1 ) для соответ-
ствующего кодового слова кода С.
Если параметры С такие, что k (n k), т.е. скорость кода k / n 1/ 2,
то кодирование с помощью порождающей матрицы нуждается в меньшем количестве логических операций. В этом случае
v uGsys (u, vp ), |
(7.30) |
где vp uP (vk ,vk 1,...,vn 1 ) - проверочная часть кодового слова.
Тем не менее, если k (n k) или k / n 1/ 2, то кодирование с помо-
щью проверочной матрицы Н нуждается в меньшем количестве вычислений. Этот вариант кодирования обосновывается уравнением (7.25):
(u, v |
p |
)H T 0. |
|
|
|
|
|
Проверочные позиции (vk ,vk 1,...,vn 1 ) вычисляются как |
|
||
vj u0 0, j u1 1, j .... uk 1 k 1 k j n. |
(7.31) |
Можно сказать, что элементами систематической формы проверочной матрицы являются коэффициенты проверочных уравнений, из которых вычисляются проверочные символы.
Пример 7.13. Рассмотрим двоичный линейный (4, 2, 2) код из примера
7.11. Пусть сообщение и кодовые слова обозначены |
соответственно |
|
u (u0 , u1 ) |
и v (v0 , v1, v2 , v3 ). Из уравнение (7.31) получаем |
|
|
v2 u0 u1, v3 u0 . |
(7.32) |
Соответствие между 22 = 4 двухбитовыми сообщениями и кодовыми словами имеет вид
(00)(0000)
(01) |
|
(0110) |
(7.33) |
(10) |
|
(1011) |
|
(11)(1110)
Декодирование по стандартной таблице. Процедура декодирования находит кодовое слово v, самое ближнее к принятому с искажениями слову
r v e, где вектор ошибок e 0,1 n образовывается двоичным симметрич-
ным каналом (см. гл. 6) в процессе передачи кодового слова. Модель изображена на рис. 7.27. По предположению переходная вероятность p 12.
534

|
|
|
|
Глава 7. Кодирование информации |
|
передано |
|
|
принято |
||
0 |
|
|
1 p |
|
0 |
p |
|
|
|
||
|
|
|
|
|
|
|
p |
|
|
|
|
1 |
|
|
|
|
1 |
|
1 |
p |
|
||
|
|
|
|
||
Рис. 7.27. Модель двоичного симметрического канала |
|||||
Стандартной проверочной таблицей (или стандартной расстанов- |
|||||
кой) для двоичного линейного (n, k, dmin ) |
кода С называется таблица всех |
возможных принятых из канала векторов r, организованная таким способом, который может быть наиболее близок к r кодовому слову v.
Стандартная таблица содержит 2n k |
|
строк и |
2k 1 столбцов (табл. 7.12). |
|||||||||||||||||||
Размещенные по правую сторону 2k |
столбцы таблицы содержат все векторы |
|||||||||||||||||||||
из пространства V 0,1 n . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 7.12 |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
s |
|
u0 = 0 |
|
|
u1 |
|
|
|
|
|
|
|
u2k-1 |
|
|
||||
|
0 |
|
|
v0 |
|
v1 |
|
|
|
|
|
|
|
|
v2k _1 |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
s1 |
|
|
e1 |
|
e1 |
v1 |
|
|
|
|
|
|
e1 |
v k |
_1 |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
s2 |
|
|
e |
|
e |
v |
|
|
|
|
|
|
|
|
2 |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
v k |
|
|
|
||||||||
|
|
|
|
|
2 |
|
2 |
|
1 |
|
|
|
|
|
|
e2 |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_1 |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
s |
2 |
n k |
_1 |
e n k |
_1 |
e n k |
_1 |
u |
k |
_1 |
|
|
|
|
|
|
|
|
|
||
|
|
|
2 |
2 |
|
2 |
|
|
|
e n k |
|
v k |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_1 |
_1 |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
2 |
|
||
|
|
|
|
|
|
|
||||||||||||||||
Для описания процедуры декодирования необходимо ввести понятие |
||||||||||||||||||||||
синдрома. Синдромом произвольного кодового слова V2 |
называется произ- |
|||||||||||||||||||||
ведение искаженного |
слова |
r v e и |
|
транспонированной проверочной |
||||||||||||||||||
матрицы Н: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
s rH T , |
|
|
|
|
|
|
|
(7.34) |
где Н - проверочная матрица кода С.
Покажем, что синдром является индикатором вектора ошибок. Предпо-
ложим, что кодовое слово v C, |
передано по ДСК, принято как |
r v e. |
Синдром принятого слова |
|
|
s rHT |
(v e)H T eH T . |
(7.35) |
535

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
Таким образом, вычисление синдрома можно рассматривать как линейное преобразование вектора ошибок.
Пример 7.14. Имеем стандартную таблицу двоичного линейного (4, 2, 2) кода (табл. 7.13).
|
|
|
|
|
|
Таблица 7.13 |
|
|
|
|
|
|
|
|
|
|
s |
|
00 |
01 |
10 |
11 |
|
|
00 |
|
0000 |
0110 |
1011 |
1101 |
|
|
11 |
|
1000 |
1110 |
0011 |
0101 |
|
|
10 |
|
0100 |
0010 |
1111 |
1001 |
|
|
01 |
|
0001 |
0111 |
1010 |
1100 |
|
|
Декодирование с помощью стандартной таблицы выполняется таким об- |
||||||
разом. Пусть r v e |
- принятое слово. Найдем это слово в таблице и возь- |
мем как результат декодирования сообщения и, записанное в верхний (первой) ячейке того столбца, в котором лежит принятое слово r. В сущности, этот процесс предусматривает хранение в памяти всей таблицы и поиска в ней заданного слова. Тем не менее, можно упростить процедуру декодирования, если заметить, что все элементы одной и той самой строки имеют один и
тот самый синдром. Каждая строка Rowi ,0 i 2n k , этой таблицы представляет собой смежный класс кода С, а именно Rowi ei v v C . Вектор ei называется лидером смежного класса. Синдром всех элементов і-й строки
s (e |
v)H T e H T |
(7.36) |
|
i |
i |
i |
|
не зависит от конкретного значения кодового слова v C. Упрощенная процедура декодирования состоит в выполнении таких действий. Вычислить синдром принятого слова r ej v :
s j (ej v)H T ej H T ,
найти его в левом столбце стандартной таблицы; взять лидера смежного класса e j из второго столбца той же строки и прибавить его к принятому
слову, взяв наиболее ближнее к принятому r ej v кодовое слово v . Итак,
вместо таблицы n 2n бит для декодирования достаточно использовать таб-
лицу лидеров смежного классов n 2n k бит.
Алгоритмы помехоустойчивого блочного кодирования. Коды Хэм-
минга представляют, наверно, наиболее известный класс блочных кодов, за исключением, возможно, только кодов Рида - Соломона. Как уже отмечалось, коды Хэмминга являются оптимальными в том смысле, что они требуют минимальной чрезмерности при заданной длине блока для исправления одной ошибки. Двоичные коды Голея - это единственный нетривиальный пример оптимального кода, который исправляет тройные ошибки (другими примерами оптимальных кодов являются коды-повторения и коды с одной проверкой
536

Глава 7. Кодирование информации
на парность). Коды Рида - Маллера - очень элегантная комбинаторная конструкция с простым декодированием.
Коды Хэмминга. Напомним, что любое кодовое слово v линейного (n, k, dmin ) кода С удовлетворяет уравнению
vH T 0. |
(7.37) |
Полезная интерпретация этого уравнения заключается в том, что максимальное количество линейно независимых столбцов проверочной матрицы Н кода С равняется dmin 1.
В двоичном случае для dmin 3 из формулы (7.37) вытекает, что сумма
любых двух столбцов проверочной матрицы не равна нулевому вектору. Пусть столбцы Н являются двоичными векторами длины т. Существует все-
го 2m 1 ненулевых разных столбцов. Итак, длина двоичного кода, который исправляет одиночную ошибку, удовлетворяет условию
n 2m 1.
Эта неравенство точно совпадает с границей Хэмминга для кода длины n с n k m проверками и исправлением t 1 ошибок. Соответственно код, который удовлетворяет приведенному условию со знаком равенства, извест-
ный как код Хэмминга.
Пример 7.15. Для m 3 получаем (7, 4, 3) код Хэмминга с проверочной матрицей
1110100 H 0111010 .
1101001
Как уже подчеркивалось, проверочная матрица кода Хэмминга имеет свойство, что все ее столбцы разные. Если возникает одиночная ошибка на j-й позиции, 1 j n, то синдром искаженного принятого слова равняется
j-му столбцу матрицы H . Обозначим e вектор ошибок, добавленный к кодовому слову в процессе его передачи по ДСК и допустим, что все его компоненты равняются нолю за исключением j-й позиции, ej 1. Тогда синдром
принятого слова
s rH T eH T h |
, |
(7.38) |
j |
|
|
где hj - j-й столбец матрицы Н.
Процедуры кодирования и декодирования. Из уравнения (7.38) вытекает,
что когда столбцы проверочной матрицы рассматривать как двоичное представление целых чисел, то значение синдрома равно номеру искаженной (ошибочной) позиции. Эта идея положена в основу алгоритмов кодирования и декодирования, приведенных дальше.
537

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ЗАЩИТЫ ИНФОРМАЦИИ
Запишем столбцы проверочной матрицы в виде двоичного представления номера (от 1 до n) позиции кодового слова в возрастающем порядке. Обозначим эту матрицу через Н. Очевидно, что матрице Н* отвечает эквивалентный код Хэмминга с точностью до перестановки позиций кодового слова.
Напомним, что проверочная матрица в систематической форме содержит единичную подматрицу In k размера (n k) (n k) Очевидно, что в матри-
це Н* столбцы единичной подматрицы In k (т.е. столбцы веса один) размещаются на позициях с номерами, которые равняются степени 2, т.е.:
2e ,l 0,1,..., m.
Пример 7.16. Пусть m 3. Тогда систематическую (каноническую) проверочную матрицу можно задать в виде
1101100 H 1011010 .
0111001
Матрица Н*, заданная двоичным представлением целых чисел от 1 до 7 (младший разряд записывается в верхней строке), имеет вид
1010101 H 0110011 ,0001111
где матрица I3 содержится в первом, втором и четвертом столбцах.
Вообще для (2m 1, 2m 1 m) кода Хэмминга и данного (арифметического) порядка столбцов единичная матрица Im содержится в столбцах проверочной матрицы с номерами 1, 2, 4,...,2m 1.
Кодирование. При вычислении проверочных символов p j для всех 1 j m проверяют номера столбцов и те столбцы, номера которых не явля-
ется степенью 2, ставятся в соответствие информационным позициям слова. Соответствующие информационные символы включаются в процесс вычисления проверок. Такая процедура кодирования в чем-то сложнее обычной процедуры для систематического (канонического) кода Хэмминга. Тем не менее, соответствующая ей процедура декодирования очень простая. Для некоторых применений этот подход может быть более привлекательным, поскольку обычное декодирование должно выполняться довольно быстро.
Декодирование. Если кодирование выполнялось соответственно матрице Н*, то декодирование оказывается очень простым. Синдром (7.38) равен номеру позиции, в которой случилась ошибка. После вычисления синдрома s, что рассматривается как целое число, ошибка исправляется по правилу
vs vs 1, |
(7.39) |
538

Глава 7. Кодирование информации
где выполняется сложение по модулю 2 (0 + 0 = 0, |
1 + 1 = 0, 0 + 1 = 1, |
||
1 + 0 = 1). |
|
|
|
3 |
23 |
|
211. |
Двоичный код Голея. Голей установил, что |
|
|
|
i 0 |
i |
|
|
Это равенство дает основание предположить, что может существовать совершенный двоичный (23, 12, 7) код при t 3, т.е. код способен исправлять до трех ошибок в словах длиной 23 символа. В своей статье Голей привел порождающую матрицу такого двоичного кода, который исправляет до трех ошибок.
Учитывая сравнительно небольшую длину (23) и размерность (12), а также небольшое количество проверок (11) кодирование и декодирование двоичного (23, 12, 7) кода Голея можно выполнить табличным методом.
Кодирование. Табличное (LUT, look-up-table) кодирование реализуется с помощью просмотров таблицы, которая содержит список всех 212 4096 кодовых слов, пронумерованных непосредственно информационными символами. Пусть и - информационный вектор размерности 12 бит и v - соответствующее кодовое слово (23 бит). Табличный кодер использует таблицу, в которой для каждого информационного вектора (12 бит) вычислен и записан синдром (11 бит). Синдром берется из таблицы и приписывается по правую сторону к информационному вектору.
Операция LUT - это взаимно однозначное отображение из множества векторов u на множество векторов v, которое можно записать в виде
v LUT(u) (u,get_syndrome(u,0)). |
(7.40) |
В реализации табличного кодера учтены упрощения, которые вытекают |
|
из циклической природы кода Голея. Его породный полином имеет вид |
|
g(x) x11 x10 x6 x5 x4 x2 1, |
(7.41) |
или в шестнадцатиричной системе исчисления С75. Этот полином используется в процедуре «get_syndrome», заданной уравнением (7.41).
Декодирование. Напомним, что задача декодера заключается в оценивании наиболее возможного (такого, который имеет минимальный хэммингов вес) вектора ошибок e по принятому вектору r.
Процедура построения табличного LUT-декодера состоит из таких действий:
1)выписать все возможные векторы ошибок е, хэммингов вес которых не превышает три;
2)для каждого вектора ошибок вычислить соответствующий синдром s get_syndrome(e);
3)записать в таблицу для каждого значения s соответствующий ему вектор е, при котором LUT(s) e.
539