40
Теория кодирования МФТИ , осень 2013 Александр Дайняк www.dainiak.com

Коды на основе многочленов и алгоритмы их декодирования

Embed Size (px)

DESCRIPTION

Коды Рида—Соломона. Алгоритм декодирования Берлекэмпа—Велча. Коды Рида—Маллера: кодовое расстояние, алгоритм мажоритарного декодирования. Варианты обобщений конструкции Рида—Маллера. Лемма Липтона—ДеМилло—Шварца—Зиппеля. Понятие об алгеброгеометрических кодах.

Citation preview

Page 1: Коды на основе многочленов и алгоритмы их декодирования

Теория кодированияМФТИ, осень 2013

Александр Дайняк

www.dainiak.com

Page 2: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона(I.S. Reed, G. Solomon)Пусть 𝑘 ≤ 𝑛 ≤ 𝑞.

Пусть 𝑡1, … , 𝑡𝑛 ∈ 𝔽𝑞 — фиксированные, попарно различныеэлементы.

Рассмотрим такое множество слов:𝐶 ≔ 𝑃 𝑡1 , … , 𝑃(𝑡𝑛) ∣ 𝑃 ∈ 𝔽𝑞 𝑥 ∧ deg𝑃 < 𝑘

Непосредственно проверяется, что 𝐶 — линейное пространство:

𝛼 ⋅ 𝑃1 𝑡1 , … , 𝑃1 𝑡𝑛 + 𝛽 ⋅ 𝑃2 𝑡1 , … , 𝑃2 𝑡𝑛 =

= 𝛼𝑃1 + 𝛽𝑃2 𝑡1 , … , 𝛼𝑃1 + 𝛽𝑃2 𝑡𝑛

Page 3: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона

По условию, 𝑘 ≤ 𝑛 ≤ 𝑞.

𝐶 ≔ 𝑃 𝑡1 , … , 𝑃(𝑡𝑛) ∣ 𝑃 ∈ 𝔽𝑞 𝑥 ∧ deg𝑃 < 𝑘

• У многочлена степени < 𝑘 может быть не более 𝑘 − 1 корней, поэтому если 𝑃 ≢ 0, то в векторе 𝑃 𝑡1 , … , 𝑃(𝑡𝑛) не более 𝑘 − 1 нулевых координат.

Отсюда𝑑 𝐶 = min

𝒂∈𝐶𝒂≠𝟎

𝒂 = min𝑃≢0

# 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 0 = 𝑛 − 𝑘 − 1

Page 4: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона

По условию, 𝑘 ≤ 𝑛 ≤ 𝑞.

𝐶 ≔ 𝑃 𝑡1 , … , 𝑃(𝑡𝑛) ∣ 𝑃 ∈ 𝔽𝑞 𝑥 ∧ deg𝑃 < 𝑘

