algebcodes (1)
.pdf6.8. Общий случай декодирования двоичных кодов БЧХ 211
1. Произошло 3 ошибки. Принят вектор
v1 = (011101101000100).
Пользуясь таблицей (3.4.11), находим:
S1 = α + α2 + α3 + α5 + α6 + α8 + α12 = α11,
S3 = α3 + α6 + α9 + 1 + α3 + α9 + α6 = 1,
S5 = α5 + α10 + 1 + α10 + 1 + α10 + 1 = 0,
S2 = S12 = α7, S4 = S22 = α14, S6 = 1.
Далее |
|
|
|
|
M3 = [ |
1 |
0 |
0 |
] , |
α7 |
α11 |
1 |
||
α14 |
1 |
α7 |
|M3| = α18 + 1 = α3 + 1 = α14 ≠ 0.
Система линейных уравнений относительно σi :
σ1 = S1 = α11,
α7σ1 + α11σ2 + σ3 = S3 = 1,
α14σ1 + σ2 + α7σ3 = S5 = 0.
Получим
σ1 = α11, σ2 = α8, σ3 = α9;
Многочлен локаторов ошибок:
σ(z) = 1 + α11z + α8z2 + α9z3.
Его корни как величины, обратные локаторам ошибок:
z1 = α8, z2 = α13, z3 = α0,
Локаторы: α7, α2, α0 = 1, что подтверждается сравнением векторов u и v.
2. Произошло 2 ошибки. Принят вектор
v2 = (111101101000100).
212 |
Глава 6. Коды Боуза—Чоудхури—Хоквингема |
Снова пользуясь таблицей (3.4.11), находим:
S1 = 1 + α + α2 + α3 + α5 + α6 + α8 + α12 = α12, S3 = 1 + α3 + α6 + α9 + 1 + α3 + α9 + α6 = 0,
S5 = 1 + α5 + α10 + 1 + α10 + 1 + α10 + 1 = 1, S2 = S12 = α9, S4 = S22 = α3, S6 = 0.
Далее |
|
|
|
|
M3 = [ |
1 |
0 |
0 |
] , |
α9 |
α12 |
1 |
||
α3 |
0 |
α9 |
|M3| = α6 ≠ 0.
Система линейных уравнений относительно σi :
σ1 = S1 = α12,
α9σ1 + α12σ2 + σ3 = S3 = 0
α3σ1 + α9σ3 = S5 = 1
Получим:
σ1 = α12, σ2 = α9, σ3 = 0;
Многочлен локаторов ошибок:
σ(z) = 1 + α12z + α9z2.
Его корни как величины, обратные локаторам ошибок:
z1 = α8, z2 = α13.
Локаторы: α7, α2.
3. Произошла одна ошибка. Принят вектор
v3 = (110101101000100).
Пользуясь таблицей (3.4.11), находим:
S1 = 1 + α + α3 + α5 + α6 + α8 + α12 = α7,
S3 = 1 + α3 + α9 + 1 + α3 + α9α6 = α6,
S5 = 1 + α5 + 1 + α10 + 1 + α10 + 1 = 1α5
S2 = S12 = α14, S4 = S142 = α13, S6 = α12.
6.8. Общий случай декодирования двоичных кодов БЧХ 213
Далее |
|
|
|
|
M3 = [ |
1 |
0 |
0 |
] , |
α14 |
α7 |
1 |
||
α3 α6 |
α14 |
|M3| = 0, |M1| = |1| = 1.
Получим
σ1 = S1 = α7, σ2 = 0, σ3 = 0;
Многочлен локаторов ошибок:
σ(z) = 1 + α7z.
Его корень
z1 = α8.
Локатор: α7.
В примерах 6.3. и 6.4. специально указывалось, по модулю какого многочлена построено поле. В примере 6.3. это был
многочлен 1 + x3 + x4, в примере 6.4. — многочлен 1 + x + x4.
Необходимость такого указания можно подтвердить примером, когда отсутствие указания приводит к неверному декодирова-
нию. Рассмотрим циклический код Хэмминга длины n = 15 с порождающим многочленом 1 + x + x4, корнями которого
являются элементы α, α2, α4, α8. Этот код исправляет любую одиночную ошибку, или обнаруживает любую двойную.
Пусть передан вектор
u = (110010000000000),
и принят вектор
v = (100110000000000).
Произошли две ошибки, которые заведомо обнаруживаются. Если будет указано поле (3.4.11), то подстановка в вектор v элемента α по правилам этого поля даст S1 = 1 + α3 + α4 =
α9 ≠ 0. На исправление двойной ошибки рассчитывать нельзя, но обнаружена она заведомо будет.
Если же подстановка α в v будет выполняться по правилам поля (3.4.12), то тривиальным образом S1 = 1 + α3 + α4 = 0, и ошибка не обнаруживается.
214 |
Глава 6. Коды Боуза—Чоудхури—Хоквингема |
В заключение раздела сделаем следующее замечание. Из принадлежности к классу кодов БЧХ циклического кода, двойственного циклическому коду Хэмминга, вовсе не следует, что и декодировать его следует посредством изложенной в данном разделе процедуры. Имеют ли дело с кодом, двойственным ко-
ду Хэмминга (циклическим или нет), с укороченным ли РМкодом первого порядка, все эти коды эквивалентны, и наилуч-
ший для них способ — мажоритарное декодирование.
6.9. Общий случай декодирования q-ичных кодов БЧХ
Основное отличие декодирования кодов над GF (q) от случая двоичных кодов состоит в том, что кроме положения ошибочных символов, т.е. локаторов ошибок, необходимо установить еще и значения ошибок. Каждый символ кодового вектора может принимать q значений из поля GF (q). Каждое значение ошибки может быть только ненулевое, ибо нулевое значение ошибки есть ее отсутствие. Как и в двоичном случае, положение ошибки изображается элементом мультиплкативной группы расширения степени m поля GF (q), т.е. поля GF (qm).
Таким образом,
e(xb+i) = e0 + e1xb+i + e2(xb+i)2 + . . . + en−1(xb+i)n−1; (6.9.47)
i = 0, 1, . . . , d−2, где ei GF (q). Будем считать, что отличных
от нуля слагаемых имеется не более, чем t, и пусть их коэффициенты таковы
ej1 , ej2 , . . . , ejt GF (q).
Иначе говоря, положив для простоты и без потери общности b = 1, получим
e(x) = ei1 xi1 + ei2 xi2 + . . . + eit xit .
На деле может оказаться, что произошло менее, чем t ошибок. В процессе декодирования это обстоятельство обнаружится и будет учтено автоматически.
Теперь, помня, что элементы (6.4.13) синдрома имеют вид
Si+1 = e(αi),
и полагая
6.9. Общий случай декодирования q-ичных кодов БЧХ 215 |
||||
eji = Yi, αji = Xi, получим (ср. с (6.8.33) ): |
||||
S1 = Y1X1 + Y2X2 + . . . + YtXt, |
||||
S2 |
= Y1X2 |
+ Y2X |
2 |
+ . . . + YtX2, |
|
1 |
. . . |
2 |
t |
|
|
|
(6.9.48) |
|
S2t |
= Y1X2t |
+ Y2X |
2t + . . . + YtX2t, |
|
|
1 |
|
2 |
t |
Yi GF (q), X(i) GF (qm). |
Величины Xi, как и прежде, называются локаторами ошибок. Вычисления упрощаются, если принять во внимания, что
согласно теореме 3.5.1,
Siq = Y1X1iq+Y2X2iq+. . .+YtXtiq = (Y1X1i+Y2X2i+. . .+YtXti)q = Siq.
Система (6.9.48) — это система линейных уравнений относительно Yi, i = 1, 2, . . . , t. Если произошло t ошибок, то все Xi, i = 1, 2, . . . , t, различны и отличны от нуля. В этих условиях определитель первых t уравнений системы, как будет показано ниже, отличен от нуля. Следовательно, первые t уравнений системы (6.9.48) линейно независимы, и они разрешимы относительно неизвестных Yi, i = 1, 2, . . . , t.
Обратимся к нахождению локаторов ошибок. Воспользуемся многочленом (6.8.34):
σ(z) = σ0 + σ1z + σ2z2 + . . . + σtzt, |
(6.9.49) |
который, как и в (6.8.34) получается раскрытием скобок и приведением подобных членов в произведении
(1 − X1z)(1 − X2z) · · · (1 − Xtz).
Напомним, что коэффициенты σi — это элементарные симметрические функции (6.8.35). Корни многочлена (6.9.49) — это
величины Xi−1, обратные локаторам ошибок. Если бы величины σi были известны, то подстановкой в многочлен σi последовательно ненулевых элементов поля GF (qm) можно было бы найти все корни многочлена как величины, обратные локаторам ошибок. Однако они неизвестны. Поступим следующим образом:
Подставим в (6.9.49) z = Xi−1.
σ(Xi−1) = 1 + σ1Xi−1 + σ2Xi−2 + . . . + σtXi−t = 0, (6.9.50)
216 Глава 6. Коды Боуза—Чоудхури—Хоквингема
Затем помножим тождество (6.9.50) на YiXij+t :
Yi(Xij+t + σ1Xij+t−1 + σ2Xij+t−2 + . . . + σtXij) = 0. (6.9.51)
При фиксированном j просуммируем все тождества (6.9.51) по i = 1, 2, . . . , t :
t |
|
|
|
|
|
|
|
∑i |
(Xj+t + σ1Xj+t−1 |
+ σ2Xj+t−2 |
+ . . . + σtXj) = 0. |
|
|||
Yi |
|
||||||
|
i |
i |
|
i |
i |
|
|
=1 |
|
|
|
|
|
|
|
Раскрывая скобки и меняя порядок суммирования, получим |
|
||||||
t |
t |
|
t |
|
|
t |
|
∑ |
∑ |
|
∑ |
|
|
∑i |
|
YiXj+t |
+σ1 |
YiXj+t−1+σ2 |
YiXj+t−2+. . .+σt |
YiXj |
= 0. |
||
i |
|
i |
|
i |
|
i |
|
i=1 |
i=1 |
|
i=1 |
|
|
=1 |
|
Но
∑t
YiXij+t−l = Sj+t−l, l = 0, 1, . . . , t.
i=1
Поэтому для фиксированного j имеем:
Sj+t + σ1Sj+t−1 + . . . + σtSj = 0, j = 1, 2, . . . , t.
Таких уравнений будет t штук, и вместе они составляют систему уравнений
σ1St + σ2St−1 + . . . |
+ σtS1 = −St+1, |
|
σ1St+1 + σ2St + . . . |
+ σtS2 = −St+2, |
(6.9.52) |
...........................................
σ1S2t−1 + σ2S2t−2 + . . . + σtSt = −S2t
или в матричном виде
|
St |
|
St−1 |
|
St.+1 |
S.t |
|
||
|
− |
|
− |
|
|
S2t.. |
1 |
S2t.. |
2 |
. . . |
S2 |
. . . |
S3 |
. |
|
. |
. . . |
. |
|
. . . |
St+1 |
S.2 |
σ.2 |
= |
−−S.t+2 |
. |
||
S1 |
σ1 |
|
|
St+1 |
|
|
S..t |
|
|
|
− |
S.. 2t |
|
σ..t |
|
|
|
|
(6.9.53)
Обозначим матрицу системы символом Mt.
6.9. Общий случай декодирования q-ичных кодов БЧХ |
217 |
Теорема 6.9.1. Система уравнений 6.9.52 имеет единственное решение тогда и только тогда, когда произошло t ошибок.
Д о к а з а т е л ь с т в о. Пользуясь системой (6.9.48), в которой элементы Sl синдрома представлены в виде степенных сумм,
нетрудно проверить рутинными выкладками, что Mt = V LV T , |
|||||||||||
где |
|
Y X |
|
0 |
|
0 . . . |
0 |
|
|
|
|
|
|
|
|
|
|||||||
L = |
|
10. 1 |
Y2.X2 |
0. . .. . |
0. |
, |
(6.9.54) |
||||
|
.. |
|
.. |
|
.. .. |
.. |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
0 |
|
0 . . . YtXt |
|
|
||
|
|
|
1 |
1 |
. . . |
1 |
. |
|
|
||
V = |
X.. |
1 |
X.. |
2 |
. ... . |
X..t |
|
(6.9.55) |
|||
|
|
|
. |
|
. |
|
. |
. |
|
|
|
|
|
|
X1t−1 |
X2t−1 . . . Xtt−1 |
|
|
|
Если произошло t ошибок, то все Yi и Xi отличны от нуля, определитель матрицы L, равный произведению элементов главной диагонали, отличен от нуля. При тех же условиях, поскольку отличные от нуля величины Xi заведомо различны, опреде-
лители матриц V и V T , отличны от нуля, как определители Вандермонда.
Таким образом, матрица Mt невырождена, и система (6.9.52) имеет единственное решение.
Если произошло менее, чем t ошибок, то хотя бы один элемент главной диагонали матрицы L равен нулю. В таком случае определитель матрицы L равен нулю, и, значит, система (6.9.52) не имеет решения. Теорема доказана.
Найдя из системы (6.9.52), если это возможно, все величины σ1, σ2, . . . , σt, (напомним, что всегда σ0 = 1), следует составить многочлен локаторов ошибок. Читатель уже знает, что нужно с ним делать. Подстановкой в него всех ненулевых элементов поля GF (qm) получаются величины, обратные локаторам ошибок, а с ними и сами локаторы.
Теперь вернемся к системе (6.9.48). Ее определитель таков:
|
X1 |
X2 |
. . |
||
|
X12 |
X22 |
|
1 |
2 |
.. .. |
||
|
|
|
|
|
|
|
Xt |
Xt |
|
. |
. |
|
1 2 |
. . . |
X |
|
|
|
t |
|
|
. . . |
Xt2 |
= X X |
|
|
t |
|
|
.. |
.. |
|
|
|
|
||
|
|
|
|
|
Xt |
|
|
. . . |
|
|
|
|
1 |
|
|
. |
1 |
|
. . . Xt |
|
t |
|
|
X.. |
1 |
|
|
|
|
|
|
|
|
|
|
|
X1− |
|
|
|
1
X2
...
X2t−1
. . . |
1 |
. . . |
Xt |
. |
. |
. |
. |
. |
. |
. . . |
Xtt−1 |
.
218 |
Глава 6. Коды Боуза—Чоудхури—Хоквингема |
Справа находится определитель Вандермонда. При наличии t ошибок локаторы Xi различны, и определитель отличен от нуля. Система (6.9.48) имеет единственное решение.
Окончательно процедура декодирования выглядит следующим образом.
1. Подставляя в принятый вектор v корни порождающего многочлена, вычисляют элементы Si синдрома. Если все они
равны нулю, то считается, что ошибок нет, и процедура окончена.
2. В противном случае из элементов синдрома составляется система уравнений (6.9.52). Если ее матрица Mt в формуле (6.9.53) не вырождена, вычисляются коэффициенты σ1, σ2, . . . σt многочлена локаторов ошибок.
3.Отыскиваются t корней многочлена локаторов ошибок последовательной подстановкой в него элементов поля GF (qm). Величины, обратные корням, есть локаторы ошибок.
4.Составляется система (6.9.48) уравнений, которая имеет единственное решение, так как ее матрица не вырождена.
Решением системы являются значения ошибок.
5.В соответствии с каждой ненулевой (!) парой Xi, Yi из i-го символа вектора v вычитается величина Yi. Восстановлен передававшийся вектор u. Процедура закончена.
6.Если матрица Mt в (6.9.53) вырождена, система не разрешима. Это означает, что произошло не более, чем t−1 ошибок. Из матрицы Mt в (6.9.53) следует удалить последние строку
истолбец, положить σt = 0, а из системы (6.9.52) последнее уравнение. Вся процедура выполняется снова после замены t
на t − 1.
Сравнивая только что изложенную процедуру с процеду-
рой декодирования двоичных кодов БЧХ, видим, что в обоих случаях центральным пунктом является отыскание коэффициентов σ1, σ2, . . . σt многочлена локаторов ошибок. Всякий раз, когда основная матрица системы уравнений относительно этих коэффициентов оказывается вырожденной, делается вывод, что в действительности произошло меньшее число ошибок,
чем предполагалось вначале. Порядок системы уравнений снижается: в двоичном случае — на две единицы, в недвоичном
случае — на одну единицу. Таким образом, "скорость" продвижения к разрешимости системы уравнений в двоичном случае
вдва раза выше.
Ктому же, в недвоичном случае следует находить еще и значения ошибок, кроме их расположения.
Разумеется, при желании можно не рассматривать отдельно способ декодирования двоичных кодов, так как они есть про-
6.10. Коды БЧХ и исправление стираний |
219 |
сто частный случай q-ичных кодов.
Изложенный в разделах 6.9 и 6.8, алгоритмом Питерсона — Горенстейна — Цирлера по мнению большинства исследователей лучше всех остальных способов декодирования проясняет алгебраическую идею процесса.
Другие способы декодирования, например, итеративный алгоритм Берлекемпа, будучи несколько более экономичными, оказываются менее прозрачными. Иные соображения на этот счет можно прочитать в литературе по алгебраическим методам кодирования. Как упомянуто выше в связи с примерами декодирования кодов Рида-Соломона, которые являются частным случаем кодов БЧХ, несколько последних разделов следующей главы, посвящены декодированию посредством алгоритма Эвклида. А Выбор на практике того или иного метода декодирования, как и, вообще, выбор той или иной системы, будь то передача информации или постройка дома, — это всегда решение оптимизационной задачи по многим параметрам.
6.10. Коды БЧХ и исправление стираний
В разделе 0.3 рассмотрен тривиальный метод исправления стираний способом замены стертых символов всевозможными двоичными комбинациями. Метод декодирования кодов БЧХ с минимальным расстоянием d дает возможность произвести только одну такую замену, а затем исправить любые d−1 или менее стираний посредством решения системы линейных уравнений. Локаторы стираний X1, X2, . . . , Xν известны заранее. Достаточно подставить на все ν стертых позиций, например, нули и для полученного таким образом вектора вычислить все сте-
пенные суммы, т.е. элементы синдрома, S1, S1, . . . , S2ν. Тогда истинные значения стертых символов получатся как решения
Y1, Y2, . . . Yν системы (6.9.48) линейных уравнений.
В случае двоичных кодов возникает некоторая особенность. Она состоит в том, что система (6.9.48) рассматривалась в связи с недвоичными кодами. Конечно, система (6.9.48) годится и в двоичном случае. Но замена стёртых символов нулями в двоичном случае даёт возможность забыть про известные локаторы ошибок, найти их заново для вектора, полученного заменой стёртых символов нулями (ибо эта замена есть ни что иное , как искусственное внесение ошибок), и тогда уже некоторые нули заменить единицами без обращения к системе (6.9.48).Такой об-
раз мыслей может показаться абсурдным, тем не менее иметь его в виду не помешает.
220 |
Глава 6. Коды Боуза—Чоудхури—Хоквингема |
Можно исправлять не только стирания и не только ошибки, но пойти дальше и исправлять ошибки и стирания. Частично эта тема рассмотрена в разделе 0.3. Во всех подробностях она представлена в следующей главе, в изложении проблемы декодирования посредством алгоритма Эвклида.
6.11. Задачи к главе 6
6.1.Построить двоичный код БЧХ размерности 12 с гарантированным расстоянием δ = 5.
6.2.Определить размерность БЧХ-кода над полем GF (3), исправляющего 5 ошибок и имеющего длину 80.
6.3.Показать, что любой двоичный код, порожденный много-
членом g(x) = g (x), имеющим 1 среди своих корней, и который обладает корнем порядка самое меньшее 5, есть БЧХ-код с минимальным расстоянием 6. Показать, что утверждение применимо к любому из двух двоичных циклических (17, 8)-кодов. 6.4. Показать, что если в определении БЧХ-кодов элемент α
заменить на другой элемент α′ того же порядка, то получится эквивалентный код.
6.5.Как соотносятся коды БЧХ, у которых при одинаковых b имеет место неравенство δ1 ≥ δ + 2?
6.6.Всегда ли двойственные коды одновременно являются или не являются кодами БЧХ?