SlideShare a Scribd company logo
Теория кодирования
МФТИ, осень 2013
Александр Дайняк
www.dainiak.com
Коды Рида—Соломона
(I.S. Reed, G. Solomon)
Пусть 𝑘 ≤ 𝑛 ≤ 𝑞.
Пусть 𝑡1, … , 𝑡 𝑛 ∈ 𝔽 𝑞 — фиксированные, попарно различные
элементы.
Рассмотрим такое множество слов:
𝐶 ≔ 𝑃 𝑡1 , … , 𝑃(𝑡 𝑛) ∣ 𝑃 ∈ 𝔽 𝑞 𝑥 ∧ deg 𝑃 < 𝑘
Непосредственно проверяется, что 𝐶 — линейное пространство:
𝛼 ⋅ 𝑃1 𝑡1 , … , 𝑃1 𝑡 𝑛 + 𝛽 ⋅ 𝑃2 𝑡1 , … , 𝑃2 𝑡 𝑛 =
= 𝛼𝑃1 + 𝛽𝑃2 𝑡1 , … , 𝛼𝑃1 + 𝛽𝑃2 𝑡 𝑛
Коды Рида—Соломона
По условию, 𝑘 ≤ 𝑛 ≤ 𝑞.
𝐶 ≔ 𝑃 𝑡1 , … , 𝑃(𝑡 𝑛) ∣ 𝑃 ∈ 𝔽 𝑞 𝑥 ∧ deg 𝑃 < 𝑘
• У многочлена степени < 𝑘 может быть не более 𝑘 − 1 корней,
поэтому если 𝑃 ≢ 0, то в векторе 𝑃 𝑡1 , … , 𝑃(𝑡 𝑛) не более
𝑘 − 1 нулевых координат.
Отсюда
𝑑 𝐶 = min
𝒂∈𝐶
𝒂≠𝟎
𝒂 = min
𝑃≢0
# 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 0 = 𝑛 − 𝑘 − 1
Коды Рида—Соломона
По условию, 𝑘 ≤ 𝑛 ≤ 𝑞.
𝐶 ≔ 𝑃 𝑡1 , … , 𝑃(𝑡 𝑛) ∣ 𝑃 ∈ 𝔽 𝑞 𝑥 ∧ deg 𝑃 < 𝑘
• Вектора 𝑃 𝑡1 , … , 𝑃(𝑡 𝑛) при разных 𝑃 различны: если
выполнено 𝑃1 𝑡1 , … , 𝑃1(𝑡 𝑛) = 𝑃2 𝑡1 , … , 𝑃2(𝑡 𝑛) ,
то у многочлена 𝑃1 − 𝑃2 не менее 𝑛 корней, а т.к. deg( 𝑃1 −
Коды Рида—Соломона
Итак, для любых 𝑘 ≤ 𝑛 ≤ 𝑞 множество
𝑃 𝑡1 , … , 𝑃(𝑡 𝑛) ∣ 𝑃 ∈ 𝔽 𝑞 𝑥 ∧ deg 𝑃 < 𝑘
является 𝑛, 𝑘, 𝑑 𝑞-кодом, где 𝑑 = 𝑛 − 𝑘 + 1.
Вспомним границу Синглтона: «для любого 𝑛, 𝑘, 𝑑 𝑞-кода
выполнено 𝑘 ≤ 𝑛 − 𝑑 + 1».
То есть построенный код достигает границы Синглтона!
Недостаток кода: кодовый алфавит нужно брать очень большим,
т.к. 𝑞 ≥ 𝑛.
Коды Рида—Соломона: декодирование
Т.к. 𝑑 𝐶 = 𝑛 − 𝑘 + 1, то код может исправлять 𝑛−𝑘
2
ошибок.
Постановка задачи декодирования:
• Дано искажённое кодовое слово кода Р.—С. 𝑝1, … , 𝑝 𝑛 ∈ 𝔽 𝑞
𝑛
• Найти 𝑃 ∈ 𝔽 𝑞 𝑥 , такой, что deg 𝑃 ≤ 𝑘 − 1 и
# 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖 ≤ 𝑛−𝑘
2
(нам гарантируется, что такой 𝑃 существует)
Далее приведём алгоритм Берлекэмпа—Велча (E.R. Berlekamp,
L.R. Welch).
Коды Рида—Соломона: декодирование
Дано 𝑝1, … , 𝑝 𝑛 ∈ 𝔽 𝑞
𝑛.
Найти 𝑃: deg 𝑃 < 𝑘 ∧ # 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖 ≤ 𝑛 − 𝑘 2
Рассмотрим многочлен ошибок
𝐸 𝑥 ≔
𝑖: 𝑃 𝑡 𝑖 ≠ 𝑝 𝑖
𝑥 − 𝑡𝑖
и вспомогательный многочлен 𝑈 𝑥 ≔ 𝐸 𝑥 ⋅ 𝑃 𝑥 .
Заметим, что
• deg 𝐸 = 𝑠 и coef 𝑥 𝑠 𝐸 = 1, где 𝑠 ≔ # 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖
• deg 𝑈 ≤ deg 𝐸 + deg 𝑃 ≤ 𝑠 + 𝑘 − 1
• Для любого 𝑖 ∈ 1, … , 𝑛 выполнено равенство
𝑈 𝑡𝑖 = 𝐸 𝑡𝑖 ⋅ 𝑝𝑖
Коды Рида—Соломона: декодирование
Дано 𝑝1, … , 𝑝 𝑛 ∈ 𝔽 𝑞
𝑛
.
Найти 𝑃: deg 𝑃 < 𝑘 ∧ # 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖 ≤ 𝑛 − 𝑘 2
Идея: мы не знаем 𝑃, так что попытаемся найти какие-то многочлены 𝐸
и 𝑈, для которых
• deg 𝐸 = 𝑠 и coef 𝑥 𝑠 𝐸 = 1, где 𝑠 ≤ 𝑛 − 𝑘 2
• deg 𝑈 ≤ 𝑠 + 𝑘 − 1
• Для любого 𝑖 ∈ 1, … , 𝑛 выполнено равенство
𝑈 𝑡𝑖 = 𝐸 𝑡𝑖 ⋅ 𝑝𝑖
Мы знаем, что 𝐸 и 𝑈 точно найдутся. Вопросы:
1) как это сделать эффективно, и
2) что если найденные 𝐸 и 𝑈 не совпадут с нужными нам 𝐸 и 𝑈?
Коды Рида—Соломона: декодирование
• 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
𝑢𝑗 𝑡 𝑛
𝑗
Коды Рида—Соломона: декодирование
При любом фиксированном 𝑠 ≤ 𝑛 − 𝑘 2 система
𝑝1 𝑡1
𝑠
= −
0≤𝑗≤𝑠−1
𝑝1 𝑡1
𝑗
⋅ 𝑒𝑗 +
0≤𝑗≤𝑘+𝑠−1
𝑡1
𝑗
⋅ 𝑢𝑗
⋮
𝑝 𝑛 𝑡 𝑛
𝑠 = −
0≤𝑗≤𝑠−1
𝑝 𝑛 𝑡 𝑛
𝑗
⋅ 𝑒𝑗 +
0≤𝑗≤𝑘+𝑠−1
𝑡 𝑛
𝑗
⋅ 𝑢𝑗
линейная относительно 𝑒0, … , 𝑒𝑠−1, 𝑢0, … , 𝑢 𝑠+𝑘−1.
Коды Рида—Соломона: декодирование
При любом фиксированном 𝑠 система
𝑝1 𝑡1
𝑠
= −
0≤𝑗≤𝑠−1
𝑝1 𝑡1
𝑗
⋅ 𝑒𝑗 +
0≤𝑗≤𝑘+𝑠−1
𝑡1
𝑗
⋅ 𝑢𝑗
⋮
𝑝 𝑛 𝑡 𝑛
𝑠 = −
0≤𝑗≤𝑠−1
𝑝 𝑛 𝑡 𝑛
𝑗
⋅ 𝑒𝑗 +
0≤𝑗≤𝑘+𝑠−1
𝑡 𝑛
𝑗
⋅ 𝑢𝑗
линейная относительно 𝑒0, … , 𝑒 𝑠−1, 𝑢0, … , 𝑢 𝑠+𝑘−1 ⇒ если у неё есть
решение, находится оно быстро.
Перебирая 𝑠 = 0,1, …, найдём то 𝑠, при котором решение есть
(такое 𝑠 точно существует, так как есть исходные многочлены 𝐸 и 𝑈).
Тем самым найдём 𝐸 и 𝑈.
Коды Рида—Соломона: декодирование
Нашли какие-то 𝐸 и 𝑈.
Если бы это были те самые 𝐸 и 𝑈, то мы сразу нашли бы 𝑃 𝑥 = 𝑈 𝑥
𝐸 𝑥
.
Оказывается, и в ином случае 𝑃 будет выражаться так же:
Утверждение.
Если пары 𝐸1, 𝑈1 и 𝐸2, 𝑈2 удовлетворяют системе
• deg 𝐸 = 𝑠 и coef 𝑥 𝑠 𝐸 = 1, где 𝑠 ≤ 𝑛 − 𝑘 2
• deg 𝑈 ≤ 𝑠 + 𝑘 − 1
• ∀𝑖 ∈ 1, … , 𝑛 выполнено 𝑈 𝑡𝑖 = 𝑝𝑖 ⋅ 𝐸 𝑡𝑖
то 𝑈1
𝐸1
≡ 𝑈2
𝐸2
.
Коды Рида—Соломона: декодирование
Доказательство утверждения:
Пусть 𝐸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 𝑡𝑖
Коды Рида—Соломона: декодирование
Завершение доказательства леммы:
Мы установили, что
• deg 𝑈1 𝐸2 − 𝐸1 𝑈2 ≤ 𝑛 − 1
• 𝑈1 𝑡𝑖 𝐸2 𝑡𝑖 − 𝐸1 𝑡𝑖 𝑈2 𝑡𝑖 = 0 для 𝑖 = 1, … , 𝑛
Отсюда следует, что
𝑈1 𝑥 𝐸2 𝑥 − 𝐸1 𝑥 𝑈2 𝑥 ≡ 0
а это эквивалентно тождеству
𝑈1
𝐸1
≡
𝑈2
𝐸2
Коды Рида—Соломона
Простор для обобщений:
• Рассматривать многочлены не от одной, а от многих переменных
(коды Рида—Маллера и другие)
• Рассматривать не все возможные многочлены, а специально
выбранное их подмножество
(алгеброгеометрические коды)
Коды Рида—Маллера (I.S. Reed, D.E. Muller)
Зафиксируем параметры 𝑟, 𝑚 , где 𝑟 ≤ 𝑚.
Полагаем 𝑞 ≔ 2 и берём многочлены от 𝑚 переменных степени ≤ 𝑟.
Базис в пространстве 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥 𝑚 , deg 𝑃 ≤ 𝑟 :
1 ∪
∪ 𝑥1, 𝑥2, … , 𝑥 𝑚 ∪
∪ 𝑥1 𝑥2, 𝑥1 𝑥3, … , 𝑥 𝑚−1 𝑥 𝑚 ∪
⋮
∪ 𝑥𝑖1
𝑥𝑖2
⋯ 𝑥𝑖 𝑟
∣ 1 ≤ 𝑖1, … , 𝑖 𝑟 ≤ 𝑚
Размерность этого пространства равна 𝑘 = 𝑡≤𝑟
𝑚
𝑡
.
Коды Рида—Маллера
Рассматриваем значения многочленов во всех точках 𝔽2
𝑚
:
𝐶 ≔ { 𝑃 0 … 00 , 𝑃 0 … 01 , … , 𝑃 1 … 11
где 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥 𝑚 и deg 𝑃 ≤ 𝑟
Получаем 𝑛, 𝑘, 𝑑 -код, где 𝑛 = 2 𝑚 и 𝑘 = 𝑡≤𝑟
𝑚
𝑡
.
Чтобы оценить 𝑑, понадобится доказать лемму:
Лемма.
Если 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥 𝑚 , 𝑃 ≢ 0 и deg 𝑃 ≤ 𝑟, то
# 𝑠1, … , 𝑠 𝑚 ∈ 𝔽2
𝑚
∣ 𝑃 𝑠1, … , 𝑠 𝑚 = 1 ≥ 2 𝑚−𝑟
Коды Рида—Маллера: кодовое расстояние
Лемма.
Если 𝑃 ∈ 𝔽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
Коды Рида—Маллера: кодовое расстояние
𝑃 𝑥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 𝑚−𝑟 наборах.
Коды Рида—Маллера:
мажоритарное декодирование
Код Рида—Маллера с параметрами 𝑟, 𝑚 является
2 𝑚
, 𝑡≤𝑟
𝑚
𝑡
, 2 𝑚−𝑟
-кодом.
Значит, он может исправлять вплоть до 2 𝑚−𝑟−1 − 1 ошибок, и это можно
делать очень быстро многоэтапным голосованием (этот способ
декодирования также называют мажоритарным).
Постановка задачи:
• В векторе из кода Р.—М. (т.е. векторе значений многочлена степени ≤ 𝑟)
изменяются менее 2 𝑚−𝑟−1 координат (т.е. значение многочлена искажается
менее чем в стольких точках)
• Нужно восстановить по искажённому вектору значений исходный вектор
значений (т.е. исходный многочлен)
Коды Рида—Маллера:
мажоритарное декодирование
Кодовое слово — это значения многочлена, выразимого линейной
комбинацией в базисе
1 ∪ 𝑥1, 𝑥2, … , 𝑥 𝑚 ∪ ⋯ ∪ 𝑥𝑖1
𝑥𝑖2
⋯ 𝑥𝑖 𝑟
∣ 1 ≤ 𝑖1, … , 𝑖 𝑟 ≤ 𝑚
Восстановить кодовое слово — это то же, что найти коэффициенты
этой линейной комбинации.
Лемма о старшем коэффициенте
многочленов над 𝔽2
Лемма.
Для любого 𝑃 ∈ 𝔽2 𝑥1, … , 𝑥 𝑟 справедлива формула
coef 𝑥1⋅…⋅𝑥 𝑟
𝑃 =
𝛼1,…,𝛼 𝑟∈𝔽2
𝑃 𝛼1, … , 𝛼 𝑟
Доказательство:
Многочлен 𝑃 можно представить в виде
𝑃 = 𝑐 ⋅ 𝑥1 … 𝑥 𝑟 + 𝑃1 + ⋯ + 𝑃𝑟
где в 𝑃𝑖 не входит 𝑥𝑖. Получаем
𝛼1,…,𝛼 𝑟∈𝔽2
𝑃 𝛼1, … , 𝛼 𝑟 =
𝛼1,…,𝛼 𝑟∈𝔽2
𝑐 ⋅ 𝛼1 … 𝛼 𝑟
=𝑐
+
1≤𝑖≤𝑟 𝛼1,…,𝛼 𝑟∈𝔽2
𝑃𝑖 𝛼1, … , 𝛼 𝑟
=0
Лемма о старшем коэффициенте
многочленов над 𝔽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 каждое слагаемое в последней сумме равно нулю.
Лемма доказана.
Коды Рида—Маллера:
мажоритарное декодирование
Пусть 𝑃 — произвольный многочлен из кода Рида—Маллера.
Зафиксируем произвольные 𝛽1, … , 𝛽 𝑚−𝑟 ∈ 𝔽2, и обозначим
𝑃 𝛽1,…,𝛽 𝑚−𝑟
≔ 𝑃 𝑥1, … , 𝑥 𝑟, 𝛽1, … , 𝛽 𝑚−𝑟
Имеем 𝑃 𝛽1,…,𝛽 𝑚−𝑟
∈ 𝔽2 𝑥1, … , 𝑥 𝑟 , поэтому по лемме, доказанной
только что, получаем
𝛼1,…,𝛼 𝑟∈𝔽2
𝑃 𝛽1,…,𝛽 𝑚−𝑟
𝛼1, … , 𝛼 𝑟 = coef 𝑥1⋅…⋅𝑥 𝑟
𝑃 𝛽1,…,𝛽 𝑚−𝑟
= coef 𝑥1⋅…⋅𝑥 𝑟
𝑃
Коды Рида—Маллера:
мажоритарное декодирование
Для любых 𝛽1, … , 𝛽 𝑚−𝑟 ∈ 𝔽2 мы получили
coef 𝑥1⋅…⋅𝑥 𝑟
𝑃 =
𝛼1,…,𝛼 𝑟∈𝔽2
𝑃 𝛼1, … , 𝛼 𝑟, 𝛽1, … , 𝛽 𝑚−𝑟
Если нам дано кодовое слово с не более чем 2 𝑚−𝑟−1
− 1
ошибками, это означает, что нам для дан некий набор величин
𝑃 𝑡1, … , 𝑡 𝑚 , где 𝑃 𝑡1, … , 𝑡 𝑚 = 𝑃 𝑡1, … , 𝑡 𝑚 для всех 𝑡1, … , 𝑡 𝑚 ∈
𝔽2
𝑚
∖ 𝑇bad, где 𝑇bad ≤ 2 𝑚−𝑟−1
− 1.
Подставим 𝑃 𝑡1, … , 𝑡 𝑚 вместо 𝑃 𝑡1, … , 𝑡 𝑚 в нашу формулу…
Коды Рида—Маллера:
мажоритарное декодирование
Для каждого набора 𝛽1, … , 𝛽 𝑚−𝑟 ∈ 𝔽2
𝑚−𝑟
рассмотрим сумму
𝑆 𝛽1,…,𝛽 𝑚−𝑟
≔
𝛼1,…,𝛼 𝑟∈𝔽2
𝑃 𝛼1, … , 𝛼 𝑟, 𝛽1, … , 𝛽 𝑚−𝑟
У сумм 𝑆 𝛽1,…,𝛽 𝑚−𝑟
при разных нет общих слагаемых. Поэтому
𝑆 𝛽1,…,𝛽 𝑚−𝑟
= coef 𝑥1⋅…⋅𝑥 𝑟
𝑃
для всех 𝛽1, … , 𝛽 𝑚−𝑟 ∈ 𝔽2
𝑚−𝑟
, кроме, быть может, 𝑇bad штук.
Всего сумм 2 𝑚−𝑟, и 𝑇bad < 2 𝑚−𝑟−1, а значит большинство этих
сумм равны coef 𝑥1⋅…⋅𝑥 𝑟
𝑃.
Коды Рида—Маллера:
мажоритарное декодирование
Итоговый метод определения coef 𝑥1⋅…⋅𝑥 𝑟
𝑃:
• Для каждого 𝛽1, … , 𝛽 𝑚−𝑟 ∈ 𝔽2
𝑚−𝑟
вычисляем соответствующую
сумму 𝑆 𝛽1,…,𝛽 𝑚−𝑟
• Находим coef 𝑥1⋅…⋅𝑥 𝑟
𝑃 голосованием:
т.е. как то значение, которое встречается чаще всего среди
𝑆 𝛽1,…,𝛽 𝑚−𝑟
.
Ясно, что так можно определить любой из коэффициентов
coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟
𝑃.
Коды Рида—Маллера:
мажоритарное декодирование
Пусть уже найдены все coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟
𝑃.
Рассмотрим многочлен
𝑃 𝑟−1 ≔ 𝑃 −
𝑖1,…,𝑖 𝑟
coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟
𝑃 ⋅ 𝑥𝑖1
… 𝑥𝑖 𝑟
В 𝑃 𝑟−1 уже все слагаемые степени ≤ 𝑟 − 1.
Рассмотрим величины 𝑃 𝑟−1 𝑡1, … , 𝑡 𝑚 , равные
𝑃 𝑡1, … , 𝑡 𝑚 −
𝑖1,…,𝑖 𝑟
coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟
𝑃 ⋅ 𝑡𝑖1
… 𝑡𝑖 𝑟
Ясно, что 𝑃 𝑟−1 𝑡1, … , 𝑡 𝑚 = 𝑃 𝑟−1 𝑡1, … , 𝑡 𝑚 на множестве точек 𝔽2
𝑚
∖ 𝑇bad.
Коды Рида—Маллера:
мажоритарное декодирование
Пусть уже найдены все 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.
Коды Рида—Маллера:
мажоритарное декодирование
Общая схема:
• Определяем все coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟
𝑃
• Рассматриваем
𝑃 𝑟−1 ≔ 𝑃 −
𝑖1,…,𝑖 𝑟
coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟
𝑃 ⋅ 𝑥𝑖1
… 𝑥𝑖 𝑟
• Определяем все coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟−1
𝑃
• Рассматриваем
𝑃 𝑟−2 ≔ 𝑃 𝑟−1 −
𝑖1,…,𝑖 𝑟−1
coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟−1
𝑃 ⋅ 𝑥𝑖1
… 𝑥𝑖 𝑟−1
• Определяем все coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟−2
𝑃
• И так далее…
Лемма Шварца—Зиппеля
Чтобы оценивать 𝑑 𝐶 кодов на основе многочленов многих
переменных, подходит
Теорема. (R.J. Lipton, R.A. DeMillo, J. Schwartz, R. Zippel)
Пусть 𝑃 ∈ 𝔽 𝑥1, … , 𝑥 𝑚 и 𝑃 ≢ 0.
Пусть 𝑆 ⊆ 𝔽 — произвольное множество мощности 𝑁.
Тогда
# 𝑠1, … , 𝑠 𝑚 ∈ 𝑆 𝑚 ∣ 𝑃 𝑠1, … , 𝑠 𝑚 = 0 ≤ 𝑁 𝑚−1 ⋅ deg 𝑃
Лемма Шварца—Зиппеля
Доказательство: индукция по 𝑚.
База: 𝑚 = 1. Это стандартная теорема из алгебры: «число корней
многочлена 𝑃 ∈ 𝔽 𝑥1 не превосходит deg 𝑃».
Индукт. переход: Распишем 𝑃 по степеням 𝑥 𝑚:
𝑃 𝑥1, … , 𝑥 𝑚 =
𝑘=0
𝑡
𝑥 𝑚
𝑘 ⋅ 𝑃𝑘 𝑥1, … , 𝑥 𝑚−1
где 𝑃1, … , 𝑃𝑡 ∈ 𝔽 𝑥1, … , 𝑥 𝑚−1 .
Лемма Шварца—Зиппеля
𝑃 𝑥1, … , 𝑥 𝑚 =
𝑘=0
𝑡
𝑥 𝑚
𝑘
⋅ 𝑃𝑘 𝑥1, … , 𝑥 𝑚−1
Обозначим
𝑆 ≔ 𝑠1, … , 𝑠 𝑚−1 ∈ 𝑆 𝑚−1
∣ 𝑃𝑡 𝑠1, … , 𝑠 𝑚−1 = 0
Из неравенства deg 𝑃𝑡 ≤ deg 𝑃 − 𝑡 и из предположения индукции
следует:
𝑆 ≤ 𝑁 𝑚−2 ⋅ deg 𝑃𝑡 ≤ 𝑁 𝑚−2 ⋅ deg 𝑃 − 𝑡
Лемма Шварца—Зиппеля
𝑃 𝑥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 𝑃
Лемма Шварца—Зиппеля
Формулировка леммы Шварца—Зиппеля в вероятностных
терминах:
Пусть 𝑃 ∈ 𝔽 𝑥1, … , 𝑥 𝑚 и 𝑃 ≢ 0.
Тогда, если 𝑠1, … , 𝑠 𝑚 выбираются равновероятно и независимо из
некоторого множества мощности 𝑁, то
Pr 𝑃 𝑠1, … , 𝑠 𝑚 = 0 ≤ deg 𝑃
𝑁
Пример кода на основе
многочленов от двух переменных
Пусть 𝔽 𝑞 = 𝑡1, … , 𝑡 𝑞 .
Рассмотрим код
𝐶 ≔ 𝑃 𝑡1, 𝑡1 , 𝑃 𝑡1, 𝑡2 … , 𝑃 𝑡 𝑞, 𝑡 𝑞 ∣ 𝑃 𝑥, 𝑦 = 0≤𝑖,𝑗<𝑙 𝛼𝑖𝑗 𝑥 𝑖 𝑦 𝑗
Он является 𝑞2, 𝑙2, 𝑞 𝑞 − 2𝑙 𝑞-кодом (оценка 𝑑 𝐶 по лемме
Шварца—Зиппеля).
Можно также доказать более сильную оценку
𝑑 𝐶 ≥ 𝑞 − 𝑙 2
Алгеброгеометрические коды
(коды В.Д. Гоппы)
Код Рида—Соломона выглядит так:
𝑃 𝑡1 , … , 𝑃 𝑡 𝑛 ∣ 𝑃 ∈ 𝔽 𝑞 𝑥 ∧ deg 𝑃 < 𝑘
Идея: многочлен маленькой степени имеет мало нулей.
Как можно улучшить конструкцию:
• Тщательно выбрать множество точек 𝑡1, … , 𝑡 𝑛 ,
в которых вычисляется значение 𝑃
• Брать не всевозможные многочлены ограниченной степени,
а специально выбранное их подмножество.
Пример
алгеброгеометрического кода
Идея: в качестве точек 𝑡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
Пример
алгеброгеометрического кода
𝑞 ≔ 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-кодом.
Пример
алгеброгеометрического кода
𝑞 ≔ 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-
код.
Т.е. выгадали бы единицу в длине слов или расстоянии, но проиграли бы в
мощности алфавита в полтора раза.

More Related Content

PDF
Коды, исправляющие ошибки. Простейшие границы. Коды Варшамова—Тененгольца.
PDF
Линейные коды
PDF
Циклические коды БЧХ, Хемминга. Восстановление синхронизации
PDF
Циклические коды. Граница БЧХ
PDF
Границы Плоткина и Элайеса—Бассалыго
PPT
коды хемминга
PDF
Коды Адамара. Каскадные коды Форни.
PDF
Приложения теории кодирования
Коды, исправляющие ошибки. Простейшие границы. Коды Варшамова—Тененгольца.
Линейные коды
Циклические коды БЧХ, Хемминга. Восстановление синхронизации
Циклические коды. Граница БЧХ
Границы Плоткина и Элайеса—Бассалыго
коды хемминга
Коды Адамара. Каскадные коды Форни.
Приложения теории кодирования

Similar to Коды на основе многочленов и алгоритмы их декодирования (17)

PPT
лекция 14
PPT
лекция 14
DOCX
Конспект лекций по теории кодирования
PPTX
Теорема Алона о нулях и её применения
PDF
Алфавитное кодирование. Коды с минимальной избыточностью. Теорема Макмиллана.
PPTX
ntroduction to Information System22.pptx
PPT
Александра Торгашова
PDF
20131013 h10 lecture4_matiyasevich
PDF
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
PPT
лабораторная работа 3
PDF
20071111 efficientalgorithms kulikov_lecture06
PPTX
Производящие функции
PDF
Элементы дискретной математики для программистов
PDF
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
PPTX
Теорема Рамсея, оценки чисел Рамсея
PDF
kytly2
PDF
Maths 18-01-23
лекция 14
лекция 14
Конспект лекций по теории кодирования
Теорема Алона о нулях и её применения
Алфавитное кодирование. Коды с минимальной избыточностью. Теорема Макмиллана.
ntroduction to Information System22.pptx
Александра Торгашова
20131013 h10 lecture4_matiyasevich
Задача о ближайшем кодовом слове. Коды Галлагера—Сипсера—Шпильмана
лабораторная работа 3
20071111 efficientalgorithms kulikov_lecture06
Производящие функции
Элементы дискретной математики для программистов
Григорий Анатольевич Кабатянский - Конечные алгебры, геометрии и коды
Теорема Рамсея, оценки чисел Рамсея
kytly2
Maths 18-01-23
Ad

More from Alex Dainiak (19)

PDF
Основы теории графов 11: гамильтоновы циклы
PDF
Основы теории графов 10: экстремальная теория графов
PDF
Основы теории графов 09: раскраски планарных графов, совершенные графы
PDF
Основы теории графов 08: раскраски и списочные раскраски
PDF
Основы теории графов 07: сепараторы в планарных графах
PDF
Основы теории графов 06: триангуляции и трёхсвязные планарные графы
PDF
Основы теории графов 05: критерии планарности графов
PDF
Основы теории графов 04: метрики на деревьях
PDF
Основы теории графов 03: связность
PDF
Основы теории графов 01: напоминание определений, теорема Форда—Фалкерсона
PDF
Основы теории графов 02: факторизация графов (разложение на простые подграфы)
PDF
Графовая модель канала связи. Шенноновская ёмкость
PPTX
Визуализация графов: left-right алгоритм распознавания планарности
PPTX
Визуализация графов: укладки деревьев
PPTX
Визуализация графов: теорема Татта о барицентрической укладке
PPTX
Визуализация графов: история
PPTX
Визуализация графов: нижние оценки и NP-трудность
PPTX
Размерность Вапника—Червоненкиса
PPTX
Частично-упорядоченные множества, булеан, теоремы о разложении на цепи и анти...
Основы теории графов 11: гамильтоновы циклы
Основы теории графов 10: экстремальная теория графов
Основы теории графов 09: раскраски планарных графов, совершенные графы
Основы теории графов 08: раскраски и списочные раскраски
Основы теории графов 07: сепараторы в планарных графах
Основы теории графов 06: триангуляции и трёхсвязные планарные графы
Основы теории графов 05: критерии планарности графов
Основы теории графов 04: метрики на деревьях
Основы теории графов 03: связность
Основы теории графов 01: напоминание определений, теорема Форда—Фалкерсона
Основы теории графов 02: факторизация графов (разложение на простые подграфы)
Графовая модель канала связи. Шенноновская ёмкость
Визуализация графов: left-right алгоритм распознавания планарности
Визуализация графов: укладки деревьев
Визуализация графов: теорема Татта о барицентрической укладке
Визуализация графов: история
Визуализация графов: нижние оценки и NP-трудность
Размерность Вапника—Червоненкиса
Частично-упорядоченные множества, булеан, теоремы о разложении на цепи и анти...
Ad

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

  • 1. Теория кодирования МФТИ, осень 2013 Александр Дайняк www.dainiak.com
  • 2. Коды Рида—Соломона (I.S. Reed, G. Solomon) Пусть 𝑘 ≤ 𝑛 ≤ 𝑞. Пусть 𝑡1, … , 𝑡 𝑛 ∈ 𝔽 𝑞 — фиксированные, попарно различные элементы. Рассмотрим такое множество слов: 𝐶 ≔ 𝑃 𝑡1 , … , 𝑃(𝑡 𝑛) ∣ 𝑃 ∈ 𝔽 𝑞 𝑥 ∧ deg 𝑃 < 𝑘 Непосредственно проверяется, что 𝐶 — линейное пространство: 𝛼 ⋅ 𝑃1 𝑡1 , … , 𝑃1 𝑡 𝑛 + 𝛽 ⋅ 𝑃2 𝑡1 , … , 𝑃2 𝑡 𝑛 = = 𝛼𝑃1 + 𝛽𝑃2 𝑡1 , … , 𝛼𝑃1 + 𝛽𝑃2 𝑡 𝑛
  • 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).
  • 7. Коды Рида—Соломона: декодирование Дано 𝑝1, … , 𝑝 𝑛 ∈ 𝔽 𝑞 𝑛. Найти 𝑃: deg 𝑃 < 𝑘 ∧ # 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖 ≤ 𝑛 − 𝑘 2 Рассмотрим многочлен ошибок 𝐸 𝑥 ≔ 𝑖: 𝑃 𝑡 𝑖 ≠ 𝑝 𝑖 𝑥 − 𝑡𝑖 и вспомогательный многочлен 𝑈 𝑥 ≔ 𝐸 𝑥 ⋅ 𝑃 𝑥 . Заметим, что • deg 𝐸 = 𝑠 и coef 𝑥 𝑠 𝐸 = 1, где 𝑠 ≔ # 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖 • deg 𝑈 ≤ deg 𝐸 + deg 𝑃 ≤ 𝑠 + 𝑘 − 1 • Для любого 𝑖 ∈ 1, … , 𝑛 выполнено равенство 𝑈 𝑡𝑖 = 𝐸 𝑡𝑖 ⋅ 𝑝𝑖
  • 8. Коды Рида—Соломона: декодирование Дано 𝑝1, … , 𝑝 𝑛 ∈ 𝔽 𝑞 𝑛 . Найти 𝑃: deg 𝑃 < 𝑘 ∧ # 𝑖 ∣ 𝑃 𝑡𝑖 ≠ 𝑝𝑖 ≤ 𝑛 − 𝑘 2 Идея: мы не знаем 𝑃, так что попытаемся найти какие-то многочлены 𝐸 и 𝑈, для которых • deg 𝐸 = 𝑠 и coef 𝑥 𝑠 𝐸 = 1, где 𝑠 ≤ 𝑛 − 𝑘 2 • deg 𝑈 ≤ 𝑠 + 𝑘 − 1 • Для любого 𝑖 ∈ 1, … , 𝑛 выполнено равенство 𝑈 𝑡𝑖 = 𝐸 𝑡𝑖 ⋅ 𝑝𝑖 Мы знаем, что 𝐸 и 𝑈 точно найдутся. Вопросы: 1) как это сделать эффективно, и 2) что если найденные 𝐸 и 𝑈 не совпадут с нужными нам 𝐸 и 𝑈?
  • 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 𝑢𝑗 𝑡 𝑛 𝑗
  • 10. Коды Рида—Соломона: декодирование При любом фиксированном 𝑠 ≤ 𝑛 − 𝑘 2 система 𝑝1 𝑡1 𝑠 = − 0≤𝑗≤𝑠−1 𝑝1 𝑡1 𝑗 ⋅ 𝑒𝑗 + 0≤𝑗≤𝑘+𝑠−1 𝑡1 𝑗 ⋅ 𝑢𝑗 ⋮ 𝑝 𝑛 𝑡 𝑛 𝑠 = − 0≤𝑗≤𝑠−1 𝑝 𝑛 𝑡 𝑛 𝑗 ⋅ 𝑒𝑗 + 0≤𝑗≤𝑘+𝑠−1 𝑡 𝑛 𝑗 ⋅ 𝑢𝑗 линейная относительно 𝑒0, … , 𝑒𝑠−1, 𝑢0, … , 𝑢 𝑠+𝑘−1.
  • 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 .
  • 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 𝑡𝑖
  • 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 каждое слагаемое в последней сумме равно нулю. Лемма доказана.
  • 24. Коды Рида—Маллера: мажоритарное декодирование Пусть 𝑃 — произвольный многочлен из кода Рида—Маллера. Зафиксируем произвольные 𝛽1, … , 𝛽 𝑚−𝑟 ∈ 𝔽2, и обозначим 𝑃 𝛽1,…,𝛽 𝑚−𝑟 ≔ 𝑃 𝑥1, … , 𝑥 𝑟, 𝛽1, … , 𝛽 𝑚−𝑟 Имеем 𝑃 𝛽1,…,𝛽 𝑚−𝑟 ∈ 𝔽2 𝑥1, … , 𝑥 𝑟 , поэтому по лемме, доказанной только что, получаем 𝛼1,…,𝛼 𝑟∈𝔽2 𝑃 𝛽1,…,𝛽 𝑚−𝑟 𝛼1, … , 𝛼 𝑟 = coef 𝑥1⋅…⋅𝑥 𝑟 𝑃 𝛽1,…,𝛽 𝑚−𝑟 = coef 𝑥1⋅…⋅𝑥 𝑟 𝑃
  • 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⋅…⋅𝑥 𝑖 𝑟 𝑃.
  • 28. Коды Рида—Маллера: мажоритарное декодирование Пусть уже найдены все coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟 𝑃. Рассмотрим многочлен 𝑃 𝑟−1 ≔ 𝑃 − 𝑖1,…,𝑖 𝑟 coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟 𝑃 ⋅ 𝑥𝑖1 … 𝑥𝑖 𝑟 В 𝑃 𝑟−1 уже все слагаемые степени ≤ 𝑟 − 1. Рассмотрим величины 𝑃 𝑟−1 𝑡1, … , 𝑡 𝑚 , равные 𝑃 𝑡1, … , 𝑡 𝑚 − 𝑖1,…,𝑖 𝑟 coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟 𝑃 ⋅ 𝑡𝑖1 … 𝑡𝑖 𝑟 Ясно, что 𝑃 𝑟−1 𝑡1, … , 𝑡 𝑚 = 𝑃 𝑟−1 𝑡1, … , 𝑡 𝑚 на множестве точек 𝔽2 𝑚 ∖ 𝑇bad.
  • 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.
  • 30. Коды Рида—Маллера: мажоритарное декодирование Общая схема: • Определяем все coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟 𝑃 • Рассматриваем 𝑃 𝑟−1 ≔ 𝑃 − 𝑖1,…,𝑖 𝑟 coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟 𝑃 ⋅ 𝑥𝑖1 … 𝑥𝑖 𝑟 • Определяем все coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟−1 𝑃 • Рассматриваем 𝑃 𝑟−2 ≔ 𝑃 𝑟−1 − 𝑖1,…,𝑖 𝑟−1 coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟−1 𝑃 ⋅ 𝑥𝑖1 … 𝑥𝑖 𝑟−1 • Определяем все coef 𝑥 𝑖1⋅…⋅𝑥 𝑖 𝑟−2 𝑃 • И так далее…
  • 31. Лемма Шварца—Зиппеля Чтобы оценивать 𝑑 𝐶 кодов на основе многочленов многих переменных, подходит Теорема. (R.J. Lipton, R.A. DeMillo, J. Schwartz, R. Zippel) Пусть 𝑃 ∈ 𝔽 𝑥1, … , 𝑥 𝑚 и 𝑃 ≢ 0. Пусть 𝑆 ⊆ 𝔽 — произвольное множество мощности 𝑁. Тогда # 𝑠1, … , 𝑠 𝑚 ∈ 𝑆 𝑚 ∣ 𝑃 𝑠1, … , 𝑠 𝑚 = 0 ≤ 𝑁 𝑚−1 ⋅ deg 𝑃
  • 32. Лемма Шварца—Зиппеля Доказательство: индукция по 𝑚. База: 𝑚 = 1. Это стандартная теорема из алгебры: «число корней многочлена 𝑃 ∈ 𝔽 𝑥1 не превосходит deg 𝑃». Индукт. переход: Распишем 𝑃 по степеням 𝑥 𝑚: 𝑃 𝑥1, … , 𝑥 𝑚 = 𝑘=0 𝑡 𝑥 𝑚 𝑘 ⋅ 𝑃𝑘 𝑥1, … , 𝑥 𝑚−1 где 𝑃1, … , 𝑃𝑡 ∈ 𝔽 𝑥1, … , 𝑥 𝑚−1 .
  • 33. Лемма Шварца—Зиппеля 𝑃 𝑥1, … , 𝑥 𝑚 = 𝑘=0 𝑡 𝑥 𝑚 𝑘 ⋅ 𝑃𝑘 𝑥1, … , 𝑥 𝑚−1 Обозначим 𝑆 ≔ 𝑠1, … , 𝑠 𝑚−1 ∈ 𝑆 𝑚−1 ∣ 𝑃𝑡 𝑠1, … , 𝑠 𝑚−1 = 0 Из неравенства deg 𝑃𝑡 ≤ deg 𝑃 − 𝑡 и из предположения индукции следует: 𝑆 ≤ 𝑁 𝑚−2 ⋅ deg 𝑃𝑡 ≤ 𝑁 𝑚−2 ⋅ deg 𝑃 − 𝑡
  • 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 𝑃
  • 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- код. Т.е. выгадали бы единицу в длине слов или расстоянии, но проиграли бы в мощности алфавита в полтора раза.