• Вектора 𝑃 𝑡1 , … , 𝑃(𝑡𝑛) при разных 𝑃 различны: если выполнено 𝑃1 𝑡1 , … , 𝑃1(𝑡𝑛) = 𝑃2 𝑡1 , … , 𝑃2(𝑡𝑛) , то у многочлена 𝑃1 − 𝑃2 не менее 𝑛 корней, а т.к. deg(𝑃1 −

Page 5: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона

Итак, для любых 𝑘 ≤ 𝑛 ≤ 𝑞 множество 𝑃 𝑡1 , … , 𝑃(𝑡𝑛) ∣ 𝑃 ∈ 𝔽𝑞 𝑥 ∧ deg 𝑃 < 𝑘

является 𝑛, 𝑘, 𝑑 𝑞-кодом, где 𝑑 = 𝑛 − 𝑘 + 1.

Вспомним границу Синглтона: «для любого 𝑛, 𝑘, 𝑑 𝑞-кода выполнено 𝑘 ≤ 𝑛 − 𝑑 + 1».

То есть построенный код достигает границы Синглтона!

Недостаток кода: кодовый алфавит нужно брать очень большим, т.к. 𝑞 ≥ 𝑛.

Page 6: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона: декодирование

Т.к. 𝑑 𝐶 = 𝑛 − 𝑘 + 1, то код может исправлять 𝑛−𝑘

2ошибок.

Постановка задачи декодирования:

• Дано искажённое кодовое слово кода Р.—С. 𝑝1, … , 𝑝𝑛 ∈ 𝔽𝑞𝑛

• Найти 𝑃 ∈ 𝔽𝑞 𝑥 , такой, что deg𝑃 ≤ 𝑘 − 1 и

# 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖 ≤ 𝑛−𝑘2

(нам гарантируется, что такой 𝑃 существует)

Далее приведём алгоритм Берлекэмпа—Велча (E.R. Berlekamp, L.R. Welch).

Page 7: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона: декодирование

Дано 𝑝1, … , 𝑝𝑛 ∈ 𝔽𝑞𝑛.

Найти 𝑃: deg 𝑃 < 𝑘 ∧ # 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖 ≤ 𝑛 − 𝑘 2

Рассмотрим многочлен ошибок

𝐸 𝑥 ≔

𝑖: 𝑃 𝑡𝑖 ≠ 𝑝𝑖

𝑥 − 𝑡𝑖

и вспомогательный многочлен 𝑈 𝑥 ≔ 𝐸 𝑥 ⋅ 𝑃 𝑥 .

Заметим, что

• deg 𝐸 = 𝑠 и coef𝑥𝑠 𝐸 = 1, где 𝑠 ≔ # 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖

• deg𝑈 ≤ deg 𝐸 + deg𝑃 ≤ 𝑠 + 𝑘 − 1

• Для любого 𝑖 ∈ 1,… , 𝑛 выполнено равенство𝑈 𝑡𝑖 = 𝐸 𝑡𝑖 ⋅ 𝑝𝑖

Page 8: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона: декодирование

Дано 𝑝1, … , 𝑝𝑛 ∈ 𝔽𝑞𝑛.

Найти 𝑃: deg𝑃 < 𝑘 ∧ # 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖 ≤ 𝑛 − 𝑘 2

Идея: мы не знаем 𝑃, так что попытаемся найти какие-то многочлены 𝐸и 𝑈, для которых

• deg 𝐸 = 𝑠 и coef𝑥𝑠 𝐸 = 1, где 𝑠 ≤ 𝑛 − 𝑘 2

• deg 𝑈 ≤ 𝑠 + 𝑘 − 1

• Для любого 𝑖 ∈ 1, … , 𝑛 выполнено равенство 𝑈 𝑡𝑖 = 𝐸 𝑡𝑖 ⋅ 𝑝𝑖

Мы знаем, что 𝐸 и 𝑈 точно найдутся. Вопросы: 1) как это сделать эффективно, и 2) что если найденные 𝐸 и 𝑈 не совпадут с нужными нам 𝐸 и 𝑈?

Page 9: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона: декодирование

• deg 𝐸 = 𝑠 и coef𝑥𝑠 𝐸 = 1, где 𝑠 ≤ 𝑛 − 𝑘 2

• deg 𝑈 ≤ 𝑠 + 𝑘 − 1

• ∀𝑖 ∈ 1,… , 𝑛 выполнено 𝑈 𝑡𝑖 = 𝑝𝑖 ⋅ 𝐸 𝑡𝑖

Зафиксируем 𝑠 и положим 𝐸 = 𝑥𝑠 + 𝑗≤𝑠−1 𝑒𝑗𝑥𝑗 и 𝑈 = 𝑗≤𝑠+𝑘−1𝑢𝑗𝑥

𝑗, где

𝑒0, … , 𝑒𝑠−1, 𝑢0, … , 𝑢𝑠+𝑘−1 — неопределённые коэффициенты. Получим систему:

𝑝1𝑡1𝑠 +

0≤𝑗≤𝑠−1

𝑝1𝑒𝑗𝑡1𝑗=

0≤𝑗≤𝑘+𝑠−1

𝑢𝑗𝑡1𝑗

𝑝𝑛𝑡𝑛𝑠 +

0≤𝑗≤𝑠−1

𝑝𝑛𝑒𝑗𝑡𝑛𝑗=

0≤𝑗≤𝑘+𝑠−1

𝑢𝑗𝑡𝑛𝑗

Page 10: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона: декодирование

При любом фиксированном 𝑠 ≤ 𝑛 − 𝑘 2 система

𝑝1𝑡1𝑠 = −

0≤𝑗≤𝑠−1

𝑝1𝑡1𝑗⋅ 𝑒𝑗 +

0≤𝑗≤𝑘+𝑠−1

𝑡1𝑗⋅ 𝑢𝑗

𝑝𝑛𝑡𝑛𝑠 = −

0≤𝑗≤𝑠−1

𝑝𝑛𝑡𝑛𝑗⋅ 𝑒𝑗 +

0≤𝑗≤𝑘+𝑠−1

𝑡𝑛𝑗⋅ 𝑢𝑗

линейная относительно 𝑒0, … , 𝑒𝑠−1, 𝑢0, … , 𝑢𝑠+𝑘−1.

Page 11: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона: декодирование

При любом фиксированном 𝑠 система

𝑝1𝑡1𝑠 = −

