Свернутый код Рида – Соломона

редактировать

В теории кодирования сложенные коды Рида – Соломона похожи на Коды Рида – Соломона, которые получаются отображением m {\ displaystyle m}mкодовых слов Рида – Соломона на более крупный алфавит путем тщательного объединения символов кодовых слов.

Свернутые коды Рида – Соломона также являются частным случаем кодов Парвареша – Варди.

Используя оптимальные параметры, можно декодировать со скоростью R и достичь радиуса декодирования of 1 - R.

Термин «свернутые коды Рида – Соломона» был введен в обращение В.Ю. Крачковского с алгоритмом, который представил коды Рида – Соломона со множеством случайных "фазированных пакетов" ошибок [1]. Алгоритм декодирования списка для свернутых кодов RS корректирует за пределами 1 - R {\ displaystyle 1 - {\ sqrt {R}}}1-\sqrt{R} границы для кодов Рида – Соломона, достигнутых Гурусвами - Суданский алгоритм для таких фазированных пакетных ошибок.

Содержание
  • 1 История
  • 2 Определение
    • 2.1 Графическое описание
  • 3 Свернутые коды Рида – Соломона и одноэлементная граница
    • 3.1 Почему складывание может помочь?
  • 4 Как сложено Reed– Коды Соломона (FRS) и коды Парвареша Варди (PV) связаны
  • 5 Краткий обзор свернутых кодов Рида – Соломона со списком декодирования
  • 6 Алгоритм декодирования линейно-алгебраическим списком
    • 6.1 Шаг 1: Шаг интерполяции
    • 6.2 Шаг 2: Шаг поиска корня
    • 6.3 Шаг 3: Шаг сокращения
    • 6.4 Резюме
  • 7 См. Также
  • 8 Ссылки
История

Один из Текущие проблемы в теории кодирования состоят в том, чтобы коды с исправлением ошибок обеспечивали оптимальный компромисс между скоростью (кодирования) и радиусом исправления ошибок. Хотя это может оказаться невозможным практически (из-за проблем теории кодирования каналов с шумом), квазиоптимальные компромиссы могут быть достигнуты теоретически.

До разработки свернутых кодов Рида-Соломона наилучший радиус коррекции ошибок был 1 - R {\ displaystyle 1 - {\ sqrt {R}}}1- \sqrt{R} , на коды Рида – Соломона для всех коэффициентов R {\ displaystyle R}R .

Улучшение этого 1 - R {\ displaystyle 1 - {\ sqrt {R}}} <Граница 204>1- \sqrt{R} была достигнута Парварешем и Варди для коэффициентов R < 1 16. {\displaystyle R<{\tfrac {1}{16}}.}{\displaystyle R<{\tfrac {1}{16}}.}

. Для R → 0 {\ displaystyle R \ to 0}R \ to 0 алгоритм Парвареша – Варди может декодировать дробь 1 - O (R log ⁡ (1 / R)) {\ displaystyle 1-O (R \ log (1 / R))}1- О (R \ log (1 / R)) ошибок.

Сложенные коды Рида – Соломона улучшают эти предыдущие конструкции и могут быть декодированы по списку за полиномиальное время для дроби (1 - R - ε) {\ displaystyle (1-R- \ varepsilon)}{\ displaystyle (1-R- \ varepsilon)} ошибок для любой константы ε>0 {\ displaystyle \ varepsilon>0}{\displaystyle \varepsilon>0} .

Определение
f (X) ↦ [f (1) f (γ) ⋮ f (γ m - 1)], [f (γ m) f (γ m + 1) ⋮ f (γ 2 m - 1)],…, [f (γ n - m) f (γ n - m + 1) ⋮ е (γ N - 1)] {\ Displaystyle F (X) \ mapsto {\ begin {bmatrix} f (1) \\ f (\ gamma) \\\ vdots \\ f (\ gamma ^ {m -1}) \ end {bmatrix}}, {\ begin {bmatrix} f (\ gamma ^ {m}) \\ f (\ gamma ^ {m + 1}) \\\ vdots \\ f (\ gamma ^ {2m-1}) \ end {bmatrix}}, \ ldots, {\ begin {bmatrix} f (\ gamma ^ {nm}) \\ f (\ gamma ^ {n-m + 1}) \\\ vdots \\ f (\ gamma ^ {n-1}) \ end {bmatrix}}}f (X) \ mapsto \ begin {bmatrix} f (1) \\ f (\ gamma) \\\ vdots \\ f (\ gamma ^ {m-1}) \ end {bmatrix}, \ begin {bmatrix} f (\ gamma ^ m) \\ f (\ gamma ^ {m + 1}) \\\ vdots \\ f (\ gamma ^ {2m-1}) \ end {bmatrix}, \ ldots, \ begin {bmatrix} f (\ gamma ^ {nm}) \\ f (\ gamma ^ {n-m + 1}) \\\ vdots \\ f (\ gamma ^ {n-1}) \ end {bmatrix}

Рассмотрим формулу Рида – Соломона [n = q - 1, k] q {\ displaystyle [n = q-1, k] _ {q}}[n = q-1, k] _q код длина n {\ displaystyle n}n и размер k {\ displaystyle k}к и параметр сворачивания m ≥ 1 { \ Displaystyle m \ geq 1}m \ ge 1 . Предположим, что m {\ displaystyle m}mделит n {\ displaystyle n}n .

