Коды Рида—Соломона. Алгоритм декодирования Берлекэмпа—Велча.
Коды Рида—Маллера: кодовое расстояние, алгоритм мажоритарного декодирования.
Варианты обобщений конструкции Рида—Маллера. Лемма Липтона—ДеМилло—Шварца—Зиппеля. Понятие об алгеброгеометрических кодах.
3. Коды Рида—Соломона
По условию, 𝑘 ≤ 𝑛 ≤ 𝑞.
𝐶 ≔ 𝑃 𝑡1 , … , 𝑃(𝑡 𝑛) ∣ 𝑃 ∈ 𝔽 𝑞 𝑥 ∧ deg 𝑃 < 𝑘
• У многочлена степени < 𝑘 может быть не более 𝑘 − 1 корней,
поэтому если 𝑃 ≢ 0, то в векторе 𝑃 𝑡1 , … , 𝑃(𝑡 𝑛) не более
𝑘 − 1 нулевых координат.
Отсюда
𝑑 𝐶 = min
𝒂∈𝐶
𝒂≠𝟎
𝒂 = min
𝑃≢0
# 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 0 = 𝑛 − 𝑘 − 1
4. Коды Рида—Соломона
По условию, 𝑘 ≤ 𝑛 ≤ 𝑞.
𝐶 ≔ 𝑃 𝑡1 , … , 𝑃(𝑡 𝑛) ∣ 𝑃 ∈ 𝔽 𝑞 𝑥 ∧ deg 𝑃 < 𝑘
• Вектора 𝑃 𝑡1 , … , 𝑃(𝑡 𝑛) при разных 𝑃 различны: если
выполнено 𝑃1 𝑡1 , … , 𝑃1(𝑡 𝑛) = 𝑃2 𝑡1 , … , 𝑃2(𝑡 𝑛) ,
то у многочлена 𝑃1 − 𝑃2 не менее 𝑛 корней, а т.к. deg( 𝑃1 −
5. Коды Рида—Соломона
Итак, для любых 𝑘 ≤ 𝑛 ≤ 𝑞 множество
𝑃 𝑡1 , … , 𝑃(𝑡 𝑛) ∣ 𝑃 ∈ 𝔽 𝑞 𝑥 ∧ deg 𝑃 < 𝑘
является 𝑛, 𝑘, 𝑑 𝑞-кодом, где 𝑑 = 𝑛 − 𝑘 + 1.
Вспомним границу Синглтона: «для любого 𝑛, 𝑘, 𝑑 𝑞-кода
выполнено 𝑘 ≤ 𝑛 − 𝑑 + 1».
То есть построенный код достигает границы Синглтона!
Недостаток кода: кодовый алфавит нужно брать очень большим,
т.к. 𝑞 ≥ 𝑛.
6. Коды Рида—Соломона: декодирование
Т.к. 𝑑 𝐶 = 𝑛 − 𝑘 + 1, то код может исправлять 𝑛−𝑘
2
ошибок.
Постановка задачи декодирования:
• Дано искажённое кодовое слово кода Р.—С. 𝑝1, … , 𝑝 𝑛 ∈ 𝔽 𝑞
𝑛
• Найти 𝑃 ∈ 𝔽 𝑞 𝑥 , такой, что deg 𝑃 ≤ 𝑘 − 1 и
# 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖 ≤ 𝑛−𝑘
2
(нам гарантируется, что такой 𝑃 существует)
Далее приведём алгоритм Берлекэмпа—Велча (E.R. Berlekamp,
L.R. Welch).
8. Коды Рида—Соломона: декодирование
Дано 𝑝1, … , 𝑝 𝑛 ∈ 𝔽 𝑞
𝑛
.
Найти 𝑃: deg 𝑃 < 𝑘 ∧ # 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖 ≤ 𝑛 − 𝑘 2
Идея: мы не знаем 𝑃, так что попытаемся найти какие-то многочлены 𝐸
и 𝑈, для которых
• deg 𝐸 = 𝑠 и coef 𝑥 𝑠 𝐸 = 1, где 𝑠 ≤ 𝑛 − 𝑘 2
• deg 𝑈 ≤ 𝑠 + 𝑘 − 1
• Для любого 𝑖 ∈ 1, … , 𝑛 выполнено равенство
𝑈 𝑡𝑖 = 𝐸 𝑡𝑖 ⋅ 𝑝𝑖
Мы знаем, что 𝐸 и 𝑈 точно найдутся. Вопросы:
1) как это сделать эффективно, и
2) что если найденные 𝐸 и 𝑈 не совпадут с нужными нам 𝐸 и 𝑈?
11. Коды Рида—Соломона: декодирование
При любом фиксированном 𝑠 система
𝑝1 𝑡1
𝑠
= −
0≤𝑗≤𝑠−1
𝑝1 𝑡1
𝑗
⋅ 𝑒𝑗 +
0≤𝑗≤𝑘+𝑠−1
𝑡1
𝑗
⋅ 𝑢𝑗
⋮
𝑝 𝑛 𝑡 𝑛
𝑠 = −
0≤𝑗≤𝑠−1
𝑝 𝑛 𝑡 𝑛
𝑗
⋅ 𝑒𝑗 +
0≤𝑗≤𝑘+𝑠−1
𝑡 𝑛
𝑗
⋅ 𝑢𝑗
линейная относительно 𝑒0, … , 𝑒 𝑠−1, 𝑢0, … , 𝑢 𝑠+𝑘−1 ⇒ если у неё есть
решение, находится оно быстро.
Перебирая 𝑠 = 0,1, …, найдём то 𝑠, при котором решение есть
(такое 𝑠 точно существует, так как есть исходные многочлены 𝐸 и 𝑈).
Тем самым найдём 𝐸 и 𝑈.
12. Коды Рида—Соломона: декодирование
Нашли какие-то 𝐸 и 𝑈.
Если бы это были те самые 𝐸 и 𝑈, то мы сразу нашли бы 𝑃 𝑥 = 𝑈 𝑥
𝐸 𝑥
.
Оказывается, и в ином случае 𝑃 будет выражаться так же:
Утверждение.
Если пары 𝐸1, 𝑈1 и 𝐸2, 𝑈2 удовлетворяют системе
• deg 𝐸 = 𝑠 и coef 𝑥 𝑠 𝐸 = 1, где 𝑠 ≤ 𝑛 − 𝑘 2
• deg 𝑈 ≤ 𝑠 + 𝑘 − 1
• ∀𝑖 ∈ 1, … , 𝑛 выполнено 𝑈 𝑡𝑖 = 𝑝𝑖 ⋅ 𝐸 𝑡𝑖
то 𝑈1
𝐸1
≡ 𝑈2
𝐸2
.
14. Коды Рида—Соломона: декодирование
Завершение доказательства леммы:
Мы установили, что
• deg 𝑈1 𝐸2 − 𝐸1 𝑈2 ≤ 𝑛 − 1
• 𝑈1 𝑡𝑖 𝐸2 𝑡𝑖 − 𝐸1 𝑡𝑖 𝑈2 𝑡𝑖 = 0 для 𝑖 = 1, … , 𝑛
Отсюда следует, что
𝑈1 𝑥 𝐸2 𝑥 − 𝐸1 𝑥 𝑈2 𝑥 ≡ 0
а это эквивалентно тождеству
𝑈1
𝐸1
≡
𝑈2
𝐸2
15. Коды Рида—Соломона
Простор для обобщений:
• Рассматривать многочлены не от одной, а от многих переменных
(коды Рида—Маллера и другие)
• Рассматривать не все возможные многочлены, а специально
выбранное их подмножество
(алгеброгеометрические коды)
16. Коды Рида—Маллера (I.S. Reed, D.E. Muller)
Зафиксируем параметры 𝑟, 𝑚 , где 𝑟 ≤ 𝑚.
Полагаем 𝑞 ≔ 2 и берём многочлены от 𝑚 переменных степени ≤ 𝑟.
Базис в пространстве 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥 𝑚 , deg 𝑃 ≤ 𝑟 :
1 ∪
∪ 𝑥1, 𝑥2, … , 𝑥 𝑚 ∪
∪ 𝑥1 𝑥2, 𝑥1 𝑥3, … , 𝑥 𝑚−1 𝑥 𝑚 ∪
⋮
∪ 𝑥𝑖1
𝑥𝑖2
⋯ 𝑥𝑖 𝑟
∣ 1 ≤ 𝑖1, … , 𝑖 𝑟 ≤ 𝑚
Размерность этого пространства равна 𝑘 = 𝑡≤𝑟
𝑚
𝑡
.
17. Коды Рида—Маллера
Рассматриваем значения многочленов во всех точках 𝔽2
𝑚
:
𝐶 ≔ { 𝑃 0 … 00 , 𝑃 0 … 01 , … , 𝑃 1 … 11
где 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥 𝑚 и deg 𝑃 ≤ 𝑟
Получаем 𝑛, 𝑘, 𝑑 -код, где 𝑛 = 2 𝑚 и 𝑘 = 𝑡≤𝑟
𝑚
𝑡
.
Чтобы оценить 𝑑, понадобится доказать лемму:
Лемма.
Если 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥 𝑚 , 𝑃 ≢ 0 и deg 𝑃 ≤ 𝑟, то
# 𝑠1, … , 𝑠 𝑚 ∈ 𝔽2
𝑚
∣ 𝑃 𝑠1, … , 𝑠 𝑚 = 1 ≥ 2 𝑚−𝑟
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
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 𝑚−𝑟 наборах.
20. Коды Рида—Маллера:
мажоритарное декодирование
Код Рида—Маллера с параметрами 𝑟, 𝑚 является
2 𝑚
, 𝑡≤𝑟
𝑚
𝑡
, 2 𝑚−𝑟
-кодом.
Значит, он может исправлять вплоть до 2 𝑚−𝑟−1 − 1 ошибок, и это можно
делать очень быстро многоэтапным голосованием (этот способ
декодирования также называют мажоритарным).
Постановка задачи:
• В векторе из кода Р.—М. (т.е. векторе значений многочлена степени ≤ 𝑟)
изменяются менее 2 𝑚−𝑟−1 координат (т.е. значение многочлена искажается
менее чем в стольких точках)
• Нужно восстановить по искажённому вектору значений исходный вектор
значений (т.е. исходный многочлен)
21. Коды Рида—Маллера:
мажоритарное декодирование
Кодовое слово — это значения многочлена, выразимого линейной
комбинацией в базисе
1 ∪ 𝑥1, 𝑥2, … , 𝑥 𝑚 ∪ ⋯ ∪ 𝑥𝑖1
𝑥𝑖2
⋯ 𝑥𝑖 𝑟
∣ 1 ≤ 𝑖1, … , 𝑖 𝑟 ≤ 𝑚
Восстановить кодовое слово — это то же, что найти коэффициенты
этой линейной комбинации.
22. Лемма о старшем коэффициенте
многочленов над 𝔽2
Лемма.
Для любого 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥 𝑟 справедлива формула
coef 𝑥1⋅…⋅𝑥 𝑟
𝑃 =
𝛼1,…,𝛼 𝑟∈𝔽2
𝑃 𝛼1, … , 𝛼 𝑟
Доказательство:
Многочлен 𝑃 можно представить в виде
𝑃 = 𝑐 ⋅ 𝑥1 … 𝑥 𝑟 + 𝑃1 + ⋯ + 𝑃𝑟
где в 𝑃𝑖 не входит 𝑥𝑖. Получаем
𝛼1,…,𝛼 𝑟∈𝔽2
𝑃 𝛼1, … , 𝛼 𝑟 =
𝛼1,…,𝛼 𝑟∈𝔽2
𝑐 ⋅ 𝛼1 … 𝛼 𝑟
=𝑐
+
1≤𝑖≤𝑟 𝛼1,…,𝛼 𝑟∈𝔽2
𝑃𝑖 𝛼1, … , 𝛼 𝑟
=0
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 каждое слагаемое в последней сумме равно нулю.
Лемма доказана.
25. Коды Рида—Маллера:
мажоритарное декодирование
Для любых 𝛽1, … , 𝛽 𝑚−𝑟 ∈ 𝔽2 мы получили
coef 𝑥1⋅…⋅𝑥 𝑟
𝑃 =
𝛼1,…,𝛼 𝑟∈𝔽2
𝑃 𝛼1, … , 𝛼 𝑟, 𝛽1, … , 𝛽 𝑚−𝑟
Если нам дано кодовое слово с не более чем 2 𝑚−𝑟−1
− 1
ошибками, это означает, что нам для дан некий набор величин
𝑃 𝑡1, … , 𝑡 𝑚 , где 𝑃 𝑡1, … , 𝑡 𝑚 = 𝑃 𝑡1, … , 𝑡 𝑚 для всех 𝑡1, … , 𝑡 𝑚 ∈
𝔽2
𝑚
∖ 𝑇bad, где 𝑇bad ≤ 2 𝑚−𝑟−1
− 1.
Подставим 𝑃 𝑡1, … , 𝑡 𝑚 вместо 𝑃 𝑡1, … , 𝑡 𝑚 в нашу формулу…
26. Коды Рида—Маллера:
мажоритарное декодирование
Для каждого набора 𝛽1, … , 𝛽 𝑚−𝑟 ∈ 𝔽2
𝑚−𝑟
рассмотрим сумму
𝑆 𝛽1,…,𝛽 𝑚−𝑟
≔
𝛼1,…,𝛼 𝑟∈𝔽2
𝑃 𝛼1, … , 𝛼 𝑟, 𝛽1, … , 𝛽 𝑚−𝑟
У сумм 𝑆 𝛽1,…,𝛽 𝑚−𝑟
при разных нет общих слагаемых. Поэтому
𝑆 𝛽1,…,𝛽 𝑚−𝑟
= coef 𝑥1⋅…⋅𝑥 𝑟
𝑃
для всех 𝛽1, … , 𝛽 𝑚−𝑟 ∈ 𝔽2
𝑚−𝑟
, кроме, быть может, 𝑇bad штук.
Всего сумм 2 𝑚−𝑟, и 𝑇bad < 2 𝑚−𝑟−1, а значит большинство этих
сумм равны coef 𝑥1⋅…⋅𝑥 𝑟
𝑃.
27. Коды Рида—Маллера:
мажоритарное декодирование
Итоговый метод определения coef 𝑥1⋅…⋅𝑥 𝑟
𝑃:
• Для каждого 𝛽1, … , 𝛽 𝑚−𝑟 ∈ 𝔽2
𝑚−𝑟
вычисляем соответствующую
сумму 𝑆 𝛽1,…,𝛽 𝑚−𝑟
• Находим coef 𝑥1⋅…⋅𝑥 𝑟
𝑃 голосованием:
т.е. как то значение, которое встречается чаще всего среди
𝑆 𝛽1,…,𝛽 𝑚−𝑟
.
Ясно, что так можно определить любой из коэффициентов
coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟
𝑃.
35. Лемма Шварца—Зиппеля
Формулировка леммы Шварца—Зиппеля в вероятностных
терминах:
Пусть 𝑃 ∈ 𝔽 𝑥1, … , 𝑥 𝑚 и 𝑃 ≢ 0.
Тогда, если 𝑠1, … , 𝑠 𝑚 выбираются равновероятно и независимо из
некоторого множества мощности 𝑁, то
Pr 𝑃 𝑠1, … , 𝑠 𝑚 = 0 ≤ deg 𝑃
𝑁
36. Пример кода на основе
многочленов от двух переменных
Пусть 𝔽 𝑞 = 𝑡1, … , 𝑡 𝑞 .
Рассмотрим код
𝐶 ≔ 𝑃 𝑡1, 𝑡1 , 𝑃 𝑡1, 𝑡2 … , 𝑃 𝑡 𝑞, 𝑡 𝑞 ∣ 𝑃 𝑥, 𝑦 = 0≤𝑖,𝑗<𝑙 𝛼𝑖𝑗 𝑥 𝑖 𝑦 𝑗
Он является 𝑞2, 𝑙2, 𝑞 𝑞 − 2𝑙 𝑞-кодом (оценка 𝑑 𝐶 по лемме
Шварца—Зиппеля).
Можно также доказать более сильную оценку
𝑑 𝐶 ≥ 𝑞 − 𝑙 2
37. Алгеброгеометрические коды
(коды В.Д. Гоппы)
Код Рида—Соломона выглядит так:
𝑃 𝑡1 , … , 𝑃 𝑡 𝑛 ∣ 𝑃 ∈ 𝔽 𝑞 𝑥 ∧ deg 𝑃 < 𝑘
Идея: многочлен маленькой степени имеет мало нулей.
Как можно улучшить конструкцию:
• Тщательно выбрать множество точек 𝑡1, … , 𝑡 𝑛 ,
в которых вычисляется значение 𝑃
• Брать не всевозможные многочлены ограниченной степени,
а специально выбранное их подмножество.
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
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-кодом.
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-
код.
Т.е. выгадали бы единицу в длине слов или расстоянии, но проиграли бы в
мощности алфавита в полтора раза.