1. В теории циклических кодов многочлены удобно трактовать не только как элементы кольца Fn, но и как элементы кольца многочленов F[X] с обычной операцией умножения многочленов. Условимся в последнем случае вместо обозначения а(х) пользоваться обозначением а(Х). Необходимость различать эти обозначения видна хотя бы из такого примера: если в кольце Fn имеет место хn - 1 = 0, то в кольце F[X] многочлен Хn - 1, разумеется, не является нулевым элементом.
Для циклических кодов существенно следующее свойство порождающего многочлена g(x):
Если в качестве g(x) выбран многочлен наименьшей степени, принадлежащий идеалу V, то многочлен g(X) ∈ F[X] является делителем многочлена Хn - 1.
Для доказательства разделим Хn - 1 на g(X) с остатком. Получаем:
Xn - 1 = h(X)g(X) + r(X), (10)
где степень r(Х) меньше степени g(X). В кольце Fn равенство (10) приобретает вид:
h(x)g(x) + r(x) = 0,
откуда заключаем, что r(х) должен принадлежать идеалу V, в то время как его степень меньше, чем степень g(x). Следовательно, r(х) = 0, но тогда и r(Х) = 0, т. е.
Xn - 1 = h(X)g(X). (11)
Многочлен h(Х), удовлетворяющий равенству (11), называется проверочным многочленом.
Пусть h(x) = ∑kj=0 hjxj - проверочный многочлен кода. Из (11) следует, что если m - степень многочлена g(x), то h(x) имеет степень n-m, т. е. k = n - m. В силу (11) имеем также, что в кольце Fn проверочный и порождающий многочлены связаны равенством
h(x)g(x) = 0. (12)
Рассмотрим матрицу Н порядка m × n, имеющую следующий вид:
Первая строка этой матрицы составлена из коэффициентов многочлена h(х), записанных в обратном порядке (т. е. в порядке убывания степеней). Последующие строки составлены аналогичным образом из коэффициентов многочленов хh(х), ..., xm-1h(x).
Докажем, что матрица H является проверочной.
Действительно, пусть а(x) = ∑n-1i=0 aixi - произвольный кодовый многочлен. Рассмотрим идеал Vg(h(x)), порожденный проверочным многочленом h(х) и возьмем произвольный многочлен: b(х) = ∑n-1j=0 bjxj из этого идеала. Тогда a(x) = s(x)g(x), b(x) = q(x)h(x) и согласно (12)
a(x) b(x) = s(x) q(x) g(x) h(x) = 0.
С другой стороны, умножая многочлены а(х) и b(х) по правилам умножения в Fn (см. равенства (4)), получаем:
Так как многочлен а(х)Ьb(х) нулевой, то и все его коэффициенты равны нулю, в частности
a0bn-1 + a1bn-2 + ... + аn-1b0 = 0.
Это равенство означает, что всякий кодовый вектор ортогонален вектору (bn-1, bn-2, ..., b0) который получается из произвольного многочлена b(x) ∈ V, если его коэффициенты записать в обратном порядке. Таким образом, в силу построения матрицы (13), каждая ее строка ортогональна любому кодовому вектору и, стало быть, эта матрица является проверочной.
3. Вернемся снова к примеру циклического (7,4)-кода с порождающим многочленом g(x) = 1 + x2 + x3. Как было доказано, многочлен g(X) = 1 + X2 + X3 является делителем многочлена X7-1. Легко проверить, что
Х7 - 1 = (Х - 1) (Х3 + Х +1) (Х3 + Х2 + 1).
Следовательно, для проверочного многочлена h(x) имеем:
найти порождающие и проверочные матрицы всех двоичных циклических кодов длины 9 и длины 15.
5. Пусть f(X) = f0 + f1X + ... + fkXk - произвольный многочлен степени k. Многочлен f*(X) = Xkf(1/X) называют двойственным к f(Х).
Показать, что проверочная матрица циклического кода может быть записана в виде:
где h*(х) - многочлен, двойственный к проверочному многочлену h(x).
6. Убедиться, что код, дуальный к циклическому (см. § 11, дополнение 11), также является циклическим. Как связаны между собой порождающие и проверочные многочлены двух дуальных кодов?
7. Пусть g*(х) - многочлен, двойственный к многочлену g(x). Показать, что
а) коды, порожденные многочленами g(x) и g*(x), эквивалентны;
б) если для кода с порождающим многочленом g(x) выполняется условие g(x) = g*(x), то кодовое подпространство такого кода вместе с каждым вектором υ = (а0, а1, ..., an-1) содержит также и вектор υ* = (аn-1, аn-2, ..., a0).
8. Среди циклических кодов особую практическую важность имеет один специальный класс кодов, предложенных американскими математиками Боузом, Чоудхури и Хоквингемом. Эти коды так и называются кодами БЧХ - по начальным буквам фамилий этих математиков. Теория кодов БЧХ выходит за рамки настоящей книги, и мы только объясним в нескольких словах, каким образом они определяются. Для этого нам потребуются некоторые дополнительные сведения из теории полей.
Будем говорить, что подмножество F является подполем поля F‾, если F есть поле относительно операций на F‾. Справедлива такая теорема:
Для любого конечного поля F можно указать конечное поле F‾, удовлетворяющее следующим условиям:
1) F есть подполе поля F‾;
2) F‾ содержит n корней уравнения Xn - 1 = 0;
3) не существует поля, обладающего свойствами 1 и 2 и имеющего меньше элементов, чем F‾.
Пусть теперь для поля F указано поле F‾ со свойствами 1) - 3). Пусть α - примитивный элемент поля F‾, а числа s и l таковы, что элемент αs имеет порядок n и s + l < q, где q - число элементов поля F<. Циклический код называется кодом БЧХ (с параметрами n, s, l), если он состоит из всех многочленов степени ≤ n-1 с коэффициентами из F, среди корней которых содержатся все элементы
αs, αs+1, αs+2, ... αs+l.
Можно доказать, что кодовое расстояние такого кода не меньше l + 2. Следовательно, варьируя параметры n, s, l, мы имеем возможность получать коды БЧХ с любым расстоянием, а значит, исправляющие любое заданное число ошибок. Это обстоятельство счастливо дополняется тем, что для указанных кодов разработаны удобные алгоритмы декодирования, основанные на вычислениях в конечных полях и легко реализуемые автоматическими электронными устройствами.
9. До сих пор мы говорили о кодовом расстоянии кода и максимальном числе t исправляемых ошибок как об основных показателях корректирующей способности кода. Однако ясно, что более весомым показателем является величина t/n, показывающая, какова доля числа ошибочных символов от общего числа символов принятого слова, при которой возможно еще правильное декодирование (исправление ошибок). С другой стороны, отношение k/n (k - число информационных символов) характеризует избыточность кода: чем меньше это отношение, тем, очевидно, больше избыточность.
И вот здесь коды БЧХ обнаруживают некоторый изъян. Оказывается, при заданной корректирующей способности, т, е. заданной величине t/n, коды БЧХ большой длины имеют слишком высокую избыточность. Более того: если отношение t/n фиксировано, а n → ∞, то k/n → 0.
Стремление исправить этот недостаток привело к появлению таких кодовых конструкций, как коды-произведения (см. дополнение 12 к § 11) и их обобщение - каскадные коды. Строящиеся, как правило, на базе кодов БЧХ, они в значительной степени сохраняют их достоинства, но одновременно избавлены от упомянутого выше дефекта.