Отображение для кодов Рида – Соломона следующим образом:

f ↦ ⟨f (1), е (γ 1), е (γ 2),… ​​е (γ N - 1)⟩ {\ Displaystyle f \ mapsto \ left \ langle f (1), f \ left (\ gamma ^ {1} \ right), f \ left (\ gamma ^ {2} \ right), \ ldots, f \ left (\ gamma ^ {n-1} \ right) \ right \ rangle}{\displaystyle f\mapsto \left\langle f(1),f\left(\gamma ^{1}\right),f\left(\gamma ^{2}\right),\ldots,f\left(\gamma ^{n-1}\right)\right\rangle }

где γ ∈ F q { \ displaystyle \ gamma \ in \ mathbb {F} _ {q}}\ gamma \ в \ mathbb {F} _q - примитивный элемент в

F q = {0, 1, γ, γ 2,…, γ N - 1} {\ Displaystyle \ mathbb {F} _ {q} = \ left \ {0,1, \ gamma, \ gamma ^ {2}, \ ldots, \ gamma ^ {n-1} \ right \}}\ mathbb {F} _q = \ left \ {0,1, \ gamma, \ gamma ^ 2, \ ldots, \ gamma ^ {n-1} \ right \} .

m {\ displaystyle m}mсвернутый вариант кода Рида-Соломона C {\ displaystyle C}C, обозначенный FRSF, γ, m, k {\ displaystyle FRS _ {\ mathbb {F}, \ gamma, m, k}}FRS _ {\ mathbb {F}, \ gamma, m, k} - это код длины блока N = n / m {\ displaystyle N = n / m}N = n / m более F m {\ displaystyle \ mathbb {F} ^ {m}}\ mathbb {F} ^ m . FRSF, γ, m, k {\ displaystyle FRS _ {\ mathbb {F}, \ гамма, м, k}}FRS _ {\ mathbb {F}, \ gamma, m, k} ar е просто [q - 1, k] {\ displaystyle [q-1, k]}[q-1,k] коды Рида-Соломона с m {\ displaystyle m}mпоследовательные символы из кодовых слов RS, сгруппированных вместе.

Графическое описание

Сворачивание кода Рида – Соломона с параметром сворачивания m = 3

Приведенное выше определение становится более ясным с помощью диаграммы с m = 3 {\ displaystyle m = 3}m=3, где m {\ displaystyle m}m- параметр сворачивания.

Сообщение обозначается тегом f (X) {\ displaystyle f (X)}f (X) , который при кодировании с использованием кодировки Рида – Соломона состоит из значений f. {\ displaystyle f}f at x 0, x 1, x 2,…, xn - 1 {\ displaystyle x_ {0}, x_ {1}, x_ {2}, \ ldots, x_ {n-1}}x_0, x_1, x_2, \ ldots, x_ {n-1} , где xi = γ i {\ displaystyle x_ {i} = \ gamma ^ {i}}x_i = \ gamma ^ я .

Затем объединение выполняется группами по 3 элемента, чтобы задать кодовое слово длиной n / 3 {\ displaystyle n / 3}n/3над алфавитом F q 3 {\ displaystyle \ mathbb {F} _ {q} ^ {3} }\ mathbb {F } _q ^ 3 .

Здесь следует отметить то, что продемонстрированная операция сворачивания не изменяет скорость R {\ displaystyle R}R исходного кода Рида – Соломона.

Чтобы доказать это, рассмотрим линейный код [n, k, d] q {\ displaystyle [n, k, d] _ {q}}[n, k, d]_qдлиной n {\ displaystyle n}n , dimension k {\ displaystyle k}к и distance d {\ displaystyle d}d . Операция сворачивания m {\ displaystyle m}mсделает его [нм, км, дм] qm {\ displaystyle \ left [{\ tfrac {n} {m}}, {\ tfrac {k} {m}}, {\ tfrac {d} {m}} \ right] _ {q ^ {m}}}{\ displaystyle \ left [{\ tfrac {n} {m}}, {\ tfrac {k} {m}}, {\ tfrac { d} {m}} \ right] _ {q ^ {m}}} код. Таким образом, rate R = n k {\ displaystyle R = {\ tfrac {n} {k}}}{\ displaystyle R = {\ tfrac { n} {k}}} будет таким же.

Свернутые коды Рида – Соломона и одноэлементная граница

Согласно асимптотической версии одноэлементной границы известно, что относительное расстояние δ {\ displaystyle \ delta}\delta , код должен удовлетворять R ⩽ 1 - δ + o (1) {\ displaystyle R \ leqslant 1- \ delta + o (1) }{\ displaystyle R \ leqslant 1- \ delta + o (1)} , где R {\ displaystyle R}R - скорость кода. Как было доказано ранее, поскольку скорость R {\ displaystyle R}R сохраняется, относительное расстояние δ ⩾ 1 - R {\ displaystyle \ delta \ geqslant 1-R}{\ displaystyle \ delta \ geqslant 1-R} также соответствует границе Синглтона.

Почему складывание может помочь?

Декодирование свернутого кода Рида-Соломона