0≤𝑗≤𝑠−1

𝑝1𝑡1𝑗⋅ 𝑒𝑗 +

0≤𝑗≤𝑘+𝑠−1

𝑡1𝑗⋅ 𝑢𝑗

𝑝𝑛𝑡𝑛𝑠 = −

0≤𝑗≤𝑠−1

𝑝𝑛𝑡𝑛𝑗⋅ 𝑒𝑗 +

0≤𝑗≤𝑘+𝑠−1

𝑡𝑛𝑗⋅ 𝑢𝑗

линейная относительно 𝑒0, … , 𝑒𝑠−1, 𝑢0, … , 𝑢𝑠+𝑘−1 ⇒ если у неё есть решение, находится оно быстро.Перебирая 𝑠 = 0,1, …, найдём то 𝑠, при котором решение есть (такое 𝑠 точно существует, так как есть исходные многочлены 𝐸 и 𝑈). Тем самым найдём 𝐸 и 𝑈.

Page 12: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона: декодирование

Нашли какие-то 𝐸 и 𝑈.

Если бы это были те самые 𝐸 и 𝑈, то мы сразу нашли бы 𝑃 𝑥 = 𝑈 𝑥

𝐸 𝑥.

Оказывается, и в ином случае 𝑃 будет выражаться так же:

Утверждение.Если пары 𝐸1, 𝑈1 и 𝐸2, 𝑈2 удовлетворяют системе

• deg 𝐸 = 𝑠 и coef𝑥𝑠 𝐸 = 1, где 𝑠 ≤ 𝑛 − 𝑘 2

• deg 𝑈 ≤ 𝑠 + 𝑘 − 1

• ∀𝑖 ∈ 1,… , 𝑛 выполнено 𝑈 𝑡𝑖 = 𝑝𝑖 ⋅ 𝐸 𝑡𝑖

то 𝑈1𝐸1

≡ 𝑈2𝐸2

.

Page 13: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона: декодирование

Доказательство утверждения:Пусть 𝐸1, 𝑈1 и 𝐸2, 𝑈2 удовлетворяют системе

• deg 𝐸 = 𝑠 и coef𝑥𝑠 𝐸 = 1, где 𝑠 ≤ 𝑛 − 𝑘 2

• deg 𝑈 ≤ 𝑠 + 𝑘 − 1

• ∀𝑖 ∈ 1,… , 𝑛 выполнено 𝑈 𝑡𝑖 = 𝑝𝑖 ⋅ 𝐸 𝑡𝑖

Имеем deg𝑈1𝐸2 ≤ deg𝑈1 + deg𝐸2 ≤ 𝑛−𝑘

2+ 𝑘 − 1 + 𝑛−𝑘

2≤ 𝑛 − 1.

Аналогично deg𝐸1𝑈2 ≤ 𝑛 − 1.

Далее, для любого 𝑖 имеем

𝑈1 𝑡𝑖 𝐸2 𝑡𝑖 = 𝑝𝑖𝐸1 𝑡𝑖 𝐸2 𝑡𝑖 = 𝐸1 𝑡𝑖 𝑝𝑖𝐸2 𝑡𝑖 = 𝐸1 𝑡𝑖 𝑈2 𝑡𝑖

Page 14: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона: декодирование

Завершение доказательства леммы:

Мы установили, что

• deg 𝑈1𝐸2 − 𝐸1𝑈2 ≤ 𝑛 − 1

• 𝑈1 𝑡𝑖 𝐸2 𝑡𝑖 − 𝐸1 𝑡𝑖 𝑈2 𝑡𝑖 = 0 для 𝑖 = 1,… , 𝑛

Отсюда следует, что𝑈1 𝑥 𝐸2 𝑥 − 𝐸1 𝑥 𝑈2 𝑥 ≡ 0

а это эквивалентно тождеству𝑈1

𝐸1≡

𝑈2

𝐸2

Page 15: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Соломона

Простор для обобщений:

• Рассматривать многочлены не от одной, а от многих переменных(коды Рида—Маллера и другие)

• Рассматривать не все возможные многочлены, а специально выбранное их подмножество (алгеброгеометрические коды)

Page 16: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера (I.S. Reed, D.E. Muller)

Зафиксируем параметры 𝑟,𝑚 , где 𝑟 ≤ 𝑚.

Полагаем 𝑞 ≔ 2 и берём многочлены от 𝑚 переменных степени ≤ 𝑟.

Базис в пространстве 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥𝑚 , deg𝑃 ≤ 𝑟 :1 ∪

