Санкт–Петербургский государственный университет
Факультет прикладной математики – процессов управления
Кафедра управления медико-биологическими системами
Боровой Иван Иванович
Образовательная программа: МК.3005.2014 «Математическая кибернетика»
Направление подготовки: 02.06.01 «Компьютерные и информационные науки»
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
Методы рациональной
интерполяции в задаче
помехоустойчивого кодирования
Заведующий кафедрой,
доктор физ.-мат. наук,
профессор
Александров А.Ю.
Научный руководитель,
доктор физ.-мат. наук,
профессор
Утешев А.Ю.
Рецензент,
кандидат техн. наук,
доцент
Ежгуров В.Н.
Санкт-Петербург
2017
Оглавление
1 Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2 Задача помехоустойчивого кодирования . . . . . . . . . . . . . .
5
3 Обзор литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 Коды, контролирующие ошибки . . . . . . . . . . . . . . . . . . . 21
5 Ганкелевы определители и полиномы. . . . . . . . . . . . . . . . 29
6 Рациональная интерполяция. . . . . . . . . . . . . . . . . . . . . . 35
7 Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2
Глава 1.
Введение
Разбиение математики на разделы, как, впрочем, и всего знания на науки, весьма условно. Средневековый учёный мог всю жизнь заниматься одним
делом, а потомки называли бы его физиком, астрономом, математиком и философом одновременно.
Однако, не упрекая и не оправдывая существующий порядок вещей, стоит обратить внимание на одно его очевидное достоинство. Многие вопросы,
лежащие на пересечении смежных областей знания, открываются под разными
углами и, порой, демонстрируют совершенно неожиданные для приверженцев
конкретной точки зрения свойства.
Данная работа, в целом, посвящена теории кодирования, подразделу теории информации1 . Задача помехоустойчивого кодирования не нова, и классические подходы к её решению были сформулированы ещё Р. Хэммингом в середине прошлого века.
В последние десятилетия вычислительная техника сделала огромный шаг
вперёд. Стало возможным применение сложных алгоритмов на широком классе устройств. Сам список этих устройств удлинился на порядок, что, в свою
очередь, расширило спектр задач и предъявило более высокие требования к
алгоритмам их решения и программным реализациям.
Ещё не так давно закон Мура обеспечивал стабильный рост вычислительных мощностей, а внедрению нового эффективного алгоритма зачастую предпочитался переход на более производительную архитектуру. Сегодня этот закон
потерял свою актуальность, чем можно объяснить резко возросшую популярность технологий параллельного программирования и гетерогенных вычислительных комплексов.
Такое развитие событий благотворно повлияло на теоретическую сторону
информационных технологий: быстрые алгоритмы стали особенно востребова1
Клод Шеннон (1916 – 2001) – американский инженер и математик, «отец» теории информации. Его
результаты не использованы здесь в явном виде, однако в силу значительного вклада в эту науку его имя,
несомненно, стоит упоминания.
3
ны. Однако их сложность настолько возросла, что выбрать лучшее решение из
удовлетворительных может оказаться непозволительно затратно и долго.
Стремясь всё же удовлетворить теоретический интерес и практическую
потребность в хороших кодах, данная работа ставит перед собой следующие
цели:
• описать основные идеи и методы теории кодирования;
• рассмотреть применение методов рациональной интерполяции в теории
кодирования;
• оценить перспективы использования методов рациональной интерполяции
в этой области.
4
Глава 2.
Задача помехоустойчивого кодирования
Прежде чем перейти к описанию предметной области, давайте договоримся о терминах.1
Начнём с простого. Слово «помехоустойчивый» будет употребляться в
своём естественном и интуитивном смысле — устойчивый к помехам. С той
лишь разницей, что степень, способ устойчивости, а также характер помех формализуются и оговариваются в каждом случае особо.
Слово же «кодирование» не столь очевидно.
Вообще говоря, кодирование не подразумевает сокрытия информации.
Подобное кодирование правильно называть шифрованием. То есть шифрование — способ кодирования, ставящий целью сокрытие информации.
Кодирование также не есть сжатие. Понятие сжатия так таковое допускает весьма вольные толкования, однако наиболее часто оно обозначает существенное уменьшение размера данных при пренебрежимо малой потере их информационной составляющей. Стоит отметить, что кодирование не допускает
потери информации. То есть, обратимость процесса кодирования существенна
и принципиальна.
Короче, кодирование — изменение представления информации, сохраняющее её содержание.
кодирование
шифрование
помехоустойчивое
кодирование
сжатие
Рис. 2.1: Что есть кодирование?
Отметим здесь наличие пересечения шифрования и помехоустойчивого
1
Эта здравая мысль в разных вариациях была высказана ещё Сократом («Давайте спорить, но прежде
давайте условимся в терминах») и Р. Декартом («Определимся в терминах, и половина человеческих споров
исчезнет»).
5
кодирования. Этот момент может служить своего рода проверкой на понимание
структуры кодирования в целом. Читателю предлагается поразмыслить над
данным фактом. Строго же непустота такого пересечения показана далее в
замечании 1, после введения соответствующих определений и формализма.
Основные понятия
2.0.1
Канал связи
Ключевым понятием теории помехоустойчивого кодирования является
двусторонний симметричный канал связи без памяти.
Эта абстракция описывает любые способы передачи данных, включая
произвольные их композиции, а также, возможно, этапы промежуточного хранения и преобразования информации. То есть, способ «доставки» информации
из точки A в точку B обобщённо называют каналом связи, независимо от его
реализации или отсутствия таковой.
Нас будут интересовать свойства канала; поясним сначала явно указанные
выше.
• Двусторонний канал подразумевает один вход и один выход. Влияние
третьей стороны на процесс передачи исключено2 .
• Симметричность гарантирует одинаковые свойства канала в обоих направлениях3 . Это означает, что каждый вход двустороннего канала со
свойством симметричности является также и выходом.
• Отсутствием памяти у канала называют принципиальную невозможность буферизации передаваемых данных, а также повторной их пересылки без участия передающей стороны.
Из прочих свойств канала связи наиболее важными являются следующие
два.
• Качественный характер помех, которым подвержен канал. Это может
быть, например, искажение информации или её частичная потеря.
2
Здесь имеется в виду активное целенаправленное вмешательство. Совокупность случайных факторов,
затрудняющих передачу, принято учитывать свойством самого канала — помехоустойчивостью.
3
Вообще говоря, симметричность не накладывает ограничения на передачу лишь в одном направлении в
каждый момент времени.
6
• Максимально возможный уровень помех. Обычно задаётся верхней границей количества испорченных или потерянных сообщений.
2.0.2
Отправитель и получатель
Назовём сущности, заинтересованные в передаче и приёме информации,
отправителем и получателем соответственно. Они находятся на разных концах
канала связи и могут обмениваться информацией исключительно посредством
него.
Предполагается, однако, что о форме представления передаваемой информации отправитель и получатель условились заранее. То есть данные могут
быть поданы на вход канала в модифицированном виде, но при этом получатель
в состоянии выполнить обратное преобразование.
2.0.3
Кодировщик и декодировщик
Для описания упомянутых преобразований данных вводятся посредники
между отправителем и каналом, между каналом и получателем. Логично назвать их кодировщиком и декодировщиком соответственно.
Выделив таким образом функции кодирования информации в отдельные
сущности, будем понимать их в дальнейшем как алгоритмы. Исследование типов подобных алгоритмов и структур данных, с которыми они работают, составляет содержание данной работы.
2.0.4
Код
Структура данных, которую формируют и поддерживают алгоритмы кодирования / декодирования и свойства которой обеспечивают возможность восстановления зашумлённой информации, называется кодом.
Важно различать код как таковой и его алгоритм. Код первичен, он может
иметь несколько алгоритмических реализаций. В то время как каждому из этих
алгоритмов может соответствовать целый ряд программных реализаций.
Понимание такой иерархии существенно для проведённого исследования.
В литературе же не редко конкретный код подразумевает единственный или
лучший алгоритм его построения и наоборот.
2.0.5
Шум
Шум является формализацией помех различной природы.
7
Особо отметим, что шумам подвержен лишь канал связи. Результаты работы кодировщика и декодировщика детерминированы и полностью определяются поданными на их входы данными.
2.0.6
Общая схема связи
На следующем рисунке можно проследить взаимосвязь между введёнными в предыдущих пунктах понятиями.
канал
связи
отправитель
кодировщик
декодировщик
получатель
Рис. 2.2: Схема связи
Линейные коды
Перейдём к более строгому изложению материала.
Рассмотрим линейное пространство Sk размерности k. Положим его элементы векторами-строками4 с компонентами из множества {0, 1}. Зададим операции сложения (+) и умножения (∗) на этом множестве традиционным образом
с использованием таблиц.
+
0 1
∗
0 1
0
0 1
0
0 0
1
1 0
1
0 1
Легко видеть, что операции сложения и умножения в таком поле равносильны
логическим XOR и AND соответственно.
Будем называть Sk пространством информационных слов, подлежащих
передаче по каналу связи.
Определение 1 (Вес Хэмминга). Весом Хэмминга w(x) вектора x называется число его ненулевых компонент.
Определение 2 (Расстояние Хэмминга). Расстоянием Хэмминга d(x, y) называется количество компонент, в которых x и y различны.
4
Строчная запись векторов является стандартом де-факто в теории кодирования.
8
С учётом таблицы сложения и определения 1, получим
d(x, y) ≡ w(x + y).
(2.1)
Лемма 1. Расстояние Хэмминга d является мерой.
Доказательство. Покажем выполнение трёх условий:
(a) d(x, y) ≥ 0,
d(x, y) = 0 ⇐⇒ x = y,
(b) d(x, y) = d(y, x),
(c) d(x, z) ≤ d(x, y) + d(y, z),
∀x, y, z.
(a) Согласно определению 2, d(x, y) = 0 тогда и только тогда, когда все
компоненты x и y совпадают. А это и означает x = y.
(b) Из коммутативности операции сложения в поле и (2.1) имеем: d(x, y) ≡
w(x + y) ≡ w(y + x) ≡ d(y, x).
(c) В силу определения 2, d(x, z) есть минимальное количество компонент, инвертирование которых переводит x в z. В свою очередь, инвертирование d(x, y) и d(y, z) компонент переводит x в y и y в z соответственно. А тогда
из минимальности d(x, z) следует искомое d(x, z) ≤ d(x, y) + d(y, z).
В силу произвольности выбора x, y, z, показанное справедливо для любых
x, y, z.
Пусть n ≥ k, тогда подпространство
Dnk ⊂ Dn ,
dim(Dnk ) = dim(Sk ) = k
(2.2)
есть пространство кодовых слов.
Зададим биекцию f : Sk ↔ Dnk . Таким образом, отображение f : Sk → Dnk
является этапом кодирования, поскольку переводит информационные вектора
в кодовые; f −1 производит декодирование.
Однако рассмотрения такого отображения не достаточно, поскольку оно
не учитывает возможное зашумление кодовых слов при передаче по каналу
связи. Введём для этого сюръекцию ξ : Dn → Dnk .
Как видно из рисунка 2.3 и (2.2), пространство кодовых векторов Dnk является подпространством зашумлённых векторов Dn .
9
n
k
D
n
D
Рис. 2.3: Пространство кодовых слов: незашумлённый и зашумлённый векторы
Пусть на вход канала был подан вектор x. Наличие ошибки в принятом
векторе y декодер может определить по факту y ∈
/ Dnk . Таким образом, суть
работы принимающей стороны описывается отображением
f ◦ ξ : Dn → Sk ,
где ◦ обозначает левую композицию функций.
Здесь есть тонкий момент относительно результирующего вектора y. Казалось бы, мы пренебрегаем случаями, когда
y ≡ x + e ∈ Dnk .
(2.3)
Здесь и далее e есть вектор ошибки. Чтобы прояснить этот вопрос, введём
Определение 3 (Кодовое расстояние). Кодовым расстоянием кода S называется
d(S) = min (d(x, y) : x, y ∈ S, x 6= y) .
(2.4)
Отсюда тотчас же следует, что одновременное выполнение w(e) < d(Dnk )
и (2.3) невозможно. Считая известной оценку максимально допустимого веса
вектора ошибки (свойство помехоустойчивости канала связи), можно гарантировать детектирование сбоя в передаче путём выбора Dnk : d(Dnk ) > w(emax ).
Иначе, код с расстоянием d может обнаружить не более d − 1 ошибок.
Аналогичную оценку для ситуации исправления ошибок даёт
Лемма 2. Код D с кодовым расстоянием d способен исправить не более b d−1
2 c
ошибок.
Доказательство. Пусть принят вектор y = x + e, w(e) ≤ b d−1
2 c. И пусть наd−1
шлось два вектора x1 , x2 ∈ D таких, что d(x1 , y) ≤ d−1
2 , d(y, x2 ) ≤ 2 . Но тогда
10
по лемме 1 d(x1 , x2 ) ≤ d(x1 , y) + d(y, x2 ) ≤ d − 1, что противоречит предположению d(D) = d.
С другой стороны, при передаче вектора x может произойти ситуация
d+1
0
0
w(e) = d−1
2 + 1 = 2 . Но тогда для y = x + e найдётся x ∈ D : d(x , y) =
d−1
d − d+1
2 = 2 . То есть ошибка будет исправлена неверно.
Определение 4. (n,k,d)-кодом называется код Dnk ⊂ Dn : d(Dnk ) = d.
Обобщим выше написанное: код длины n с k информационными компонентами и кодовым расстоянием d способен детектировать не более d − 1 или
исправить не более b d−1
2 c ошибок.
Определение 5. Скоростью r кода Dnk называется отношение k/n количества информационных компонент к его длине.
Как видно, скорость кода никак не связана со скоростью передачи информации по каналу связи. Первая — безразмерная величина, в то время как
вторая имеет размерность бит/с.
2.0.7
Матричное представление
Простейшим примером кода является код повторения. Кодирование сообщения в таком случае заключается в многократной повторной пересылке компонент информационного слова.
Предположим, что на вход кодировщику была подана единица. Тогда для
длины кода n на выходе получим 1| .{z
. . 1}. Таким образом, код повторения длины
n
n является (n, 1, n)-кодом.
Это следует из факта наличия лишь двух кодовых слов: 0| .{z
. . 0} и 1| .{z
. . 1}.
n
n
Однако этап кодирования можно также удобно описать, используя матричный формализм.
0
1
1×1
∗ 1 1 ... 1
1×1
∗ 1 1 ... 1
1×n
= 0 0 ... 0
1×n
= 1 1 ... 1
1×n
1×n
Здесь информационная вектор-строка умножается на матрицу кода. В
результате получается кодовый вектор.
11
Исходный вектор принадлежит пространству Dn1 , в то время как результирующий принадлежит Dnn ≡ Dn , что согласуется с определением (n, 1, n)-кода.
Итак, код повторения длины n способен исправить до b d−1
2 c ошибок, принимая
за верное наиболее частое значение. Так, кодовое слово 10101 будет декодировано в информационное 1, а 10001 — уже в 0.
Однако матричный подход оказывается подходящим и для более сложных
случаев, в чём и заключаются его удобство и универсальность.
Рассмотрим матрицу
G2×3 =
!
1 0 1
.
0 1 1
Она задаёт, так называемый код чётности. Этот (3, 2, 2)-код способен обнаруживать только одну ошибку, и назван так потому, что в третьем разряде кодового слова будет содержаться 0 или 1 в зависимости от чётности или нечётности
суммы двух первых компонент.
0 0
0 1
1 0
1 1
1×2
1×2
1×2
1×2
∗ G2×3
∗ G2×3
∗ G2×3
∗ G2×3
= 0 0 0
= 0 1 1
1×3
= 1 0 1
1×3
= 1 1 0
1×3
1×3
Возникает следующий вопрос: как проверить принадлежность принятого слова пространству кодовых слов? Ведь при больших значениях k их число
может достигать 2k , и хранить такой объём информации видится маловозможным.
Здесь оказывается уместен введённый формализм линейных пространств.
Поскольку Dnk является подпространством Dn , то
x·y =0
∀x ∈ Dnk ,
y ∈ D̂nk ,
где D̂nk является ортогональным дополнением Dnk до Dn .
12
(2.5)
Легко видеть, что можно построить матрицу H из базисных векторов D̂nk ,
и тогда будет возможно проверять наличие ошибок по весу результирующего
вектора
z ≡ x · H 6= 0̄
⇔
w(z) 6= 0.
(2.6)
Такая проверка куда удобнее, чем (2.5), поскольку позволяет хранить в
памяти лишь базисные вектора, количество которых, как известно, совпадает
с размерностью пространства.
Определение 6 (Порождающая матрица кода). Матрица G, составленная
из базисных векторов пространства Dnk называется порождаюшей матрицей
кода.
Определение 7 (Проверочная матрица кода). Матрица H, составленная из
базисных векторов пространства D̂nk : Dnk ⊕ D̂nk ≡ Dn называется проверочной
матрицей кода Dnk .
Введённые обозначения G и H являются традиционными в теории кодирования.
Из (2.5) и (2.6) также следует
G · H ≡ 0.
(2.7)
Заметим, что для приведённого выше кода чётности
G2×3 =
!
1 0 1
,
0 1 1
H3×1
1
= 1 .
1
В заключение пункта сделаем обещанное к рисунку 2.1
Замечание 1. Покажем непустоту пересечения шифрования и помехоустойчивого кодирования на простом примере.
Для начала схематично опишем процесс шифрования как перестановку
ζ(Ω) : Sk ↔ Sk . Причём ζ −1 может быть легко найдена по самой ζ и набору
параметров Ω. При отсутствии Ω обращение функции шифрования крайне
затруднительно. Потому Ω называется ключом шифра и держится в секрете.
13
Теперь легко видеть, что ζ ◦ f ◦ ξ : Sk ↔ Dn обладает свойствами как
помехоустойчивого кодирования, так и шифрования. Отметим, что правая
композиция этим свойствам удовлетворять не будет.
Постановка задачи
Возможно, это покажется нелогичным на первый взгляд, однако краеугольным камнем теории кодирования является не создание быстрых алгоритмов (де)кодирования.
Как было замечено ранее в пункте 2.0.4, первичен сам код. А потенциальная возможность существования быстрых алгоритмов определяется уже затем
его структурой.
• Количество информационных компонент k. Чем больше k, тем выше (согласно определению 5) скорость кода. То есть, тем меньшее время потребуется для передачи информации. Разумно выбирать коды с большим k.
• Длина кода n. Рассуждения для больших значений k справедливы и для
малых n, с учётом того, что количество информационных компонент не
может превышать общую длину кода. Иными словами, желательна минимизация n.
• В то же время, эффективность обнаружения и исправления ошибок напрямую зависит от кодового расстояния d. Однако для задания сложной
структуры требуется большое число служебных компонент, что снижает
скорость кода.
Прискорбно, пусть и не удивительно, однако приведённые требования противоречивы.
К счастью, в прикладных задачах хотя бы один из этих параметров известен: k при фиксированной длине сообщения (SMS), n для заданного размера
ячейки данных (сектора и блоки НЖМД5 ), d в случае предсказуемого характера помех (любая стационарная сеть датчиков).
В таких случаях задачу можно переформулировать одним из следующих
образов.
5
Накопители на жёстких магнитных дисках.
14
• При известном размере сообщения k построить наиболее короткий код
Dnk , n → min с учётом d(Dnk ) = d.
• Для заданной длины кода n построить код Dnk : d(Dnk ) = d с наибольшим
количеством информационных компонент.
• По фиксированному кодовому расстоянию d построить код с наибольшей
скоростью k/n → max.
Несмотря на наличие многих эффективных и проверенных временем кодов, вопрос построения новых по заданным параметрам (n, k, d) остаётся на
сегодняшний день открытым.
Главную роль в этом играют всё более высокие запросы прикладных исследований, как то: цифровые носители информации повышенной ёмкости и надёжности, каналы связи сверхвысокой пропускной способности, передача данных исследовательскими зондами с других планет.
Основным способом — или, точнее, попыткой — решения указанной задачи является построение новых классов кодов, имеющих удобные для рассмотрения закономерности структуры. С одной стороны, несомненное достоинство
такого подхода — возможность построения ряда кодов по общей схеме в рамках класса. С другой же стороны, существует не менее серьёзный недостаток:
под различными классами кодов часто лежит совершенно, казалось бы, не связанная теория. А значит, для выбора наилучшего кода среди представителей
нескольких классов необходимо иметь одновременно широкую и глубокую теоретическую базу.
Так, например, в последние годы всё чаще стали появляться публикации
на тему применения в помехоустойчивом кодировании аппарата вейвлетов. Для
адекватного анализа вейвлетных кодов и сравнения их с широко используемыми кодами Рида–Соломона и LDPC6 следовало бы иметь знания и опыт работы
с вейвлетами, арифметикой полиномов полей Галуа и теорией графов соответственно.
Задачей данной работы является разработка и применение методов рациональной интерполяции в задаче помехоустойчивого кодирования.
Рассмотрим задачу интерполяции для рациональных функций.
6
Low Density Parity Check codes
15
Задача. Для таблицы значений переменных x и y
x x1 x2 . . . xN
y y1 y2 . . . y N
,
{xj }N
j=1 все различны ,
(2.8)
построить ее рациональный интерполянт, т. е. рациональную функцию такую,
что
{r(xj ) = yj }N
(2.9)
j=1 .
Здесь r(x) = p(x)/q(x) при
p(x) = p0 xn + p1 xn−1 + . . . + pn , q(x) = q0 xm + q1 xm−1 + . . . + qm , p0 6= 0, q0 6= 0,
и N = n + m + 1.
Замечание 2. В дальнейшем не будем делать различия между интерполянтами, числитель и знаменатель которых домножены на общий числовой
множитель.
Следует упомянуть о некоторых особенностях задачи рациональной интерполяции, отличающей ее от интерполяции полиномиальной. В то время как
последняя всегда имеет решение, задача интерполяции рациональной не всегда
разрешима в указанной постановке. Для иллюстрации этого, преобразуем (2.9)
в систему уравнений
(2.10)
{p(xj ) = yj q(xj )}N
j=1 ,
или, в развернутом виде,
pn + · · · + p1 xjn−1 + p0 xnj = qm yj + qm−1 xj yj + · · · + q1 xm−1
yj + q0 xm
j yj
j
N
,
(2.11)
которая линейна относительно N + 1 коэффициентов p(x) и q(x). Конструктивная разрешимость этой системы может быть установлена средствами линейной
алгебры.
j=1
Пример 1. При deg p(x) = 1, deg q(x) = 3 найти рациональный интерполянт
для таблицы
x −1 0 1 2 3
.
y 1 1 1/3 3 1/13
16
Решение. Решая систему (2.11), получаем p(x) ≡ x − 2, q(x) ≡ x3 − x2 −
x − 2. Однако p(2) = 0 и q(2) = 0, а потому условие r(2) = 3 не выполнено. Оно
не будет выполнено, даже если сократить p(x) и q(x) на их общий линейный
делитель.
Природа этого феномена кроется в неэквивалентности перехода от (2.9)
к (2.10), поскольку для некоторого узла xj может существовать решение линейной системы (2.11), удовлетворяющее обоим условиям: p(xj ) = 0 и q(xj ) = 0.
Вместе с тем, в случае существования решение задачи может оказаться не единственным.
Пример 2. Для таблицы
x −1 0
y
1
1
2
3
1 1/3 1/7 1/13
значений функции 1/(x2 +x+1) существует бесконечно много интерполянтов
при deg p(x) = 1, deg q(x) = 3 в форме (x − λ)/((x − λ)(x2 + x + 1)) при λ 6∈
{−1, 0, 1, 2, 3}.
Настоящая статья посвящена подходу к решению задачи, основанному
на идее, предложенной в 1846 г. Карлом Якоби [18]. Такой подход заключается в представлении полиномов числителя и знаменателя в виде определителей специального вида: так называемых ганкелевых полиномов. Элементами
этих определителей, помимо мономов по x, являются некоторые рациональные
симметрические функции элементов таблицы (2.8). Работа Якоби может считаться практически забытой в XX в.: ссылки на нее немногочисленны (и не
всегда корректны). Возможно, данное обстоятельство связано с сомнениями в
практической значимости предложенного подхода. Действительно, определитель большого порядка, зависящий от параметра, крайне неудобен для практических расчетов7 . Однако же, удалось обнаружить процедуру, позволяющую
обойти упомянутую проблему: для ганкелевых полиномов существует рекурсивная по порядку определителей процедура их вычисления, сводящая расчёт
такого полинома k-го порядка к получению двух полиномов меньших порядков.
Удивительно то, что автором идеи такой процедуры оказался тот же Якоби, а
ее исчерпывающее обоснование было осуществлено его учеником Фердинандом
7
Достаточно вспомнить проблему вычисления характеристического полинома матрицы.
17
Йоахимшталем [19]. Приведем этот результат в п. 5. В п. 6 излагается основной
теоретический результат по разрешимости задачи рациональной интерполяции
в терминах ганкелевых полиномов и на примере иллюстрируется применение
результата Якоби–Йоахимшталя для получения всего семейства решений рассматриваемой задачи — при всех возможных комбинациях степеней числителя
и знаменателя.
18
Глава 3.
Обзор литературы
Теория кодирования — довольно молодая наука, и классические труды по
ней были написаны лишь в XX веке.
Прежде всего, это работы уже упомянутых К. Шеннона [28] и
Р. Хэмминга [11, 12]. В качестве подтверждения классического статуса данных
работ можно привести тот факт, что коды Хэмминга и по сей день не только
являются базовым построением большинства теоретических курсов кодирования [27, 34], но и находят применение в современных высокотехнологичных
решениях [23, 29].
Целая веха также связана с фамилиями Боуза, Чоудхури, Хоквинге1
ма [7, 14] (далее – БЧХ) и появлением одноимённого класса кодов. Эти коды
получили широкое распространение благодаря удобству построения [14] и скорости декодирования [7], породив впоследствии более узкие подклассы кодов со
значительно лучшими свойствами в пределах области их применимости.
К 80-м годам теоретические основы помехоустойчивого кодирования были сформированы. С практической стороны это подтверждается успешным
использованием методов исправления ошибок в ходе космических программ
Mariner 9 (1971) и Voyager (1977)2 . Исчерпывающее описание состояния теории
кодирования на тот момент дают монографии [2, 5].
В более поздний период работ столь широкого профиля не наблюдается. Это можно объяснить явно оформившимся к тому времени разделением
кодирования на две части: сугубо практическую, обусловленную появлением
доступных вычислительных машин, и теоретическую. В первом случае внимание преимущественно уделялось модификации зарекомендовавших себя кодов
и разработке эффективных алгоритмов их реализации на существующих аппаратных архитектурах [5, 31]; во втором – построению новых субоптимальных кодов, приближающихся к указанной Р. Хэммингом теоретической границе [3, 10].
1
2
Bose R.C., Ray-Chaudhury D.K., Hocquenghem A.
Были использованы коды Адамара (Hadamard [32, 6, 16]) и Голея (Golay [23, 12, 7]) соответственно.
19
В настоящее время коды, управляющие ошибками, вышли далеко за
границы высоконадёжных и высокотехнологичных систем. Так, коды Рида–
Соломона используются в двумерных штрих-кодах (QR code) [15, 25], вариации
контрольных сумм «чётности» используются при формировании международного стандартного книжного номера3 (ISBN) [16].
Что касается интерполяции вообще и рациональной интерполяции в частности, здесь в первую очередь стоит отметить Коши [8], аппарат которого
послужил прекрасным примером одновременной изящности и строгости математических выкладок. Его результаты в дальнейшем были развиты Кронекером [21, 22] и Нетто [24].
Интерполяция многочленами специальных видов, как-то: Ганкеля и
Лагранжа – подробна рассмотрена в следующих публикациях [20, 26, 33].
3
International Standard Book Number
20
Глава 4.
Коды, контролирующие ошибки
Типы кодов и их свойства
Хаффмана
коды
блочные
свёрточные
Рида—Соломона
вейвлетные
Рис. 4.1: Типы кодов
В помехоустойчивом кодировании традиционно рассматривается два типа
кодов: свёрточные и блочные.
Свёрточные коды применяются, когда данные поступают непрерывным
потоком, и важно обрабатывать их в режиме реального времени. Принцип их
работы заключается в кодировании каждой компоненты с учётом нескольких
предыдущих. Такой метод хорошо подходит, например, для передачи информации по сети.
Блочные же коды, как можно догадаться из названия, преобразуют целиком набор информационных слов фиксированного размера; причём необходимым условием является наличие всего блока информации на момент начала
кодирования.
Далее в работе будут рассматриваться только блочные коды.
Большое значение для свойств кода имеет количество его кодовых слов.
Это следует из взаимооднозначного соответствия информационных и кодовых
векторов. При недостаточном количестве кодовых слов, отправитель будет вынужден использовать более длинный (а значит, и более медленный) код.
Существует верхняя граница количества кодовых слов для кода длины n,
введённая Р. Хэммингом и названная его именем.
21
Лемма 3 (Граница Хэмминга). Число кодовых слов (n, ∗, d)-кода не превосходит
2n
,
P d−1
j
2
j=1 Cn
где Cnj — биномиальные коэффициенты.
Доказательство этой леммы можно найти в книге [5].
Коды, достигающие этой границы называются совершенными. Поиск таких кодов является открытой задачей. Известными на сегодняшний день совершенными кодами являются (23,12,7)-код Голея и (7,4,3)-код Хэмминга.
Последний из них, в силу его исторической значимости и при этом актуальности [23], будет рассмотрен подробнее.
Коды Хэмминга
Коды Хэмминга — это целый класс кодов сходной структуры. Тем не менее, в своей работе [11] он описывает только (7, 4, 3)-код, за которым и закрепилось название код Хэмминга.
Здесь мы рассмотрим более подробно (7, 4, 3)-код и затем укажем общий
способ построения более длинных кодов.
4.0.1
(7, 4, 3)-код Хэмминга
Код Хэмминга задаётся следующей матрицей
G4×7
1 0
0 1
=
0 0
0 0
0
0
1
0
0
0
0
1
1
1
0
1
1
1
1
0
1
0
1
1
.
Составляя всевозможные линейные комбинации базисных векторов порождающей матрицы, приведём таблицу всех кодовых слов. В таблице 4.1
ij , j = 0, 3 обозначают информационные разряды, sj , j = 0, 2 — служебные.
Прежде всего, покажем, что код Хэмминга является совершенным.
Из таблицы 4.1 видно, что количество кодовых векторов равно 16, что с
22
№
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
i0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
i1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
i2
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
i3 s0 s2 s3
0 0 0 0
1 0 1 1
0 1 1 0
1 1 0 1
0 1 1 1
1 1 0 0
0 0 0 1
1 0 1 0
0 1 0 1
1 1 1 0
0 0 1 1
1 0 0 0
0 0 1 0
1 0 0 1
0 1 0 0
1 1 1 1
Таблица 4.1: Кодовые слова (7, 4, 3)-кода Хэмминга
равенством удовлетворяет введённой ранее в лемме 3 границе Хэмминга:
16 =
2n[=7]
27
27
= 24 = 16.
=
=
0
1
3
Cn[=7] + Cn[=7]
1+7 2
Здесь суммирование биномиальных коэффициентов оборвано на C71 потому, что в соответствии с леммой 2 (7, 4, 3)-код способен исправить не более
b 3−1
2 c = 1 ошибки.
По правой части матрицы G видно, что служебные компоненты задаются
следующими соотношениями
s 0 = i0 + i1 + i2 ,
s 1 = i1 + i2 + i3 ,
s 2 = i0 + i1 + i3 .
Из (2.7) можно найти проверочную матрицу
23
H3×7
4.0.2
1 1 0 1 1 0 0
= 1 1 1 0 0 1 0 .
1 0 1 1 0 0 1
Общий случай
Для построения более длинных кодов Хэмминга заметим следующий
факт: правый блок матрицы G является транспонированным левым блоком
матрицы H.
Таким образом, введя обозначения
1 0 ... 0
0 1 ... 0
,
Ek =
..
.
0 0 . . . 1 k×k
H=
h
P EM
i
,
G=
h
EN −M P
T
i
,
(4.1)
можно получить прямое соответствие между порождающей и проверочной матрицами кода.
Использованные параметры N и M выбирают исходя из условий
N = 2M − 1,
n = 2M − 1,
k = 2M − M − 1.
(4.2)
Подробно этот момент рассмотрен в [34]. Мы же не будем останавливаться на
данном вопросе, так как работа не претендует на новшества в конкретной области.
Итак, возвращаясь к построению длинных кодов Хэмминга, можно видеть, что задача сводится к выбору подходящей матрицы P и / или одной из
матриц G и H.
Приведём формальный алгоритм, строящий коды Хэмминга.
• Зафиксировать значения параметров N, M : N > M в соответствии
с (4.2).
• Построить невырожденную матрицу PM ×(N −M ) , не содержащую строк
единичной матрицы соответствующей размерности.
• Достроить P T и P до порождающей и проверочной матриц, исходя из
24
условий (4.1)
Найденные таким образом матрицы G и H будут задавать базисы пространства кодовых слов и ортогонального дополнения к нему соответственно.
Коды Рида–Соломона
Коды Рида–Соломона основаны на аппарате полиномов полей Галуа. Совершим небольшое введение в предметную область, необходимое для построения данного класса кодов.
4.0.3
Арифметика полиномов в конечных полях
Как и ранее, будем придерживаться бинарной арифметики, а потому будем рассматривать поля вида GF (2m ).
Введём необходимые определения.
Определение 8 (Примитивный элемент). Примитивным элементом a поля
GF (2m ) называется первообразный корень из единицы степени 2m − 1.
Заметим, что существование единицы (равно как и нулевого элемента)
гарантируется свойствами поля.
Существенным свойством примитивного элемента является то, что при
возведении в степень он пробегает все ненулевые элементы поля. Таким образом, все элементы конечного поля возможно занумеровать, поставив каждому
из них в соответствие некоторый номер степени примитивного элемента.
Определение 9 (Порядок элемента). Порядком элемента b ∈ GF (2m ) называется такое число j, что aj = b, где a — примитивный элемент поля.
Определение 10 (Неприводимый полином). Полином g(x) называется неприводимым над полем, если он не может быть представлен в виде произведения
двух других полиномов над тем же полем.
Как показано в [27], конечное поле может быть задано при помощи неприводимого полинома. Операции сложения и умножения в таком случае задаются
аналогично сложению и умножению в бесконечных полях, с той лишь разницей,
что результат берётся по модулю выбранного неприводимого полинома.
25
Определение 11 (Генерирующий полином). Неприводимый полином g(x), по
модулю которого производится операция умножения в поле, называется генерирующим полиномом поля.
Такой формализм позволяет нам сопоставить каждому полиному вектор
его коэффициентов и наоборот. То есть, информационные вектора теперь есть
также и информационные полиномы.
Пример 3 (GF (24 )). Приведём пример такого соответствия для поля, генерируемого полиномом g(x) = x4 + x + 1.
x3 + x + 1 ↔ (1011)
x2 + x ↔ (0110)
4.0.4
Построение кодов Рида–Соломона
Как и в случае кода Хэмминга, ограничимся схематичным описанием процесса построения кода, достаточным для указания его свойств и последующего
анализа.
Основная идея данного класса кодов заключается в использовании целых информационных блоков вместо единичных компонент. То есть, информационный вектор отправителя будет состоять не из скаляров, а из полиномов,
принадлежащих некоторому полю GF (2m ).
Таким образом, повреждение сразу нескольких бит внутри одного полинома будет считаться единичной ошибкой, и может быть исправлено декодером
за один проход.
Кодирование. Коды Рида–Соломона обладают очень значимым свойством
лёгкости получения кодового вектора из информационного. При всей своей кажущейся сложности, процесс кодирования сводится к умножению информационного полинома f (x) на генерирующий g(x). Полученное произведение и есть
кодовый вектор.
Однако мы до сих пор не указали критериев выбора генерирующего полинома. Остановимся на этом подробнее.
Поскольку генерирующий полином определяет процессы кодирования и
декодирования, то он выбирается таким образом, чтобы облегчить детектиро-
26
вание ошибок. А именно,
g(x) = (x − a)(x − a2 )(x − a3 ) . . . (x − a2ν ).
(4.3)
Количество корней 2ν выбрано для удобства дальнейшего изложения.
При таком выборе, кодовый полином
G(x) ≡ f (x)g(x)
(4.4)
также будет иметь корнями a, a2 , a3 , . . . , a2ν , в силу (4.3).
Декодирование. Процедура декодирования кодов Рида–Соломона делится
на две части: восстановление (расшумление) принятого кодового полинома и
нахождение исходного информационного вектора.
Начнём описание со второй части, как более простой.
Принимая во внимание (4.4), логично проводить декодирование следующим образом:
f (x) = G(x)/g(x).
Однако, вообще говоря, такая запись не верна. Правильно будет искать
информационный полином в виде
f (x) = G(x) · g −1 (x).
Так как генерирующий полином g(x) известен на этапах кодирования и
декодирования и не меняется, есть потенциальная возможность предвычислить
его обратный полином g −1 (x) и использовать эту информацию для ускорения
декодирования.
Такой подход является перспективным и актуальным. На эту тему автором данной работы было проведено исследование и написана статья [31], раскрывающая затронутый вопрос в деталях.
Перейдём к случаю расшумления принятого полинома.
Пусть на выходе канала связи оказался полином
e
G(x)
6= G(x).
27
e
Тогда, согласно (4.3), G(x)
будет принимать ненулевые значения в корнях
генерирующего полинома g(x), то есть
e
S0 = G(a),
e 2 ),
S1 = G(a
...
e 2ν ).
S2ν−1 = G(a
e
Величины Sj называются синдромами полинома G(x).
Они пока не дают
сведений о позиции и величине ошибки передачи. Тем не менее, синдромы могут
быть использованы для построения полинома локаторов ошибок.
Корнями такого полинома являются локаторы ошибок e, которые задаются в степенном виде e = aq , в соответствии с определением 9.
Зная локатор (то есть, местоположение) ошибки и найдя её величину, мы
e
восстанавливаем переданный полином G(x) из полученного G(x).
Задача построения полинома локаторов ошибок формулируется аналогично задаче интерполяции в конечных полях. Другими словами, её можно задать
при помощи таблицы.
x a1 a2 . . . a2ν
y S0 S1 . . . S2ν−1
Таблица 4.2: Интерполяционная таблица полинома локаторов ошибок
Здесь 2ν есть количество корней генерирующего полинома из (4.3).
Эффективный алгоритм интерполяции в конечных полях, применимый
в конкретном случае, был рассмотрен автором данной работы в статье [1]. Он
сводится к вычислению определителя суперсимметричной матрицы, стоящей в
левой части уравнения
S0 S1
S1 S2
Sν−1 Sν
· · · Sν−1
Λν
Sν
· · · Sν Λν−1 Sν+1
. = . ,
.
. .
.
.
. .
· · · S2ν−2
Λ1
S2ν−1
где неизвестные Λ1 . . . Λν суть искомые коэффициенты полинома локаторов
ошибок.
28
Глава 5.
Ганкелевы определители и полиномы.
Для числовой последовательности (конечной или бесконечной)
{cj }∞
j=0 = {c0 , c1 , . . . }
(5.1)
матрица вида
[ci+j−2 ]ki,j=1
=
c0
c1
..
.
ck−2
ck−1
c1
c2
..
.
ck−1
ck
c2
c3
ck
ck+1
. . . ck−1
. . . ck
..
.
. . . c2k−3
. . . c2k−2
(5.2)
k×k
называется ганкелевой матрицей порядка k, порожденной последовательностью (5.1). Ее определитель будем обозначать Hk ({c}), или просто Hk , если
это не вызывает путаницы.
Если заменим последнюю строку ганкелевой матрицы порядка k + 1 строкой, составленной из степеней x, то соответствующий определитель
x x2
. . . xk
(k+1)×(k+1)
c1 − c0 x
c2 − c1 x
c2 − c1 x
c3 − c2 x
..
.
ck − ck−1 x ck+1 − ck x
29
ck − ck−1 x
ck+1 − ck x
..
.
. . . c2k−1 − c2k−2 x
...
...
..
.
или просто Hk (x), называется k-м ганкелевым полиномом [13], порожденным последовательностью (5.1). Разложение определителя (5.3) по его последней строке дает
Hk (x) ≡ hk0 xk + hk1 xk−1 + hk2 xk−2 + . . .
при hk0 = Hk .
Таким образом, deg Hk (x) = k тогда и только тогда, когда Hk 6= 0.
Теорема 1 (Якоби, Йоахимшталь). Любые три последовательных ганкелевых
полинома Hk−2 (x), Hk−1 (x), Hk (x) связаны соотношением:
2
Hk2 Hk−2 (x) + (Hk hk−1,1 − Hk−1 hk1 − Hk Hk−1 x) Hk−1 (x) + Hk−1
Hk (x) ≡ 0 . (5.4)
Доказательство.1 . Рассмотрим сначала случай, когда порождающая последовательность (5.1) задается в виде
(
cj =
m
X
`=1
)2k−1
λj`
(5.5)
j=0
при m > k и произвольных различных λ1 , . . . , λm . Докажем справедливость
следующих соотношений:
m
X
(
λj` Hk (λ` ) =
`=1
0,
если j ∈ {0, . . . , k − 1},
Hk+1 , если j = k .
(5.6)
Действительно,
c0
c1
..
.
ck−1
1
c1
c2
..
.
ck
λ`
. . . ck
. . . ck+1
..
.
. . . c2k−1
. . . λk`
c0
c1
..
.
ck−1
cj
c1
c2
..
.
ck
cj+1
. . . ck
. . . ck+1
..
.
. . . c2k−1
. . . cj+k
При j < k последний определитель обращается в нуль, поскольку содержит две
одинаковые строки. При j = k он совпадает с Hk+1 .
1
Приводимое доказательство представляет собой переписанное в современных обозначениях оригинальное
доказательство из [19].
30
Пусть Hk−1 6= 0 (т. е. deg Hk−1 (x) = k − 1). Разделим Hk (x) на Hk−1 (x):
Hk (x) ≡ Q(x)Hk−1 (x) + R(x) .
(5.7)
Здесь коэффициенты частного выражаются через коэффициенты Hk (x) и
Hk−1 (x):
Q(x) = Q0 + Q1 x
при Q1 =
Hk
Hk−1 hk1 − Hk hk−1,1
.
, Q0 =
2
Hk−1
Hk−1
(5.8)
Для нахождения коэффициентов остатка R(x) = R0 + R1 x + · · · + Rk−2 xk−2
подставим x = λ1 , . . . , x = λm в (5.7):
Hk (λ` ) = (Q0 + Q1 λ` ) Hk−1 (λ` ) + R0 + R1 λ` + · · · + Rk−2 λk−2
`
m
`=1
.
(5.9)
Суммирование этих равенств дает
m
X
`=1
Hk (λ` ) = Q0
m
X
Hk−1 (λ` )+Q1
`=1
m
X
λ` Hk−1 (λ` )+(c0 R0 +c1 R1 +· · ·+ck−2 Rk−2 ) .
`=1
Согласно (5.6), получим
0 = c0 R0 + c1 R1 + · · · + ck−2 Rk−2 .
Далее умножим каждое равенство (5.9) на соответствующие λj` и просуммируем
полученные равенства по `. При j ∈ {1, . . . , k − 3} приходим к равенствам
0 = cj R0 + cj+1 R1 + · · · + cj+k−2 Rk−2 .
При j = k − 2 имеем равенство слегка иного вида:
0 = Hk Q1 + ck−2 R0 + ck−1 R1 + · · · + c2k−4 Rk−2 .
Объединяя полученные равенства в систему, рассматриваем ее как линейную
относительно R0 , . . . , Rk−2 и разрешаем по формулам Крамера. Результат может быть записан как тождество
R(x)Hk−1 + Hk Q1 Hk−2 (x) ≡ 0 ,
31
которое вместе с выражением (5.8) для Q1 подтверждает истинность (5.4) для
частного случая порождающей последовательности, заданной (5.5).
Рассмотрим теперь случай произвольной порождающей последовательности (5.1). Для любой заданной последовательности комплексных чисел
c1 , . . . , c2k−1 возможно отыскать комплексные числа λ1 , . . . , λ` такие, что при
` > 2k − 1 уравнения (5.5) будут совместными. Эти числа могут быть найдены как корни полинома степени `, первые 2 k − 1 сумм Ньютона [9] которого
совпадают с {cj }2k−1
j=1 .
Для завершения доказательства следует заполнить пробел в аргументации предыдущего абзаца. В то время как числа c1 , . . . , c2k−1 могут быть выбраны произвольными, число c0 оказывается целым положительным, а именно
равным `. Таким образом, истинность (5.4) доказана лишь для c0 ∈ N. Однако
2k−1
доказываемое равенство является алгебраическим относительно {cj }j=0
и, будучи выполненным для бесконечного набора целых чисел, должно выполняться
для любого c0 ∈ C.
Тождество (5.4) позволяет организовать рекурсивную процедуру вычисления ганкелевых полиномов. В самом деле, предположим, что канонические
представления полиномов Hk−2 (x) и Hk−1 (x) уже найдены:
Hk−1 (x) ≡ hk−1,0 xk−1 + hk−1,1 xk−2 + · · · + hk−1,k−1 при hk−1,0 = Hk−1 .
В таком случае в (5.4) известны значения почти всех констант, за исключением
Hk и hk1 . Для последних имеются лишь детерминантные представления:
c1
c
.
.
.
c
c
c
.
.
.
c
c
2
k−1
k
2
k−1
k+1
..
..
..
..
..
..
..
Hk =
k−2 ck−1 . . . c2k−4 c2k−3
ck−2 ck−1 . . . c2k−4 c2k−2
ck−1 ck
. . . c2k−3 c2k−2
Эти определители отличаются от транспонированного детерминантного представления Hk−1 (x) только последними столбцами. Разложения по элементам
последних столбцов имеют одинаковые значения для соответствующих алгеб-
32
раических дополнений, и потому формулы
hk0 = Hk = ck−1 hk−1,k−1 + ck hk−1,k−2 + · · · + c2k−2 hk−1,0 ,
hk1 = −(ck hk−1,k−1 + ck+1 hk−1,k−2 + · · · + c2k−1 hk−1,0 )
(5.10)
позволяют выразить hk0 и hk1 посредством уже известных коэффициентов полинома Hk−1 (x).
Однако предложенный алгоритм рекурсивного вычисления Hk (x) не работает в случае, когда Hk−1 = 0. Модификация процедуры может быть осуществлена с помощью следующего результата.
Теорема 2. Пусть Hk−2 6= 0, Hk−1 = 0. Если hk−1,1 = 0, то
Hk−1 (x) ≡ 0
и
Hk (x) ≡
hk2
Hk−2 (x) .
Hk−2
В противном случае
Hk−1 (x) ≡
hk−1,1
Hk−2 (x)
Hk−2
(5.11)
и
Hk (x) ≡
Hk−2 (x)
Hk Hk−2 hk−1,1 Hk−3 (x) −
3
Hk−2
. (5.12)
Замечание 3. Формулы теоремы 2 — (5.11) и (5.12) — позволяют производить рекурсивное вычисление Hk (x), когда полиномы Hk−2 (x) и Hk−3 (x) уже
посчитаны. Участвующие в этих формулах константы, такие как hk−2,1 ,
hk−2,2 , hk−1,1 и hk,1 , либо считаются известными как коэффициенты ганкелевых полиномов, либо могут быть вычислены при помощи формул (5.10).
Единственным исключением является hk2 . Для вычисления этой величины
предлагается использовать формулу
hk2
(c2k−2 hk−2,0 + c2k−3 hk−2,1 + · · · + ck hk−2,k−2 )2
,
=−
Hk−2
которая справедлива при Hk−1 = 0, Hk−2 6= 0.
33
Замечание 4. Фактически, формулу (5.4) следует воспринимать в качестве
первоисточника алгоритма, известного в настоящее время как алгоритм
Берлекампа–Месси [5]; он был предложен для декодирования кодов Боуза–
Чоудхури–Хоквингема и Рида–Соломона, а также для нахождения минимального полинома линейной рекуррентной последовательности.
34
Глава 6.
Рациональная интерполяция.
Основной теоретический результат статьи предварим следующей леммой [9]:
Q
Лемма 4. Обозначим W (x) = N
j=1 (x − xj ). Справедливы следующие равенства Эйлера–Лагранжа:
N
X
j=1
xkj
=
W 0 (xj )
(
0, если k ∈ {1, . . . , N − 2},
1, если k = N − 1.
(6.1)
Теорема 3. Пусть {yj 6= 0}N
j=1 . Вычислим последовательности
(
τk =
N
X
xkj
yj 0
W (xj )
j=1
)2m
(
и
k=0
N
X
1 xkj
τek =
y W 0 (xj )
j=1 j
)2n−2
(6.2)
k=0
и построим соответствующие им ганкелевы полиномы Hm (x; {τ }) и
Hn (x; {e
τ }). Если
Hn ({e
τ }) 6= 0
(6.3)
и
{Hm (xj ; {τ }) 6= 0}N
j=1 ,
(6.4)
то существует единственное решение задачи рациональной интерполяции
при deg p(x) = n, deg q(x) ≤ m = N − n − 1. Это решение можно представить
в виде
τ1
. . . τm
τe1 . . . τen
τ1
τ
.
.
.
τ
e
τ
e
e
2
m+1
..
..
..
..
p(x) = Hm+1 ({τ })Hn (x; {e
τ }) =
q(x) = Hn ({e
τ })Hm (x; {τ }) =
τe0
τe1
..
.
τen−1
τe1 . . .
τe2 . . .
..
.
τen . . .
τen−1
τen
..
.
τe2n−2
τ0
τ1
..
.
τm−1
1
τ1
τ2
..
.
τm
x
(6.6)
Доказательство. Если решение задачи существует, то равенства (2.11)
справедливы. Домножим j-е равенство на xkj /W 0 (xj ) при k ∈ {0, . . . , m − 1}
и просуммируем полученные равенства по j. На основании равенств (6.1) приходим к системе уравнений
{qm τk + qm−1 τk+1 + · · · + q1 τk+m−1 + q0 τk+m = 0}m−1
k=0 .
Таким образом, знаменатель дроби должен
1
x
удовлетворять соотношению
при некоторой константе A.
Подобным образом, умножая равенства (2.11) на x`j /(yj W 0 (xj )) при ` ∈
{0, . . . , n − 1} и суммируя по j, получим представление числителя в виде
τe0
τe1
..
.
τen−1
1
τe1
τe2
..
.
τen
x
. . . τen
. . . τen+1
..
.
. . . τe2n−1
. . . xn
при некоторой константе B. Согласно (6.3), имеем: B 6= 0 и deg p(x) = n.
Для нахождения множителей A и B подставим полученные выражения
в (2.10):
{AHn (xj ; {e
τ }) = Byj Hm (xj ; {τ })}N
(6.7)
j=1 .
36
Согласно (6.4), A 6= 0 и {Hn (xj ; {e
τ }) 6= 0}N
j=1 . Домножим каждое из ра0
венств (6.7) на xm
j /W (xj ) и просуммируем получившиеся результаты. В силу
свойства линейности определителя и с использованием (6.1), имеем
N
X
Hn (xj ; {e
τ })xm
j
j=1
W 0 (xj )
τe0
τe1
..
.
τen−1
N
X
xm
j
0
W (xj )
j=1
τe0
τe1
..
.
τen−1
0
τe1
τe2
..
.
τen
0
τe1
τe2
..
.
τen
N
X
xm+1
j
W 0 (xj )
j=1
. . . τen−1
. . . τen
..
.
. . . τe2n−2
... 0
τen
τen+1
..
.
τe2n−1
1
...
...
...
...
Аналогичным образом получаем
N
X
Hm (xj ; {τ })yj xm
j
j=1
W 0 (xj )
= Hm+1 ({τ }) .
Следовательно,
AHn ({e
τ }) = BHm+1 ({τ }) .
Поскольку A 6= 0 и Hn ({e
τ }) 6= 0, то Hm+1 ({τ }) 6= 0, и последнее равенство завершает доказательство представимости рационального интерполянта по формулам (6.5) и (6.6).
Доказательство того факта, что эти полиномы действительно обеспечивают выполнение равенств (2.10), более громоздко и основано на равенствах
N (N −1)/2
Hm+1 ({τ }) = (−1)
Hn ({e
τ })
N
Y
j=1
37
yj ,
N
N
Y
N (N −1)/2
Hm (xk ; {τ }) = (−1)
Hn (xk ; {e
τ })
yj
j=1
j6=k
.
k=1
Замечание 5. Формулировка теоремы 3 принадлежит авторам статьи.
Якоби в [18] предложил разыскивать знаменатель рациональной интерполянты (потенциального кандидата) в форме ганкелева полинома Hm (x; {τ }) и
после его вычисления свести задачу к случаю интерполяции полиномиальной.
Он не рассматривал вопросов существования и единственности решения, а
также не интересовался вычислительными аспектами практической реализации предложенного им подхода — включая процедуру, используемую при решении следующего примера и основанную на его же собственном результате,
изложенном в п. 2.
Пример
4. Найти все рациональные
p(x)/q(x), deg p(x) + deg q(x) ≤ 6 для таблицы
x
−2
−1
y 26/51
2
0
1
интерполянты
2
3
4
−1/2 1/6 −4/7 16/31 7/36
r(x)
=
.
Решение. Поскольку максимально возможная степень числителей и знаменателей искомых интерполянтов равна 6, вычислим последовательности (6.2)
для значений индексов {0, 1, . . . , 12}:
τ0 = −
897683
5257205447
, . . . , τ12 =
,
19123776
2390472
τe0 = −
2973
1294306589
, . . . , τe12 =
.
11648
11648
Определим ганкелевы полиномы первого и второго порядков:
H1 (x; {τ }) = −
H2 (x; {τ }) =
119579
897683
x+
,
19123776
4780944
208609 2
321193
7649
x −
x−
.
50996736
50996736
1416576
| {z } |
{z
} | {z }
h2,0
h2,1
38
h2,2
Расчет H3 (x; {τ }) произведем с применением тождества (5.4):
h3,0
H3 (x; {τ }) ≡ −
h2,0
2
h3,0
H1 (x; {τ }) +
h2,0
h2,1 h3,1
x−
+
H2 (x; {τ }),
h2,0 h3,0
где все константы, кроме h3,0 = H3 ({τ }) и h3,1 , уже известны. Для нахождения
последних воспользуемся равенствами (5.10)
h3,0 = H3 ({τ }) = τ4 h2,0 + τ3 h2,1 + τ2 h2,2 = −4037/16998912 ,
h3,1 = −(τ5 h2,0 + τ4 h2,1 + τ3 h2,2 ) = 36263/50996736 .
Поэтому
H3 (x; {τ }) ≡ −
4037
36263 2
767
41
x3 +
x −
x−
.
16998912
50996736
12749184
75888
Продолжая рекурсивное использование тождества (5.4), получим
H4 (x; {τ }) ≡ −
1915
9575
1915
1915
x4 +
x3 +
x+
,
50996736
25498368
152990208
38247552
36385 4
6229 3
40711 2
1915
x5 +
x +
x −
x−
21855744
76495104
8999424
10927872
359
3037
x+
,
6374592
1195236
991
8887
3475 4
51575 3
8450 2
H6 (x; {τ }) ≡
x +
x −
x
x6 −
x5 +
796824
1195236
2390472
1195236
298809
| {z } | {z }
H5 (x; {τ }) ≡ −
h6,0
h6,1
−
4892
416
x+
.
99603
42687
| {z }
h6,6
Необходимо выполнить еще одну итерацию, а именно вычислить
H7 ({τ }) = τ12 h6,0 + τ11 h6,1 + · · · + τ6 h6,6 = −208/42687 .
Таким образом, все возможные знаменатели интерполяционной дроби получены. Аналогичная рекурсивная процедура может быть организована для опре-
39
деления числителей:
H1 (x; {e
τ }) = −
2973
3037
x+
,
11648 11648
H2 (x; {e
τ }) =
1915 2 21065
1915
x −
x+
,
106496
745472
372736
| {z } | {z }
| {z }
e
h2,0 =H2 ({e
τ })
e
h2,1
e
h2,2
e
h3,0 = τe4e
h2,0 + τe3e
h2,1 + τe2e
h2,2 = 5745/745472 ,
e
h3,1 = −(e
τ5e
h2,0 + τe4e
h2,1 + τe3e
h2,2 ) = −28725/745472 ,
!2
!
e
e
e
e
h3,0
h3,0
h2,1 h3,1
H3 (x; {e
τ }) ≡ −
H1 (x; {e
τ }) +
x−
+
H2 (x; {e
τ }) ≡
e
e
e
h2,0
h2,0
h2,0 e
h3,0
5745 3
28725 2
33771
369
x −
x +
x−
,
745472
745472
372736
6656
36333 4
72771 3 11139 2 1005843
206523
H4 (x; {e
τ }) ≡
x −
x −
x +
x−
,
745472
372736
28672
745472
372736
625827 5 1708605 4 362367 3 2007361 2 3068941 119579
H5 (x; {e
τ }) ≡ −
x+
x−
x−
x+
x+
,
745472
372736
745472
93184
186368
46592
H6 (x; {e
τ }) ≡
≡
897683 6 5805465 5 373613 4 24907053 3 9008491 2 392865 42687
x−
x+
x+
x−
x−
x+
.
93184
93184
7168
93184
23296
23296
416
Наконец, составим рациональные интерполянты комбинациями найденных числителей и знаменателей:
≡
r0,6 (x) =
≡−
H7 ({τ })
≡
H6 (x; {τ })
11648
,
2973 x6 − 17774 x5 + 3475 x4 + 103150 x3 − 67600 x2 − 117408 x + 23296
r1,5 (x) =
≡−
h6,0 H1 (x; {e
τ })
≡
e
h1,0 H5 (x; {τ })
64(2973 x − 3037)
,
13405 x5 − 72770 x4 − 105893 x3 + 569954 x2 + 8616 x − 388736
h5,0 H2 (x; {e
τ })
7 x2 − 11 x + 2
≡
r2,4 (x) =
;··· ;
e
h2,0 H4 (x; {τ }) 3 x4 − 6 x3 − 5 x − 4
r6,0 (x) =
h1,0 H6 (x; {e
τ })
≡
e
h6,0
40
≡−
897683 6 1935155 5 4856969 4 8302351 3 9008491 2 130955
1
x+
x−
x−
x+
x+
x− .
19123776
6374592
19123776
6374592
4780944
1593648
2
Интерполяция по таблице с ошибками
Задача 2. Пусть таблица (2.8) содержит не более E “ошибочных” значений, т.е. существует полином p(x) степени n < N − 1 такой, что
p(xj ) = yj
для j ∈ {1, . . . N } \ {e1 , . . . eE }
(6.8)
для некоторых различных e1 , . . . eE из {1, . . . N }. Точное количество ошибочных
значений и их положение априори не известны. Требуется найти места ошибок
и полином p(x).
Существование и единственность решения поставленной задачи зависит
от соотношения трёх параметров, а именно N, n и E. Заметим, что должно выполняться N − E > n + 1, т.е. безошибочных значений должно быть долтаточно
для идентификации полинома.
Пример 5. Построить последовательность полиномов {Hk (x; {e
τ })}6k=1 для
таблицы:
x −2 −1 0 1 2 3 4
y 30
15 8 9 18 35 60
Решение. Имеем:
H1 (x; {e
τ }) ≡ −
89
211
2
x+
, H2 (x; {e
τ }) ≡ −
(4 x2 − 3 x + 8),
1814400
226800
9568125
H3 (x; {e
τ }) ≡ 0, H4 (x, {e
τ }) ≡ 0, H5 (x; {e
τ }) ≡ 0 ,
1
(4 x2 − 3 x + 8) .
306180000
Оказывается, что данная таблица сгенерирована полиномом p(x) = 4 x2 −3 x+8
второй степени и потому таблица избыточна.
Следует уделить внимание тому факту, что в предыдущем примере выражение для интерполяционного полинома появилось не только на последнем
шаге, но и на некоторых промежуточных в процессе построения последовательности ганкелевых полиномов.
H6 (x; {e
τ }) ≡ −
41
Теорема 4. Пусть интерполяционная таблица (2.8) сгенерирована полиномом
p(x) = p0 xn + · · · + pn , p0 6= 0
степени n < N − 1; пусть yj 6= 0 для j ∈ {1, . . . , N }. Тогда имеем:
Hn (x; {e
τ }) ≡
−n−1
(−1)N n+n(n+1)/2 pN
0
p(x),
N
Y
yj
HN −1 (x; {e
τ }) ≡
j=1
(−1)N (N −1)/2
p(x) .
N
Y
yj
j=1
(6.9)
Если n < N − 2, то
Hn+1 (x; {e
τ }) ≡ 0, . . . , HN −2 (x; {e
τ }) ≡ 0 .
(6.10)
Доказательство. Мы докажем теорему при дополнительном предположении, что p(x) содержит только простые корни. Обозначим их λ1 , . . . , λn . Построим новую последовательность:
ηk =
n
X
`=1
λk`
p0 (λ` )W (λ` )
for k = 0, 1, . . .
(6.11)
Далее получим:
τek =
N
X
j=1
N
n
X
X
xkj
xkj
λk`
=
=−
= −ηk для k ∈ {0, 1, . . . , N
0 (x )
0 (λ )W (λ )
yj W 0 (xj )
p(x
)W
p
j
j
`
`
j=1
`=1
(6.12)
в то время как
τeN +n−1 =
1
− ηN +n−1 .
p0
(6.13)
Используя эти отношения, представим n-й ганкелев полином в виде
η1
η
.
.
.
η
η
2 η3
n
n+1
..
.
Hn (x; {e
τ }) ≡ (−1)
≡ (−1)n Hn (x; {η}) .
.
.
n−1 ηn ηn+1 . . . η2n−2 η2n−1
Аналогичным образом, получим
Hn (λj ; {η}) = 0
for j ∈ {1, . . . , n} .
(6.14)
Старший коэффициент Hn (x; {η}), т.е.
η0
η1 η2
η1
η2 η3
..
.
ηn−1 ηn ηn+1
...
...
..
.
ηn−1
ηn
..
.
. . . η2n−2
может быть представлен в виде произведения
p0 (λ )W
0
1
... 1
(λ1 )
1
=
1 λ1
. . . λn−1
1
n−1
1 λ2
. . . λ2
..
..
.
.
1 λn−1
. . . λn−1
n
n
Y
(λj − λk )2
1≤k<j≤n
n
n
Y
Y
0
p (λ` )
W (λ` )
`=1
...
0
...
..
.
0
..
.
...
1
p0 (λn )W (λn )
.
`=1
Поскольку
n
Y
1≤k<j≤n
(−1)n(n−1)/2 Y 0
(λj − λk ) =
p (λ` )
pn0
2
(6.15)
`=1
и
n
Y
`=1
W (λ` ) =
n Y
N
Y
`=1 j=1
(λ` − xj ) = (−1)N n
N Y
n
Y
j=1 `=1
QN
(xj − λ` ) = (−1)N n
j=1 p(xj )
pN
0
,
(6.16)
43
справедливость первого из равенств (6.9) установлена.
Далее рассмотрим ганкелев полином HK (x; {e
τ }) степени K ∈ {n +
1, . . . , b(N + n − 1)/2c}. Воспользовавшись (6.12), данный полином можно представить как
..
. . ..
HK (x; {e
τ }) ≡ (−1)
1
x x2
. . . xK
Коэффициенты HK (x; {e
τ }) совпадают (с точностью до знака) с минорами Kго порядка ганкелевой матрицы, порождённой последовательностью(6.11). Поскольку все эти миноры равны нулю, то
Hn+1 (x; {e
τ }) ≡ 0, . . . , Hb(n+N −1)/2c (x; {e
τ }) ≡ 0 .
Далее рассмотрим случай, когда ганкелев полином имеет степень K ∈
{b(n + N )/2c, . . . , N − 2}.
τe0
τe1
..
.
τeN +n−K−2
τeN +n−K−1
..
.
τeK−1
1
τe1
τe2
...
...
...
...
...
. . . τeN +n−2 τeN +n−1
x ...
...
...
...
τeK
τeK+1
..
.
τeN +n−2
τeN +n−1
...
τeN +n−2
..
.
...
τe2K−1
xK
Из (6.12) элементы первых N + n − K − 1 строк этого определителя могут быть
44
η0
η1
..
.
ηN +n−K−2
τeN +n−K−1
..
.
τeK−1
1
η1
η2
...
...
...
...
...
. . . τeN +n−2 τeN +n−1
x ...
...
...
...
ηK
ηK+1
..
.
ηN +n−2
τeN +n−1
...
τeN +n−2
..
.
...
τe2K−1
xK−1
xK
Эти N +n−K−1 строк линейно зависимы, поскольку все миноры (N +n−K−1)го порядка матрицы, составленной из этих строк, равны нулю. Таким образом,
HK (x; {e
τ }) ≡ 0 для значений K, упомянутых в начале текущего параграфа.
Пример 6. Построить последовательность полиномов {Hk (x; {e
τ })}6k=1 для
таблицы
x −2 −1 0 1 2 3 4
y 30 12 8 9 18 35 60
которая отличается от таблицы из Примера 5 единственным значением в
узле x2 = −1.
Решение. Отбросив данное значение из рассмотрения, получим таблицу,
которая всё ещё содержит достаточно данных для восстановления полинома
p(x) = 4 x2 − 3 x + 8 второй степени. Будем рассматривать y2 = 12 как ошибку
в интерполяционной таблице. Проанализируем её влияние на построение интерполяционного полинома путём рекурсивной процедуры вычисления ганкелевых
полиномов. Имеем:
H1 (x; {e
τ }) ≡ −
359
341
x+
,
1814400
453600
1
(−19109 x2 + 34323 x − 69448),
39191040000
1
(x + 1)(4 x2 − 3 x + 8),
H3 (x; {e
τ }) ≡
2449440000
H2 (x; {e
τ }) ≡
45
H4 (x; {e
τ }) ≡ 0,
1
(x + 1)(4 x2 − 3 x + 8) ,
39191040000
1
1 6 1 5 3 4 1 3 21 2 9
H6 (x; {e
τ }) ≡ −
x − x + x + x + x − x+8
979776000 40
5
8
2
10
5
с интерполяционным полиномом
H5 (x; {e
τ }) ≡ −
pe(x) ≡
1 6 1 5 3 4 1 3 21 2 9
x − x + x + x + x − x+8
40
5
8
2
10
5
который может рассматриваться в качестве возмущения полинома p(x) = 4 x2 −
3 x + 8:
W2 (x)
.
≡ p(x) + (y2 − p(x2 )) 0
W (x2 )
46
Глава 7.
Заключение
В настоящей статье развит основанный на идеях К. Якоби подход к решению задачи рациональной интерполяции, заключающийся в представлении
решения посредством подходящих ганкелевых полиномов. Предложена процедура эффективного вычисления этих полиномов, позволяющая построить не
только одиночную интерполянту, но и целое семейство интерполянт при всех
возможных комбинациях степеней числителя и знаменателя. Этот аспект обеспечивает возможность выбора решения, не только формально удовлетворяющего интерполяционной таблице, но и обладающего дополнительными свойствами,
существенными для задач аппроксимации (как, к примеру, ограниченность на
определенном интервале вещественной оси).
Следует отметить, что появление матриц ганкелевой структуры в решениях задач помехоустойчивого кодирования и аппроксимации не должно считаться абсолютно неожиданным: достаточно вспомнить вид системы нормальных
уравнений при построении полиномиальной аппроксимации интерполяционной
таблицы по методу наименьших квадратов [9]. В книгах [13, 17] можно найти и другие задачи, в которых такие матрицы возникают естественным образом — например, задачу интерполяции таблицы (2.8) комбинацией экспонент:
P
kj x
f (x) = m
.
j=1 aj e
Направления дальнейших исследований
Развитие предложенного подхода видится в направлении интерполяции
многомерной. Кроме того, предполагается произвести сравнение вычислительной эффективности алгоритма с альтернативными подходами, в частности с
представлением рационального интерполянта в барицентрической форме [4].
47
Литература
[1] Baravy I. Efficient Interpolation over Infinite and Finite Fields via Hankel
Polynomials // Mathematical Modelling and Analysis, Abstracts. 2014. P. 9.
[2] Berlekamp E.R. Algebraic Coding Theory. Aegean Park Press, 1984.
[3] Berrou C. Error-correction coding method with at least two systematic
convolutional codings in parallel. US Patent 5,446,747, 1995.
[4] Berrut J.-P., Baltensperger R., Mittelmann H.D. Recent developments
in barycentric rational interpolation. International Series of Numerical
Mathematics. 2005. Basel, Birkhäuser, Vol. 151, P. 27-51.
[5] Blahut R. Theory and Practice of Error Control Codes. Addison-Wesley, 1983.
[6] Blahut R. Fast Algorithms for Digital Signal Processing. Addison-Wesley, 1985.
[7] Bose R.C., Ray-Chaudhuri D.K. On A Class of Error Correcting Binary Group
Codes // Information and Control, 1960. Vol. 3, No. 1. P. 68–79.
[8] Cauchy A.-L. Cours d’Analyse de l’École Royale Polytechnique: Part I: Analyse
Algébrique. Paris, France: L’Imprimerie Royale, 1821, pt. 1. Annotated English
Translation:
[9] Faddeev D. K. Lectures in Algebra. Moscow. Nauka Publ., 1984. 416 p.
[10] Hagenauer J., Offer E., Papke L. Iterative Decoding of Binary Block and
Convolutional Codes // IEEE Transactions on Information Theory, 1996. Vol.
42, No. 2. P. 429-445.
[11] Hamming R.W. Error-Detecting and Error-Correcting Codes // Bell Systems
Technical Journal, 1950. Vol. 29. P. 147-160.
[12] Hamming R.W. Numerical Methods for Scientists and Engineers. Dover
Publications, 1987.
48
[13] Henrici P. Applied and computational complex analysis, Vol. 1. Power series,
integration, conformal mapping, location of zeros. New York, London, Wiley
and Sons Inc. Publ., 1974, 700 p.
[14] Hocquenghem A. Codes correcteurs d’erreurs. 1959.
[15] ISO/IEC 18004:2006. Information technology. Automatic identification and
data capture techniques. QR Code. Geneva: ISO/IEC, 2000.
[16] ISO 2108:2005. Information and documentation – International standard book
number (ISBN). ISO, 2013.
[17] Iohvidov I. S. Hankel and Toeplitz matrices and forms: algebraic theory. Boston,
Birkhäuser, 1972, 260 p.
[18] Jacobi C.G.J. Über die Darstellung einer Reihe gegebner Werthe durch eine
gebrochne rationale Function // J. reine angew. math, 1846. Vol. 30. P. 127156.
[19] Joachimsthal F. Bemerkungen über den Sturm’schen Satz // J. reine angew.
math, 1854. Vol. 48. P. 386-416.
[20] Kramer H.K., Lane R.N. Decomposition of a function into a weighted sum of
shifted replicas of another function // Journal of Mathematical Analysis and
Applications, 1974. Vol. 46, No 3. Р. 395–608.
[21] Kronecker L. Über einreihige Determinanten. Nachrichten den Königlichen
Gesellschaft der Wissenschaften zu Göttingen, 1881. Vol. 9. P. 271-279.
[22] Kronecker L. Zur Theorie der Elimination einer Variabeln aus zwei
algebraischen Gleichungen. Monatsberichte der Königlichen Preussische
Akademie des Wissenschaften zu Berlin, 1881, Juni, P. 535-600.
R Single-Level
[23] Micron Technology. Error Correction Code (ECC) in Micron
Cell (SLC) NAND. Technical Note TN-29-63, 2011.
[24] Netto E. Zur Cauchy’schen Interpolationsaufgabe // Math. Ann. 1893. Vol. 42
(3). P. 453-456.
49
[25] Reed I.S., Solomon G. Polynomial Codes over Certain Finite Fields // Journal
of the Society for Industrial and Applied Mathematics (SIAM), 1960. Vol. 8,
No. 2. P. 300–304.
[26] Rong Q.J. Linear independence of translates of a box spline // Journal of
Approximatin Theory, 1984. Vol. 40, No 2. Р. 158–160.
[27] Rudra A. Error Correcting Codes: Combinatorics, Algorithms and Applications.
http://www.cse.buffalo.edu/~atri/courses/
[28] Shannon C.E. A Mathematical Theory of Communication // Bell System
Technical Journal, 1948. Vol. 27, No 3. P. 379–423.
[29] STMicroelectronics. Error Correction Code in NAND Flash Memories.
Application Note AN1823, 2004.
[30] Sudan M. Decoding of Reed Solomon codes beyond the error-correction bound
// J. Complexity, 1997. Vol. 13. P. 180–193.
[31] Uteshev A.Yu., Baravy I. Inversion in finite fields with the aid of Hankel
polynomials // International Conference on Computer Science and Information
Technologies, 2013. P. 1-6.
[32] Wang Y., Zhu X. A fast algorithm for the Fourier transform over finite
fields and its VLSI implementation // IEEE Journal on Selected Areas in
Communications, 1988. Vol. 6, No. 3. P. 572–577.
[33] Утешев А.Ю., Боровой И.И. Решение задачи рациональной интерполяции с
использованием ганкелевых полиномов // Вестник Санкт-Петербургского
университета. Сер. 10. Прикладная математика. Информатика. Процессы
управления, 2016. Вып. 4. С. 31–43.
[34] Записная книжка профессора Утешева. http://pmpu.ru
50
Отзывы:
Авторизуйтесь, чтобы оставить отзыв