Свернутые коды Рида-Соломона в основном такие же, как коды Рида-Соломона, только просматриваемые через больший алфавит. Чтобы показать, как это может помочь, рассмотрим свернутый код Рида – Соломона с m = 3 {\ displaystyle m = 3}m = 3 . Расшифровка кода Рида – Соломона и свернутого кода Рида – Соломона с одинаковой долей ошибок ρ {\ displaystyle \ rho}\ rho - задачи почти одинаковой вычислительной интенсивности: можно развернуть полученное слово свернутого кода Рида-Соломона, рассматривать его как полученное слово исходного кода Рида-Соломона и запускать алгоритм декодирования списка Рида-Соломона на нем. Очевидно, этот список будет содержать все свернутые кодовые слова Рида – Соломона на расстоянии ρ {\ displaystyle \ rho}\ rho от полученного слова, а также некоторые дополнения, которые мы можем удалить.

Кроме того, декодирование свернутого кода Рида – Соломона - более простая задача. Допустим, мы хотим исправить треть ошибок. Выбранный алгоритм декодирования должен исправить шаблон ошибок, который исправляет каждый третий символ в кодировании Рида-Соломона. Но после сворачивания этот шаблон ошибки приведет к повреждению всех символов над F q 3 {\ displaystyle \ mathbb {F} _ {q} ^ {3}}{\ displaystyle \ mathbb {F} _ {q} ^ {3}} и устранит необходимость исправления ошибок. Это распространение ошибок обозначено синим цветом в графическом описании. Это доказывает, что для фиксированной доли ошибок ρ, {\ displaystyle \ rho,}{\ displaystyle \ rho,} операция сворачивания снижает гибкость канала для распределения ошибок, что, в свою очередь, приводит к уменьшению количества шаблоны ошибок, которые необходимо исправить.

Как связаны свернутые коды Рида – Соломона (FRS) и коды Парвареша Варди (PV)

Мы можем связать свернутые коды Рида-Соломона с кодами Парвареша Варди, которые кодируют многочлен f {\ displaystyle f}f степени k {\ displaystyle k}к с многочленами f 0 = f, f 1,…, fs - 1 (s ⩾ 2) {\ displaystyle f_ {0} = f, f_ {1}, \ ldots, f_ {s-1} (s \ geqslant 2)}{\displaystyle f_{0}=f,f_{1},\ldots,f_{s-1}(s\geqslant 2)}где fi (X) = fi - 1 (X) d mod E (X) {\ displaystyle f_ {i} (X) = f_ {i-1} (X) ^ {d} \ mod E (X)}f_i (X) = f_ {i-1} (X) ^ d \ mod E (X) где E (X) {\ displaystyle E (X)}E(X)- это неприводимый многочлен. При выборе неприводимого многочлена E (X) = X q - γ {\ displaystyle E (X) = X ^ {q} - \ gamma}E (X) = X ^ q - \ gamma и параметра d {\ displaystyle d}d мы должны проверить, каждый ли многочлен f {\ displaystyle f}f степени не выше k {\ displaystyle k}к удовлетворяет е (γ Икс) знак равно е (Икс) d mod E (X) {\ Displaystyle f (\ gamma X) = f (X) ^ {d} \ mod E (X)}f(\gamma X)=f(X)^d \mod E(X)с f (γ X) {\ displaystyle f (\ gamma X)}f (\ gamma X) - это просто сдвинутый аналог f (X) {\ displaystyle f (X)}f(X)где γ {\ displaystyle \ gamma}\ gamma - примитивный элемент в F q. {\ displaystyle \ mathbb {F} _ {q}.}{\ displaystyle \ mathbb {F} _ {q}.} Сложенный таким образом код RS с объединением вместе кодовых символов является кодом PV порядка s = m {\ displaystyle s = m}s=mдля набора точек оценки

{1, γ, γ 2 m,…, γ (nm - 1) m} {\ displaystyle \ left \ {1, \ gamma, \ gamma ^ {2m}, \ ldots, \ gamma ^ {\ left ({\ frac {n} {m}} - 1 \ right) m} \ right \}}{\ displaystyle \ left \ {1, \ gamma, \ gamma ^ {2m}, \ ldots, \ gamma ^ {\ left ({\ frac {n } {m}} - 1 \ right) m} \ right \}} .

Если сравнить свернутый код RS с PV-кодом порядка 2 для множество точек оценки

{1, γ,…, γ m - 2, γ m, γ m + 1,…, γ 2 m - 2,…, γ n - m, γ n - m + 1, …, Γ N - 2} {\ Displaystyle \ left \ {1, \ gamma, \ ldots, \ gamma ^ {m-2}, \ gamma ^ {m}, \ gamma ^ {m + 1}, \ ldots, \ gamma ^ {2m-2}, \ ldots, \ gamma ^ {nm}, \ gamma ^ {n-m + 1}, \ ldots, \ gamma ^ {n-2} \ right \}}{\ displaystyle \ left \ {1, \ gamma, \ ldots, \ gamma ^ {m-2}, \ gamma ^ {m}, \ gamma ^ {m + 1}, \ ldots, \ gamma ^ {2m-2}, \ ldots, \ gamma ^ {nm}, \ gamma ^ {n-m + 1}, \ ldots, \ gamma ^ {n-2} \ right \}}