∪ 𝑥1, 𝑥2, … , 𝑥𝑚 ∪∪ 𝑥1𝑥2, 𝑥1𝑥3, … , 𝑥𝑚−1𝑥𝑚 ∪⋮

∪ 𝑥𝑖1𝑥𝑖2 ⋯𝑥𝑖𝑟 ∣ 1 ≤ 𝑖1, … , 𝑖𝑟 ≤ 𝑚

Размерность этого пространства равна 𝑘 = 𝑡≤𝑟𝑚𝑡

.

Page 17: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера

Рассматриваем значения многочленов во всех точках 𝔽2𝑚:

𝐶 ≔ { 𝑃 0…00 , 𝑃 0…01 ,… , 𝑃 1…11 где 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥𝑚 и deg𝑃 ≤ 𝑟

Получаем 𝑛, 𝑘, 𝑑 -код, где 𝑛 = 2𝑚 и 𝑘 = 𝑡≤𝑟𝑚𝑡

.

Чтобы оценить 𝑑, понадобится доказать лемму:Лемма.Если 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥𝑚 , 𝑃 ≢ 0 и deg𝑃 ≤ 𝑟, то

# 𝑠1, … , 𝑠𝑚 ∈ 𝔽2𝑚 ∣ 𝑃 𝑠1, … , 𝑠𝑚 = 1 ≥ 2𝑚−𝑟

Page 18: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера: кодовое расстояние

Лемма.Если 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥𝑚 , 𝑃 ≢ 0 и deg𝑃 ≤ 𝑟, то

# 𝑠1, … , 𝑠𝑚 ∈ 𝔽2𝑚 ∣ 𝑃 𝑠1, … , 𝑠𝑚 = 1 ≥ 2𝑚−𝑟

Доказательство: индукция по 𝑚.

База: 𝑚 = 1. Тогда 𝑃 ∈ 1, 𝑥1, 𝑥1 + 1 — очевидно.

Переход: 𝑚 − 1 → 𝑚. Б.о.о. будем считать, что 𝑃 существенно зависит от 𝑥𝑚. Распишем

𝑃 𝑥1, … , 𝑥𝑚 = 𝑃1 𝑥1, … 𝑥𝑚−1 + 𝑥𝑚𝑃2 𝑥1, … 𝑥𝑚−1

Так как 𝑃2 ≢ 0 и deg 𝑃2 ≤ 𝑟 − 1, то

# 𝑠1, … , 𝑠𝑚−1 ∣ 𝑃2 𝑠1, … , 𝑠𝑚−1 = 1 ≥ 2 𝑚−1 − 𝑟−1

Page 19: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера: кодовое расстояние

𝑃 𝑥1, … , 𝑥𝑚 = 𝑃1 𝑥1, … 𝑥𝑚−1 + 𝑥𝑚𝑃2 𝑥1, … 𝑥𝑚−1

# 𝑠1, … , 𝑠𝑚−1 ∣ 𝑃2 𝑠1, … , 𝑠𝑚−1 = 1 ≥ 2𝑚−𝑟

Каждый набор 𝑠1, … , 𝑠𝑚−1 на котором 𝑃2 = 1, можно дополнить до набора, на котором 𝑃 = 1:

• если 𝑃1 𝑠1, … , 𝑠𝑚−1 = 0, то возьмём набор 𝑠1, … , 𝑠𝑚−1, 1 ,

• если 𝑃1 𝑠1, … , 𝑠𝑚−1 = 1, то возьмём набор 𝑠1, … , 𝑠𝑚−1, 0 .

Значит, 𝑃 = 1 не менее чем на 2𝑚−𝑟 наборах.

Page 20: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера:мажоритарное декодированиеКод Рида—Маллера с параметрами 𝑟,𝑚 является

2𝑚, 𝑡≤𝑟𝑚𝑡

, 2𝑚−𝑟 -кодом.

Значит, он может исправлять вплоть до 2𝑚−𝑟−1 − 1 ошибок, и это можно делать очень быстро многоэтапным голосованием (этот способ декодирования также называют мажоритарным).

Постановка задачи:

• В векторе из кода Р.—М. (т.е. векторе значений многочлена степени ≤ 𝑟) изменяются менее 2𝑚−𝑟−1 координат (т.е. значение многочлена искажается менее чем в стольких точках)

• Нужно восстановить по искажённому вектору значений исходный вектор значений (т.е. исходный многочлен)

Page 21: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера:мажоритарное декодированиеКодовое слово — это значения многочлена, выразимого линейной комбинацией в базисе

1 ∪ 𝑥1, 𝑥2, … , 𝑥𝑚 ∪ ⋯∪ 𝑥𝑖1𝑥𝑖2 ⋯𝑥𝑖𝑟 ∣ 1 ≤ 𝑖1, … , 𝑖𝑟 ≤ 𝑚

Восстановить кодовое слово — это то же, что найти коэффициенты этой линейной комбинации.

Page 22: Коды на основе многочленов и алгоритмы их декодирования

Лемма о старшем коэффициенте многочленов над 𝔽2

Лемма.Для любого 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥𝑟 справедлива формула

coef𝑥1⋅…⋅𝑥𝑟𝑃 =

𝛼1,…,𝛼𝑟∈𝔽2

𝑃 𝛼1, … , 𝛼𝑟

Доказательство:Многочлен 𝑃 можно представить в виде

𝑃 = 𝑐 ⋅ 𝑥1 …𝑥𝑟 + 𝑃1 + ⋯+ 𝑃𝑟где в 𝑃𝑖 не входит 𝑥𝑖. Получаем

𝛼1,…,𝛼𝑟∈𝔽2

𝑃 𝛼1, … , 𝛼𝑟 =

𝛼1,…,𝛼𝑟∈𝔽2

𝑐 ⋅ 𝛼1 …𝛼𝑟

=𝑐

+

1≤𝑖≤𝑟

𝛼1,…,𝛼𝑟∈𝔽2

𝑃𝑖 𝛼1, … , 𝛼𝑟

=0

Page 23: Коды на основе многочленов и алгоритмы их декодирования

Лемма о старшем коэффициенте многочленов над 𝔽2

𝛼1,…,𝛼𝑟∈𝔽2

𝑃𝑖 𝛼1, … , 𝛼𝑟 =

𝛼1,…𝛼𝑖−1,𝛼𝑖+1,…,𝛼𝑟∈𝔽2

𝑃𝑖 𝛼1, …𝛼𝑖−1, 0, 𝛼𝑖+1, … , 𝛼𝑟

+𝑃𝑖 𝛼1, … 𝛼𝑖−1, 1, 𝛼𝑖+1, … , 𝛼𝑟

Но т.к. в слагаемые 𝑃𝑖 переменная 𝑥𝑖 не входит, то𝑃𝑖 𝛼1, … 𝛼𝑖−1, 0, 𝛼𝑖+1, … , 𝛼𝑟 = 𝑃𝑖 𝛼1, … 𝛼𝑖−1, 1, 𝛼𝑖+1, … , 𝛼𝑟

а значит по модулю 2 каждое слагаемое в последней сумме равно нулю.

Лемма доказана.

Page 24: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера:мажоритарное декодирование

Пусть 𝑃 — произвольный многочлен из кода Рида—Маллера.

Зафиксируем произвольные 𝛽1, … , 𝛽𝑚−𝑟 ∈ 𝔽2, и обозначим

𝑃𝛽1,…,𝛽𝑚−𝑟≔ 𝑃 𝑥1, … , 𝑥𝑟 , 𝛽1, … , 𝛽𝑚−𝑟

Имеем 𝑃𝛽1,…,𝛽𝑚−𝑟∈ 𝔽2 𝑥1, … , 𝑥𝑟 , поэтому по лемме, доказанной

только что, получаем

𝛼1,…,𝛼𝑟∈𝔽2

𝑃𝛽1,…,𝛽𝑚−𝑟𝛼1, … , 𝛼𝑟 = coef𝑥1⋅…⋅𝑥𝑟

𝑃𝛽1,…,𝛽𝑚−𝑟= coef𝑥1⋅…⋅𝑥𝑟

𝑃

Page 25: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера:мажоритарное декодирование

Для любых 𝛽1, … , 𝛽𝑚−𝑟 ∈ 𝔽2 мы получили

coef𝑥1⋅…⋅𝑥𝑟𝑃 =

𝛼1,…,𝛼𝑟∈𝔽2

𝑃 𝛼1, … , 𝛼𝑟 , 𝛽1, … , 𝛽𝑚−𝑟

Если нам дано кодовое слово с не более чем 2𝑚−𝑟−1 − 1ошибками, это означает, что нам для дан некий набор величин 𝑃 𝑡1, … , 𝑡𝑚 , где 𝑃 𝑡1, … , 𝑡𝑚 = 𝑃 𝑡1, … , 𝑡𝑚 для всех 𝑡1, … , 𝑡𝑚 ∈𝔽2

𝑚 ∖ 𝑇bad, где 𝑇bad ≤ 2𝑚−𝑟−1 − 1.

Подставим 𝑃 𝑡1, … , 𝑡𝑚 вместо 𝑃 𝑡1, … , 𝑡𝑚 в нашу формулу…

Page 26: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера:мажоритарное декодирование

Для каждого набора 𝛽1, … , 𝛽𝑚−𝑟 ∈ 𝔽2𝑚−𝑟 рассмотрим сумму

𝑆𝛽1,…,𝛽𝑚−𝑟≔

𝛼1,…,𝛼𝑟∈𝔽2

𝑃 𝛼1, … , 𝛼𝑟 , 𝛽1, … , 𝛽𝑚−𝑟

У сумм 𝑆𝛽1,…,𝛽𝑚−𝑟при разных нет общих слагаемых. Поэтому

𝑆𝛽1,…,𝛽𝑚−𝑟= coef𝑥1⋅…⋅𝑥𝑟

𝑃

для всех 𝛽1, … , 𝛽𝑚−𝑟 ∈ 𝔽2𝑚−𝑟 , кроме, быть может, 𝑇bad штук.

Всего сумм 2𝑚−𝑟, и 𝑇bad < 2𝑚−𝑟−1, а значит большинство этих сумм равны coef𝑥1⋅…⋅𝑥𝑟

𝑃.

Page 27: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера:мажоритарное декодирование

Итоговый метод определения coef𝑥1⋅…⋅𝑥𝑟𝑃:

• Для каждого 𝛽1, … , 𝛽𝑚−𝑟 ∈ 𝔽2𝑚−𝑟 вычисляем соответствующую

сумму 𝑆𝛽1,…,𝛽𝑚−𝑟

• Находим coef𝑥1⋅…⋅𝑥𝑟𝑃 голосованием:

т.е. как то значение, которое встречается чаще всего среди 𝑆𝛽1,…,𝛽𝑚−𝑟

.

Ясно, что так можно определить любой из коэффициентовcoef𝑥𝑖1⋅…⋅𝑥𝑖𝑟

𝑃.

Page 28: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера:мажоритарное декодированиеПусть уже найдены все coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟

𝑃.

Рассмотрим многочлен

𝑃 𝑟−1 ≔ 𝑃 −

𝑖1,…,𝑖𝑟

coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟𝑃 ⋅ 𝑥𝑖1 …𝑥𝑖𝑟

В 𝑃 𝑟−1 уже все слагаемые степени ≤ 𝑟 − 1.

Рассмотрим величины 𝑃 𝑟−1 𝑡1, … , 𝑡𝑚 , равные

𝑃 𝑡1, … , 𝑡𝑚 −

𝑖1,…,𝑖𝑟

coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟𝑃 ⋅ 𝑡𝑖1 …𝑡𝑖𝑟

Ясно, что 𝑃 𝑟−1 𝑡1, … , 𝑡𝑚 = 𝑃 𝑟−1 𝑡1, … , 𝑡𝑚 на множестве точек 𝔽2𝑚 ∖ 𝑇bad.

Page 29: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера:мажоритарное декодированиеПусть уже найдены все coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟

𝑃.

Вычисляем величины 𝑃 𝑟−1 𝑡1, … , 𝑡𝑚 , равные

𝑃 𝑡1, … , 𝑡𝑚 −

𝑖1,…,𝑖𝑟

coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟𝑃 ⋅ 𝑡𝑖1 …𝑡𝑖𝑟

Т.к. 𝑃 𝑟−1 𝑡1, … , 𝑡𝑚 = 𝑃 𝑟−1 𝑡1, … , 𝑡𝑚 на множестве 𝔽2𝑚 ∖ 𝑇bad, то

как и ранее, голосованием определяем coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟−1𝑃 𝑟−1 .

Но coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟−1𝑃 𝑟−1 = coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟−1

𝑃, то есть теперь мы знаем

коэффициенты при слагаемых 𝑃 степени ≤ 𝑟 − 1.

Page 30: Коды на основе многочленов и алгоритмы их декодирования

Коды Рида—Маллера:мажоритарное декодированиеОбщая схема:

• Определяем все coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟𝑃

• Рассматриваем𝑃 𝑟−1 ≔ 𝑃 −

𝑖1,…,𝑖𝑟

coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟𝑃 ⋅ 𝑥𝑖1 …𝑥𝑖𝑟

• Определяем все coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟−1𝑃

• Рассматриваем𝑃 𝑟−2 ≔ 𝑃 𝑟−1 −

𝑖1,…,𝑖𝑟−1

coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟−1𝑃 ⋅ 𝑥𝑖1 …𝑥𝑖𝑟−1

• Определяем все coef𝑥𝑖1⋅…⋅𝑥𝑖𝑟−2𝑃

• И так далее…

Page 31: Коды на основе многочленов и алгоритмы их декодирования

Лемма Шварца—Зиппеля

Чтобы оценивать 𝑑 𝐶 кодов на основе многочленов многих переменных, подходит

Теорема. (R.J. Lipton, R.A. DeMillo, J. Schwartz, R. Zippel)

Пусть 𝑃 ∈ 𝔽 𝑥1, … , 𝑥𝑚 и 𝑃 ≢ 0. Пусть 𝑆 ⊆ 𝔽 — произвольное множество мощности 𝑁.

Тогда# 𝑠1, … , 𝑠𝑚 ∈ 𝑆𝑚 ∣ 𝑃 𝑠1, … , 𝑠𝑚 = 0 ≤ 𝑁𝑚−1 ⋅ deg 𝑃

Page 32: Коды на основе многочленов и алгоритмы их декодирования

Лемма Шварца—Зиппеля

Доказательство: индукция по 𝑚.

База: 𝑚 = 1. Это стандартная теорема из алгебры: «число корней многочлена 𝑃 ∈ 𝔽 𝑥1 не превосходит deg𝑃».

Индукт. переход: Распишем 𝑃 по степеням 𝑥𝑚:

𝑃 𝑥1, … , 𝑥𝑚 =

𝑘=0

𝑡

𝑥𝑚𝑘 ⋅ 𝑃𝑘 𝑥1, … , 𝑥𝑚−1

где 𝑃1, … , 𝑃𝑡 ∈ 𝔽 𝑥1, … , 𝑥𝑚−1 .

Page 33: Коды на основе многочленов и алгоритмы их декодирования

Лемма Шварца—Зиппеля

𝑃 𝑥1, … , 𝑥𝑚 =

𝑘=0

𝑡

𝑥𝑚𝑘 ⋅ 𝑃𝑘 𝑥1, … , 𝑥𝑚−1

Обозначим 𝑆 ≔ 𝑠1, … , 𝑠𝑚−1 ∈ 𝑆𝑚−1 ∣ 𝑃𝑡 𝑠1, … , 𝑠𝑚−1 = 0

Из неравенства deg𝑃𝑡 ≤ deg𝑃 − 𝑡 и из предположения индукцииследует:

𝑆 ≤ 𝑁𝑚−2 ⋅ deg 𝑃𝑡 ≤ 𝑁𝑚−2 ⋅ deg 𝑃 − 𝑡

Page 34: Коды на основе многочленов и алгоритмы их декодирования

Лемма Шварца—Зиппеля

𝑃 𝑥1, … , 𝑥𝑚 =

𝑘=0

𝑡

𝑥𝑚𝑘 ⋅ 𝑃𝑘 𝑥1, … , 𝑥𝑚−1

𝑆 ≔ 𝑠1, … , 𝑠𝑚−1 ∈ 𝑆𝑚−1 ∣ 𝑃𝑡 𝑠1, … , 𝑠𝑚−1 = 0

Теперь оценим:𝑠1, … , 𝑠𝑚 ∈ 𝑆𝑚 ∣ 𝑃 𝑠1, … , 𝑠𝑚 = 0 =

= 𝑠1, … , 𝑠𝑚 ∣ 𝑃 𝑠1, … , 𝑠𝑚 = 0 ∧ 𝑠1, … , 𝑠𝑚−1 ∈ 𝑆

+ 𝑠1, … , 𝑠𝑚 ∣ 𝑃 𝑠1, … , 𝑠𝑚 = 0 ∧ 𝑠1, … , 𝑠𝑚−1 ∉ 𝑆

≤ 𝑆 ⋅ 𝑁 + 𝑁𝑚−1 − 𝑆 ⋅ 𝑡 ≤ 𝑆 ⋅ 𝑁 + 𝑁𝑚−1 ⋅ 𝑡 ≤

≤ 𝑁𝑚−1 ⋅ deg 𝑃 − 𝑡 + 𝑁𝑚−1 ⋅ 𝑡 = 𝑁𝑚−1 ⋅ deg 𝑃

Page 35: Коды на основе многочленов и алгоритмы их декодирования

Лемма Шварца—Зиппеля

Формулировка леммы Шварца—Зиппеля в вероятностных терминах:

Пусть 𝑃 ∈ 𝔽 𝑥1, … , 𝑥𝑚 и 𝑃 ≢ 0.

Тогда, если 𝑠1, … , 𝑠𝑚 выбираются равновероятно и независимо из некоторого множества мощности 𝑁, то

Pr 𝑃 𝑠1, … , 𝑠𝑚 = 0 ≤ deg 𝑃𝑁

Page 36: Коды на основе многочленов и алгоритмы их декодирования

Пример кода на основе многочленов от двух переменных

Пусть 𝔽𝑞 = 𝑡1, … , 𝑡𝑞 .

Рассмотрим код

𝐶 ≔ 𝑃 𝑡1, 𝑡1 , 𝑃 𝑡1, 𝑡2 … , 𝑃 𝑡𝑞 , 𝑡𝑞 ∣ 𝑃 𝑥, 𝑦 = 0≤𝑖,𝑗<𝑙 𝛼𝑖𝑗𝑥𝑖𝑦𝑗

Он является 𝑞2, 𝑙2, 𝑞 𝑞 − 2𝑙 𝑞-кодом (оценка 𝑑 𝐶 по лемме Шварца—Зиппеля).

Можно также доказать более сильную оценку 𝑑 𝐶 ≥ 𝑞 − 𝑙 2

Page 37: Коды на основе многочленов и алгоритмы их декодирования

Алгеброгеометрические коды (коды В.Д. Гоппы)Код Рида—Соломона выглядит так:

𝑃 𝑡1 , … , 𝑃 𝑡𝑛 ∣ 𝑃 ∈ 𝔽𝑞 𝑥 ∧ deg 𝑃 < 𝑘

Идея: многочлен маленькой степени имеет мало нулей.

Как можно улучшить конструкцию:

• Тщательно выбрать множество точек 𝑡1, … , 𝑡𝑛 , в которых вычисляется значение 𝑃

• Брать не всевозможные многочлены ограниченной степени, а специально выбранное их подмножество.

Page 38: Коды на основе многочленов и алгоритмы их декодирования

Пример алгеброгеометрического кода

Идея: в качестве точек 𝑡1, … , 𝑡𝑛 берём нули некоторого многочлена 𝑃base небольшой степени.

В качестве многочленов, по которым строится 𝐶, берём многочлены, имеющие мало общих нулей с 𝑃base.

Пример.Будем работать в 𝔽13, взяв

𝑃𝑏𝑎𝑠𝑒 ≔ 𝑦2 − 2𝑥3 + 2𝑥

Множество нулей этого многочлена: 𝑆𝑏𝑎𝑠𝑒 = { 0,0 , ±1; 0 , 2;±5 , 3;±3 , 4;±4 ,

6;±2 , 7;±3 , 9;±6 , 10;±2 , 11;±1

Page 39: Коды на основе многочленов и алгоритмы их декодирования

Пример алгеброгеометрического кода

𝑞 ≔ 13

𝑃𝑏𝑎𝑠𝑒 ≔ 𝑦2 − 2𝑥3 + 2𝑥

𝑛 ≔ 𝑆𝑏𝑎𝑠𝑒 = 19

Рассмотрим множество многочленов 𝑃 ≔ 𝛼1 + 𝛼2𝑥 + 𝛼3𝑥

2 + 𝛼4𝑥3 + 𝛼5𝑦 + 𝛼6𝑥𝑦

Лемма.Если 𝑃 ∈ 𝑃 и 𝑃 ≢ 0, то у многочленов 𝑃 и 𝑃base не больше шести общих нулей.

Следствие.

Множество 𝐶 ≔ 𝑃 𝑥0, 𝑦0 𝑥0,𝑦0 ∈𝑆base∣ 𝑃 ∈ 𝑃 является 19,6,13 13-кодом.

Page 40: Коды на основе многочленов и алгоритмы их декодирования

Пример алгеброгеометрического кода

𝑞 ≔ 13

𝑃𝑏𝑎𝑠𝑒 ≔ 𝑦2 − 2𝑥3 + 2𝑥

𝑛 ≔ 𝑆𝑏𝑎𝑠𝑒 = 19

𝑃 ≔ 𝛼1 + 𝛼2𝑥 + 𝛼3𝑥2 + 𝛼4𝑥

3 + 𝛼5𝑦 + 𝛼6𝑥𝑦

Множество 𝐶 ≔ 𝑃 𝑥0, 𝑦0 𝑥0,𝑦0 ∈𝑆base∣ 𝑃 ∈ 𝑃 , образует 19,6,13 13-код.

Сравнение с конструкцией Рида—Соломона:Чтобы с помощью конструкции Р.—С. получить 𝑘 ≥ 6 и 𝑑 ≥ 13, пришлось бы взять 𝑞 ≥ 𝑛 ≥ 𝑘 + 𝑑 − 1 ≥ 18, и это дало бы 18,6,13 19-код или 19,6,14 19-код.

Т.е. выгадали бы единицу в длине слов или расстоянии, но проиграли бы в мощности алфавита в полтора раза.