Коды на основе многочленов и алгоритмы их...
DESCRIPTION
Коды Рида—Соломона. Алгоритм декодирования Берлекэмпа—Велча. Коды Рида—Маллера: кодовое расстояние, алгоритм мажоритарного декодирования. Варианты обобщений конструкции Рида—Маллера. Лемма Липтона—ДеМилло—Шварца—Зиппеля. Понятие об алгеброгеометрических кодах.TRANSCRIPT
Теория кодированияМФТИ, осень 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-код.
Т.е. выгадали бы единицу в длине слов или расстоянии, но проиграли бы в мощности алфавита в полтора раза.