мы можно увидеть, что в кодировке PV f {\ displaystyle f}f для каждого 0 ≤ i ≤ n / m - 1 {\ displaystyle 0 \ leq i \ leq n / m- 1}0 \leq i \leq n/m-1и каждый 0 < j < m − 1, f ( γ m i + j) {\displaystyle 00<j<m-1, f(\gamma^{mi+j})появляется в f (γ mi + j) {\ displaystyle f (\ gamma ^ {mi + j})}{\displaystyle f(\gamma ^{mi+j})}и f 1 (γ - 1 γ mi + j) {\ displayst yle f_ {1} (\ gamma ^ {- 1} \ gamma ^ {mi + j})}f_1(\gamma^{-1}\gamma^{mi+j}),

Связь между кодами PV и кодами FRS

в отличие от свернутой кодировки FRS, в которой она встречается только один раз. Таким образом, коды PV и свернутые коды RS имеют одинаковую информацию, но только скорость FRS больше в 2 (м - 1) / м {\ displaystyle 2 (m-1) / m}2(m-1)/m, и, следовательно, компромисс радиуса декодирования списка лучше для свернутого кода RS, просто используя возможность декодирования списка кодов PV. Плюс заключается в выборе кода FRS таким образом, чтобы они представляли собой сжатые формы подходящего PV-кода с аналогичной эффективностью исправления ошибок с лучшей скоростью, чем соответствующий PV-код. Эту идею можно использовать для построения свернутых кодов RS со скоростью R {\ displaystyle R}R , которые декодируются списком до радиуса приблизительно 1 - R s / [s + 1] { \ displaystyle 1-R ^ {s / [s + 1]}}1-R^{s/[s+1]}для s ≥ 1 {\ displaystyle s \ geq 1}s \ geq 1 . [2]

Краткий обзор списка -декодирование свернутых кодов Рида – Соломона

A список декодирования алгоритм, который выполняется за квадратичное время для декодирования кода FRS до радиуса 1 - R - ε {\ displaystyle 1-R- \ varepsilon}1-R-\varepsilonпредставлен Гурусвами. По сути, алгоритм состоит из трех этапов, а именно этапа интерполяции, на котором используется интерполяция в стиле Уэлча-Берлекампа для интерполяции ненулевого многочлена

Q (X, Y 1, Y 2,…, Y s) = A 0 (X) + A 1 (X) Y 1 + A 2 (X) Y 2 + ⋯ + A s (X) Y s, {\ displaystyle Q (X, Y_ {1}, Y_ {2}, \ ldots, Y_ {s})) = A_ {0} (X) + A_ {1} (X) Y_ {1} + A_ {2} (X) Y_ {2} + \ cdots + A_ {s} (X) Y_ {s},}{\displaystyle Q(X,Y_{1},Y_{2},\ldots,Y_{s})=A_{0}(X)+A_{1}(X)Y_{1}+A_{2}(X)Y_{2}+\cdots +A_{s}(X)Y_{s},}

, после чего все многочлены f ∈ F q [X] {\ displaystyle f \ in \ mathbb {F} _ {q} [X]}{\ displaystyle f \ in \ mathbb {F} _ {q} [X]} со степенью k - Найдено 1 {\ displaystyle k-1}k-1, удовлетворяющее уравнению, полученному при интерполяции. На третьем этапе фактический список ближайших кодовых слов известен путем сокращения подпространства решения, которое занимает q s {\ displaystyle q ^ {s}}q^sвремени.

Линейно-алгебраический алгоритм декодирования списка

Гурусвами представляет n Ω (1 / ε 2) {\ displaystyle n ^ {\ Omega (1 / \ varepsilon ^ {2}) }}n ^ {\ Omega (1 / \ varepsilon ^ 2)} алгоритм декодирования временного списка на основе линейной алгебры, который может декодировать свернутый код Рида – Соломона до радиуса 1 - R - ε {\ displaystyle 1-R- \ varepsilon}1-R-\varepsilonс размером списка n O (1 / ε 2) {\ displaystyle {n ^ {O (1 / \ varepsilon ^ {2})}}}{n ^ {O (1 / \ varepsilon ^ 2)}} . В этом алгоритме есть три шага: шаг интерполяции, шаг поиска корня и шаг сокращения. На этапе интерполяции он попытается найти кандидатный многочлен сообщения f (x) {\ displaystyle f (x)}f(x)путем решения линейной системы. На этапе поиска корня он попытается найти подпространство решения, решая другую линейную систему. Последний шаг попытается сократить подпространство решения, полученное на втором шаге. Ниже мы подробно расскажем о каждом шаге.

Шаг 1: Шаг интерполяции

Это интерполяция в стиле Велча – Берлекампа (поскольку ее можно рассматривать как многомерное обобщение метода Велча – Берлекампа алгоритм). Предположим, мы получили кодовое слово y {\ displaystyle y}yиз m {\ displaystyle m}m-складчатого кода Рида – Соломона, как показано ниже

( [y 0 y 1 y 2 ⋯ ym - 1], [ymym + 1 ym + 2 ⋯ y 2 m - 1],…, [yn - myn - m + 1 yn - m + 2 ⋯ yn - 1]) { \ displaystyle \ left ({\ begin {bmatrix} y_ {0} \\ y_ {1} \\ y_ {2} \\\ cdots \\ y_ {m-1} \ end {bmatrix}}, {\ begin { bmatrix} y_ {m} \\ y_ {m + 1} \\ y_ {m + 2} \\\ cdots \\ y_ {2m-1} \ end {bmatrix}}, \ ldots, {\ begin {bmatrix} y_ {nm} \\ y_ {n-m + 1} \\ y_ {n-m + 2} \\\ cdots \\ y_ {n-1} \ end {bmatrix}} \ right)}{\displaystyle \left({\begin{bmatrix}y_{0}\\y_{1}\\y_{2}\\\cdots \\y_{m-1}\end{bmatrix}},{\begin{bmatrix}y_{m}\\y_{m+1}\\y_{m+2}\\\cdots \\y_{2m-1}\end{bmatrix}},\ldots,{\begin{bmatrix}y_{n-m}\\y_{n-m+1}\\y_{n-m+2}\\\cdots \\y_{n-1}\end{bmatrix}}\right)}

Мы интерполировать ненулевой многочлен

Q (X, Y 1,…, Y s) = A 0 (X) + A 1 (X) Y 1 + ⋯ + A s (X) Y s, {deg ⁡ (A i) ⩽ D 1 ⩽ я ⩽ s град ⁡ (A 0) ⩽ D + k - 1 {\ displaystyle Q (X, Y_ {1}, \ ldots, Y_ {s}) = A_ {0} (X) + A_ {1} (X) Y_ {1} + \ cdots + A_ {s} (X) Y_ {s}, \ qquad {\ begin {cases} \ deg (A_ {i}) \ leqslant D 1 \ leqslant i \ leqslant s \\\ deg (A_ {0}) \ leqslant D + k-1 \ end {cases}}}{\ displaystyle Q (X, Y_ {1}, \ ldots, Y_ {s}) = A_ {0} (X) + A_ {1} (X) Y_ {1} + \ cdots + A_ {s} (X) Y_ {s}, \ qquad {\ begin {cases} \ deg (A_ {i}) \ leqslant D 1 \ leqslant i \ leqslant s \\\ deg (A_ {0}) \ leqslant D + k-1 \ end {cases}}}

с помощью тщательно подобранного параметра степени D {\ displaystyle D}D .

D = ⌊ N (м - с + 1) - к + 1 s + 1 ⌋ {\ displaystyle D = \ left \ lfloor {\ frac {N (m-s + 1) -k + 1} {s + 1}} \ right \ rfloor}{\ displaystyle D = \ left \ lfloor {\ frac {N (m-s + 1) -k + 1} {s + 1}} \ right \ rfloor}

Таким образом, требования к интерполяции будут такими:

Q (γ im + j, yim + j, yim + j + 1,…, yim + j + s - 1) = 0, для i = 0, 1,…, nm - 1, j = 0, 1,…, м - с. {\ displaystyle Q \ left (\ gamma ^ {im + j}, y_ {im + j}, y_ {im + j + 1}, \ ldots, y_ {im + j + s-1} \ right) = 0, \ quad {\ text {for}} \ quad i = 0,1, \ ldots, {\ tfrac {n} {m}} - 1, j = 0,1, \ ldots, ms.}{\displaystyle Q\left(\gamma ^{im+j},y_{im+j},y_{im+j+1},\ldots,y_{im+j+s-1}\right)=0,\quad {\text{for}}\quad i=0,1,\ldots,{\tfrac {n}{m} }-1,j=0,1,\ldots,m-s.}

Тогда количество одночленов в Q (X, Y 1,…, Y s) {\ displaystyle Q (X, Y_ {1}, \ ldots, Y_ {s})}{\displaystyle Q(X,Y_{1},\ldots,Y_{s})}равно

(D + 1) s + D + К знак равно (D + 1) (s + 1) + к - 1>N (м - s + 1) {\ displaystyle (D + 1) s + D + k = ( D + 1) (s + 1) + k-1>N (m-s + 1)}(D + 1)s + D + k = (D+1)(s+1) + k -1>N (m - s + 1)

Поскольку количество мономов в Q (X, Y 1,…, Y s) {\ displaystyle Q (X, Y_ {1}, \ ldots, Y_ {s})}{\displaystyle Q(X,Y_{1},\ldots,Y_{s})}больше, чем количество условий интерполяции. Ниже мы имеем лемму

Лемма 1. 0 ≠ Q ∈ F q [X, Y 1,…, Y s] {\ displaystyle 0 \ neq Q \ in \ mathbb {F} _ {q} [X, Y_ {1}, \ ldots, Y_ {s}]}{\displaystyle 0\neq Q\in \mathb b {F} _{q}[X,Y_{1},\ldots,Y_{s}]}, удовлетворяющее вышеуказанному условию интерполяции, может быть найдено путем решения однородной линейной системы более F q {\ displaystyle \ mathbb {F} _ {q}}\ mathbb {F} _ {q} с не более чем N m {\ displaystyle Nm}Nmограничениями и переменными. Более того, эту интерполяцию можно выполнить в O (N m log 2 ⁡ (N m) log ⁡ log ⁡ (N m)) {\ displaystyle O (Nm \ log ^ {2} (Nm) \ log \ log ( Нм))}{\ displaystyle O (Nm \ log ^ {2} (Nm) \ log \ log (Нм))} операции над F q {\ displaystyle \ mathbb {F} _ {q}}\ mathbb {F} _ {q} .

Эта лемма показывает нам, что шаг интерполяции может быть выполнен за почти линейное время.

Сейчас мы обсудили все, что нам нужно для многомерного многочлена Q (X, Y 1,…, Y s) {\ displaystyle Q (X, Y_ {1}, \ ldots, Y_ {s})}{\displaystyle Q(X,Y_{1},\ldots,Y_{s})}. Оставшаяся задача - сосредоточиться на многочленах сообщений f (X) {\ displaystyle f (X)}f(X).

Лемма 2. Если кандидат многочленов сообщений f (X) ∈ F [X ] {\ displaystyle f (X) \ in \ mathbb {F} [X]}f (X) \ in \ mathbb {F} [X] - многочлен степени не выше k - 1 {\ displaystyle k-1}k-1, чья свернутая кодировка Рида-Соломона согласуется с полученным словом y {\ displaystyle y}yкак минимум в t {\ displaystyle t}tстолбцах с
t>D + k - 1 m - s + 1, {\ displaystyle t>{{D + k-1} \ over {m-s + 1}},}{\displaystyle t>{{D + k- 1} \ over {m-s + 1}},}
затем Q (X, f (X), f (γ X),…, f (γ s - 1 X)) = 0. {\ displaystyle Q (X, f ( X), е (\ gamma X), \ ldots, f (\ gamma _ {s-1} X)) = 0.}{\ displaystyle Q (X, f ( X), f (\ gamma X), \ ldots, f (\ gamma _ {s-1} X)) = 0.}

Здесь «согласен» означает, что все m {\ displaystyle m}mзначения в столбце должны соответствовать соответствующим значениям в кодовом слове y {\ displa ystyle y}y.

Эта лемма показывает нам, что любой такой многочлен Q (X, Y 1,…, Y s) {\ displaystyle Q (X, Y_ {1}, \ ldots, Y_ {s})}{\displaystyle Q(X,Y_{1},\ldots,Y_{s})}представляет алгебраическое условие, которое должно быть выполнено для тех многочленов сообщений f (x) {\ displaystyle f (x)}f(x), которые нас интересуют в декодировании списка.

Комбинируя лемму 2 и параметр D {\ displaystyle D}D , получаем

t (m - s + 1)>N (m - s + 1) + s (к - 1) s + 1 {\ displaystyle t (m-s + 1)>{\ frac {N (m-s + 1) + s (k-1)} {s + 1}}}{\displaystyle t(m-s+1)>{\ frac {N (m-s + 1) + s (k-1)} {s + 1}}}

Далее мы можем получить границу декодирования

t ⩾ N s + 1 + ss + 1 ⋅ km - s + 1 знак равно N (1 s + 1 + ss + 1 ⋅ м р м - s + 1) {\ displaystyle t \ geqslant {\ frac {N} {s + 1}} + {\ frac {s} {s + 1 }} \ cdot {\ frac {k} {m-s + 1}} = N \ left ({\ frac {1} {s + 1}} + {\ frac {s} {s + 1}} \ cdot {\ frac {mR} {m-s + 1}} \ right)}{\displaystyle t\geqslant {\frac {N}{s+1}}+{\frac {s}{s+1}}\cdot {\frac {k}{m-s+1}}=N\left({\frac {1}{s+1}}+{\frac {s}{s+1}}\cdot {\frac {mR}{m-s+1}}\right)}

Мы замечаем, что дробное согласие составляет

1 s + 1 + ss + 1 ⋅ m R m - s + 1 {\ displaystyle {\ dfrac {1} {s + 1}} + {\ dfrac {s} {s + 1}} \ cdot {\ dfrac {mR} {m-s + 1}}}\ dfrac {1} {s + 1} + \ dfrac { s} {s + 1} \ cdot \ dfrac {mR} {m-s + 1}

Шаг 2. Корень -этап поиска

На этом этапе наша задача сосредоточена на том, как найти все многочлены f ∈ F q [X] {\ displaystyle f \ in {\ mathbb {F} _ {q } [X]}}f\in{\mathbb{F}_q[X]} со степенью не выше k - 1 {\ displaystyle k-1}k-1и удовлетворяет уравнению, полученному на шаге 1, а именно

A 0 (Икс) + A 1 (X) е (Икс) + A 2 (X) f (γ X) + ⋯ + A s (X) f (γ s - 1 X) = 0 {\ displaystyle A_ {0 } (X) + A_ {1} (X) f (X) + A_ {2} (X) f (\ gamma X) + \ cdots + A_ {s} (X) f (\ gamma ^ {s-1 } X) = 0}A_0(X) + A_1(X)f(X) + A_2(X)f(\gamma X) + \cdots + A_s(X)f(\gamma^{s-1}X)=0

Поскольку приведенное выше уравнение образует линейную систему уравнений над F q {\ displaystyle \ mathbb {F} _ {q}}\ mathbb {F} _ {q} в коэффициентах f 0, f 1,…, fk - 1 {\ displaystyle f_ {0}, f_ {1}, \ ldots, f_ {k-1}}{\displaystyle f_{0},f_{1},\ldots,f_{k-1}}полинома

f (X) = е 0 + е 1 Икс + ⋯ + fk - 1 Икс К - 1, {\ displaystyle f (X) = f_ {0} + f_ {1} X + \ cdots + f_ {k-1} X ^ {k-1 },}{\ displaystyle f (X) = f_ {0} + f_ {1} X + \ cdots + f_ {k-1} X ^ {k-1},}

решением вышеуказанного уравнения является аффинное подпространство в F qk {\ displaystyle \ mathbb {F} _ {q} ^ {k}}\ mathbb {F} ^ k_q . Этот факт является ключевым моментом, который дает начало эффективному алгоритму - мы можем решить линейную систему.

Естественно спросить, насколько велика размерность решения? Есть ли верхняя граница размера? Наличие верхней границы очень важно при построении эффективного алгоритма декодирования списка, потому что можно просто вывести все кодовые слова для любой заданной проблемы декодирования.

На самом деле он действительно имеет верхнюю границу, как утверждает лемма ниже.

Лемма 3. Если порядок γ {\ displaystyle \ gamma}\ gamma не менее k {\ displaystyle k}к (в частности когда γ {\ displaystyle \ gamma}\ gamma является примитивным), тогда размерность решения не превышает s - 1 {\ displaystyle s-1}s-1 .

Эта лемма показывает нам верхняя граница размерности пространства решений.

Наконец, на основе приведенного выше анализа мы имеем следующую теорему

Теорема 1. Для свернутого кода Рида – Соломона FRS q (m) [n, k] {\ displaystyle FRS_ {q} ^ {(m)} [n, k]}FRS ^ {(m)} _ q [n, k] длины блока N = нм {\ displaystyle N = {\ tfrac {n} {m}}}{\displaystyle N={\tfrac {n}{m}}}и ставка R = kn, {\ displaystyle R = {\ tfrac {k} {n}},}{\ displaystyle R = {\ tfrac {k} {n}},} для всех целых чисел s, 1 ⩽ s ⩽ м {\ Displaystyle s, 1 \ leqslant s \ leqslant m}{\displaystyle s,1\leqslant s\leqslant m}. Для полученного слова y ∈ (F qm) N {\ displaystyle y \ in (\ mathbb {F} _ {q} ^ {m}) ^ {N}}y \ in (\ mathbb {F} _q ^ m) ^ N , in O ((N m log ⁡ q) 2) {\ displaystyle O ((Nm \ log q) ^ {2})}{\ displaystyle O ((Nm \ log q) ^ {2})} время, можно найти основу для подпространства размерности не более s - 1 {\ displaystyle s-1}s-1 , который содержит все многочлены сообщений f ∈ F q [X] {\ displaystyle f \ in \ mathbb {F} _ {q} [X ]}f \in \mathbb{F}_q[X]степени меньше k {\ displaystyle k}к , чья кодировка FRS отличается от y {\ displaystyle y}yне более чем на дробь
ss + 1 (1 - m R m - s + 1) {\ displaystyle {\ frac {s} {s + 1}} \ left (1 - {\ frac {mR} {m-s + 1}} \ right)}\ frac {s} {s + 1} \ left (1- \ frac {mR} {m-s + 1} \ right)
из N {\ displaystyle N}N позиций кодового слова.

Когда s = m = 1 {\ displaystyle s = m = 1 }s = m = 1 , мы замечаем, что это сводится к уникальному алгоритму декодирования с точностью до дроби (1 - R) / 2 {\ displaystyle (1-R) ​​/ 2}(1-R)/2ошибок. Другими словами, мы можем рассматривать уникальный алгоритм декодирования как особенность алгоритма декодирования списка. Количество составляет примерно n O (1 / ε) {\ displaystyle n ^ {O (1 / \ varepsilon)}}п ^ {О (1 / \ varepsilon)} для вариантов выбора параметров, которые достигают радиуса декодирования списка 1. - R - ε {\ displaystyle 1-R- \ varepsilon}1-R-\varepsilon.

Теорема 1 точно говорит нам, насколько велик будет радиус ошибки.

Теперь мы наконец получили подпространство решения. Однако остается еще одна проблема. Размер списка в худшем случае равен n Ω (1 / ε) {\ displaystyle n ^ {\ Omega (1 / \ varepsilon)}}n^{\Omega(1/\varepsilon)}. Но фактический список ближайших кодовых слов - это лишь небольшой набор в этом подпространстве. Итак, нам нужен какой-то процесс, чтобы обрезать подпространство, чтобы сузить его. Этот процесс сокращения занимает q s {\ displaystyle q ^ {s}}q^sвремени в худшем случае. К сожалению, не известно, как улучшить время выполнения, потому что мы не знаем, как улучшить границу размера списка для свернутого кода Рида-Соломона.

Все станет лучше, если мы изменим код, тщательно выбрав подмножество всех возможных степеней k - 1 {\ displaystyle k-1}k -1 многочленов в виде сообщений, размер списка показывает быть намного меньше, только немного теряя в скорости. Мы кратко поговорим об этом на следующем шаге.

Шаг 3: Шаг сокращения

Путем преобразования задачи декодирования свернутого кода Рида-Соломона в две линейные системы, одну линейную систему, которая используется для шага интерполяции, и другую линейную систему, чтобы найти подходящее подпространство решения, сложность задачи декодирования успешно снижается до квадратичной. Однако в худшем случае граница размера списка вывода очень плохая.

На шаге 2 было упомянуто, что если тщательно выбрать в качестве сообщений только подмножество всех возможных степеней k - 1 {\ displaystyle k-1}k -1 полиномов, размер списка можно значительно уменьшить. Здесь мы расширим наше обсуждение.

Для достижения этой цели идея состоит в том, чтобы ограничить вектор коэффициентов (f 0, f 1,…, fk - 1) {\ displaystyle (f_ {0}, f_ {1}, \ ldots, f_ {k-1})}(f_0, f_1, \ ldots, f_ {k-1}) в специальное подмножество ν ⊆ F qk {\ displaystyle \ nu \ substeq \ mathbb {F} _ {q} ^ {k}}\ nu \subseteq \mathbb{F}_q^k, который удовлетворяет следующим двум условиям:

Условие 1. Набор ν {\ displaystyle \ nu}\ nu должен быть достаточно большим (| ν | ≥ q (1 - ε) k {\ displaystyle | \ nu | \ geq q ^ {(1- \ varepsilon) k}}| \ nu | \ geq q ^ {(1- \ varepsilon) k} ).

Это необходимо для того, чтобы убедиться, что скорость будет уменьшена не более чем в раз (1 - ε) {\ displaystyle (1- \ varepsilon)}(1- \ varepsilon) .

Условие 2. Набор ν {\ displaystyle \ nu}\ nu должен иметь низкое пересечение с любым подпространством S {\ displaystyle S}Sразмерности s {\ displaystyle s}sудовлетворяет S ⊂ F qk {\ displaystyle S \ subset \ mathbb {F} _ {q} ^ {k}}{\displaystyle S\subset \mathbb {F} _{q} ^{k}}и | S ∩ ν | ⩽ L. {\ displaystyle | S \ cap \ nu | \ leqslant L.}{\displaystyle |S\cap \nu |\leqslant L.}Такой подмножество называется подмножеством, уклоняющимся от подпространства.

Граница размера списка в худшем случае равна n Ω (1 / ε) {\ displaystyle n ^ {\ Omega (1 / \ varepsilon)}}n^{\Omega(1/\varepsilon)}, и ее можно уменьшить к относительной малой границе O (1 / ε 2) {\ displaystyle O (1 / \ varepsilon ^ {2})}O(1/\varepsilon^2)с помощью подмножеств с уклонением от подпространства.

На этом этапе, поскольку он должен проверить каждый элемент подпространства решения, которое мы получаем на этапе 2, требуется qs {\ displaystyle q ^ {s}}q^sвремени в худшем случае (s {\ displaystyle s}s- размер подпространства решения).

Двир и Ловетт улучшили результат на основе работы Гурусвами, который может уменьшить размер списка до постоянного.

Здесь представлена ​​только идея, которая используется для сокращения подпространства решения. Для получения подробной информации о процессе обрезки, пожалуйста, обратитесь к статьям Гурусвами, Двира и Ловетта, которые перечислены в ссылке.

Резюме

Если мы не рассматриваем шаг 3, этот алгоритм может работать в квадратичном времени. Краткое описание этого алгоритма приведено ниже.

Обзор алгоритма декодирования линейно-алгебраического списка для кода FRS
Шаги
  1. Интерполяция
  2. Поиск корня
  3. Prune
Время выполненияn Ω (1 / ε 2) {\ displaystyle n ^ {\ Omega (1 / \ varepsilon ^ {2})}}n^{\Omega(1/\varepsilon^2)}
Радиус ошибки1 - R - ε {\ displaystyle 1-R- \ varepsilon}{\displaystyle 1-R-\varepsilon }
Размер спискаn O (1 / ε 2) {\ displaystyle n ^ {O (1 / \ varepsilon ^ {2})}}n ^ {O (1 / \ varepsilon ^ 2)}
См. Также
Ссылки
  1. Лекционные заметки Атри Рудры : Свернутые коды Рида – Соломона
  2. Лекционные заметки Атри Рудры: Границы
  3. Статья автор Атри Рудра и Венкатесан Гурусвами : Декодирование свернутых кодов Рида – Соломона
  4. Глава о декодировании списком свернутых кодов Рида – Соломона: Списочное декодирование сложенных кодов Коды Рида – Соломона
  5. Заметки к лекциям Венкатесана Гурусвами: Элементарные ограничения кодов
  6. Заметки к лекциям Венкатесана Гурусвами: Список декодирования сложенных кодов Рида-Соломона
  7. Гурусвами, Венкатеса п (2011). "Линейно-алгебраическое списочное декодирование свернутых кодов Рида – Соломона". 26-я ежегодная конференция IEEE 2011 г. по вычислительной сложности: 77–85. arXiv : 1106.0436. Bibcode : 2011arXiv1106.0436G. DOI : 10.1109 / CCC.2011.22. ISBN 978-1-4577-0179-5.
  8. Двирл, Зеев; Ловетт, Шахар (2011). «Подпространственные уклоняющиеся множества». arXiv : 1110.5696 [cs.CC ].
  9. Докторская диссертация Кристиана Брандера : Интерполяция и декодирование списком алгебраических кодов
  10. Крачковский, В. Я. (2003). «Коды Рида – Соломона для исправления фазированных пакетов ошибок». IEEE Trans. Инф. Теория. 49 (11): 2975–2984. doi :10.1109/TIT.2003.819333.
Последняя правка сделана 2021-05-20 09:59:20
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте