Код BCH

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

В теории кодирования используются коды BCH или Bose – Chaudhuri– Коды Хоквенгема образуют класс циклических кодов с исправлением ошибок, которые построены с использованием полиномов над конечным полем (также называемым Поле Галуа ). Коды BCH были изобретены в 1959 году французским математиком Алексисом Хоквенгемом и независимо в 1960 году Раджем Бозом и Д. К. Рэй-Чаудхури. Название Bose – Chaudhuri – Hocquenghem (и аббревиатура BCH) происходит от инициалов фамилий изобретателей (ошибочно в случае Ray-Chaudhuri).

Одной из ключевых особенностей кодов BCH является то, что во время разработки кода существует точный контроль над количеством ошибок символов, исправляемых кодом. В частности, можно разработать двоичные коды BCH, которые могут исправлять несколько битовых ошибок. Другим преимуществом кодов BCH является легкость, с которой они могут быть декодированы, а именно с помощью алгебраического метода, известного как синдромное декодирование. Это упрощает конструкцию декодера для этих кодов с использованием небольшого маломощного электронного оборудования.

коды BCH используются в таких приложениях, как спутниковая связь, проигрыватели компакт-дисков, DVD, дисководы, твердотельные приводы, квантово-стойкая криптография и двумерные штрих-коды.

Содержание
  • 1 Определение и иллюстрация
    • 1.1 Примитивные узкосмысловые коды BCH
      • 1.1. 1 Пример
    • 1.2 Общие коды BCH
    • 1.3 Особые случаи
  • 2 Свойства
  • 3 Кодирование
    • 3.1 Несистематическое кодирование: сообщение как фактор
    • 3.2 Систематическое кодирование: сообщение как префикс
  • 4 Декодирование
    • 4.1 Вычисление синдромов
    • 4.2 Вычисление полинома местоположения ошибки
      • 4.2.1 Алгоритм Петерсона – Горенштейна – Цирлера
    • 4.3 Фактор полинома локатора ошибок
    • 4.4 Вычисление значений ошибок
      • 4.4.1 Алгоритм Форни
      • 4.4.2 Объяснение вычисления алгоритма Форни
    • 4.5 Декодирование на основе расширенного алгоритма Евклида
      • 4.5.1 Объяснение процесса декодирования
    • 4.6 Исправление ошибок
    • 4.7 Примеры расшифровки
      • 4.7.1 Декодирование двоичного кода без нечитаемых символов
      • 4.7.2 Декодирование с нечитаемыми символами
      • 4.7.3 Декодирование с нечитаемыми символами с небольшим количеством ошибок
  • 5 Цитаты
  • 6 Ссылки
    • 6.1 Первичные источники
    • 6.2 Вторичные источники
  • 7 Дополнительная литература
Определение и иллюстрация

Примитивные узкосмысловые коды BCH

Дано простое число q и степень простого числа q с положительными целыми числами m и d такими, что d ≤ q - 1, примитивный узкосмысловой код BCH над конечным полем (или полем Галуа) GF (q) с длиной кода n = q - 1 и расстоянием не менее d строится следующим методом.

Пусть α будет примитивным элементом GF (q). Для любого натурального числа i пусть m i (x) будет минимальным многочленом с коэффициентами в GF (q) при α. Генераторный полином кода BCH определяется как наименьшее общее кратное g (x) = lcm (m 1 (x),…, m d - 1 (x)). Можно видеть, что g (x) - многочлен с коэффициентами из GF (q) и делит x - 1. Следовательно, полиномиальный код, определяемый g (x), является циклическим кодом.

Пример

Пусть q = 2 и m = 4 (следовательно, n = 15). Мы рассмотрим разные значения d. Для GF (16) = GF (2) на основе многочлена x + x + 1 с первообразным корнем α = x + 0 существуют минимальные многочлены m i (x) с коэффициентами в GF (2), удовлетворяющие

mi (α i) mod (x 4 + x + 1) = 0. {\ displaystyle m_ {i} \ left (\ alpha ^ {i} \ right) {\ bmod {\ left (x ^ {4 } + x + 1 \ right)}} = 0.}{\displaystyle m_{i}\left(\alpha ^{i}\right){\bmod {\left(x^{4}+x+1\right)}}=0.}

Минимальные многочлены четырнадцати степеней α равны

m 1 (x) = m 2 (x) = m 4 (x) = m 8 (х) = х 4 + х + 1, м 3 (х) = м 6 (х) = м 9 (х) = м 12 (х) = х 4 + х 3 + х 2 + х + 1, м 5 (x) = m 10 (x) = x 2 + x + 1, m 7 (x) = m 11 (x) = m 13 (x) = m 14 (x) = x 4 + x 3 + 1. { \ Displaystyle {\ begin {align} m_ {1} (x) = m_ {2} (x) = m_ {4} (x) = m_ {8} (x) = x ^ {4} + x + 1, \\ m_ {3} (x) = m_ {6} (x) = m_ {9} (x) = m_ {12} (x) = x ^ {4} + x ^ {3} + x ^ {2} + x + 1, \\ m_ {5} (x) = m_ {10} (x) = x ^ {2} + x + 1, \\ m_ {7} (x) = m_ { 11} (x) = m_ {13} (x) = m_ {14} (x) = x ^ {4} + x ^ {3} +1. \ End {align}}}{\displaystyle {\begin{aligned}m_{1}(x)=m_{2}(x)=m_{4}(x)=m_{8}(x)=x^{4}+x+1,\\m_{3}(x)=m_{6}(x)=m_{9}(x)=m_{12}(x)=x^{4}+x^{3}+x^{2}+x+1,\\m_{5}(x)=m_{10}(x)=x^{2}+x+1,\\m_{7}(x)=m_{11}(x)=m_{13}(x)=m_{14}(x)=x^{4}+x^{3}+1.\end{aligned}}}

Код BCH с d = 2, 3 {\ displaystyle d = 2,3}{\displaystyle d=2,3}имеет порождающий полином

g (x) = lcm (m 1 (x), m 2 (x)) = m 1 (х) = х 4 + x + 1. {\ displaystyle g (x) = {\ rm {lcm}} (m_ {1} (x), m_ {2} (x)) = m_ {1} (x) = x ^ {4 } + x + 1. \,}{\displaystyle g(x)={\rm {lcm}}(m_{1}(x),m_{2}(x))=m_{1}(x)=x^{4}+x+1.\,}

Он имеет минимальное расстояние Хэмминга не менее 3 и исправляет до одной ошибки. Поскольку порождающий полином имеет степень 4, этот код имеет 11 бит данных и 4 бита контрольной суммы.

Код BCH с d = 4, 5 {\ displaystyle d = 4,5}d=4,5имеет порождающий полином

g (x) = lcm (m 1 (x), м 2 (х), м 3 (х), м 4 (х)) = м 1 (х) м 3 (х) = (х 4 + х + 1) (х 4 + х 3 + х 2 + x + 1) = x 8 + x 7 + x 6 + x 4 + 1. {\ displaystyle {\ begin {align} g (x) = {\ rm {lcm}} (m_ {1} (x), m_ {2} (x), m_ {3} (x), m_ {4} (x)) = m_ {1} (x) m_ {3} (x) \\ = \ left (x ^ {4 } + x + 1 \ right) \ left (x ^ {4} + x ^ {3} + x ^ {2} + x + 1 \ right) = x ^ {8} + x ^ {7} + x ^ {6} + x ^ {4} +1. \ End {align}}}{\displaystyle {\begin{aligned}g(x)={\rm {lcm}}(m_{1}(x),m_{2}(x),m_{3}(x),m_{4}(x))=m_{1}(x)m_{3}(x)\\=\left(x^{4}+x+1\right)\left(x^{4}+x^{3}+x^{2}+x+1\right)=x^{8}+x^{7}+x^{6}+x^{4}+1.\end{aligned}}}

Он имеет минимальное расстояние Хэмминга не менее 5 и исправляет до двух ошибок. Поскольку порождающий полином имеет степень 8, этот код имеет 7 бит данных и 8 битов контрольной суммы.

Код BCH с d = 6, 7 {\ displaystyle d = 6,7}{\displaystyle d=6,7}имеет порождающий полином

g (x) = lcm (m 1 (x), m 2 (x), m 3 (x), m 4 (x), m 5 (x), m 6 (x)) = m 1 (x) m 3 (x) m 5 (x) = ( x 4 + x + 1) (x 4 + x 3 + x 2 + x + 1) (x 2 + x + 1) = x 10 + x 8 + x 5 + x 4 + x 2 + x + 1. { \ Displaystyle {\ begin {align} g (x) = {\ rm {lcm}} (m_ {1} (x), m_ {2} (x), m_ {3} (x), m_ {4}) (x), m_ {5} (x), m_ {6} (x)) = m_ {1} (x) m_ {3} (x) m_ {5} (x) \\ = \ left (x ^ {4} + x + 1 \ right) \ left (x ^ {4} + x ^ {3} + x ^ {2} + x + 1 \ right) \ left (x ^ {2} + x + 1 \ right) = x ^ {10} + x ^ {8} + x ^ {5} + x ^ {4} + x ^ {2} + x + 1. \ end {align}}}{\displaystyle {\begin{aligned}g(x)={\rm {lcm}}(m_{1}(x),m_{2}(x),m_{3}(x),m_{4}(x),m_{5}(x),m_{6}(x))=m_{1}(x)m_{3}(x)m_{5}(x)\\=\left(x^{4}+x+1\right)\left(x^{4}+x^{3}+x^{2}+x+1\right)\left(x^{2}+x+1\right)=x^{10}+x^{8}+x^{5}+x^{4}+x^{2}+x+1.\end{aligned}}}

Он имеет минимальное расстояние Хэмминга не менее 7 и исправляет до трех ошибок. Поскольку порождающий полином имеет степень 10, этот код имеет 5 бит данных и 10 битов контрольной суммы. (Этот конкретный генераторный полином имеет реальное применение в шаблонах формата QR-кода.)

Код BCH с d = 8 {\ displaystyle d = 8 }d=8и выше имеет порождающий многочлен

g (x) = lcm (m 1 (x), m 2 (x),..., m 14 (x)) = m 1 (x) m 3 (x) m 5 (x) m 7 (x) = (x 4 + x + 1) (x 4 + x 3 + x 2 + x + 1) (x 2 + x + 1) (x 4 + Икс 3 + 1) = Икс 14 + Икс 13 + Икс 12 + ⋯ + Икс 2 + Икс + 1. {\ Displaystyle {\ begin {Выровнено} g (x) = {\ rm {lcm}} (m_ {1 } (x), m_ {2} (x),..., m_ {14} (x)) = m_ {1} (x) m_ {3} (x) m_ {5} (x) m_ {7 } (x) \\ = \ left (x ^ {4} + x + 1 \ right) \ left (x ^ {4} + x ^ {3} + x ^ {2} + x + 1 \ right) \ left (x ^ {2} + x + 1 \ right) \ left (x ^ {4} + x ^ {3} +1 \ right) = x ^ {14} + x ^ {13} + x ^ { 12} + \ cdots + x ^ {2} + x + 1. \ End {align}}}{\displaystyle {\begin{aligned}g(x)={\rm {lcm}}(m_{1}(x),m_{2}(x),...,m_{14}(x))=m_{1}(x)m_{3}(x)m_{5}(x)m_{7}(x)\\=\left(x^{4}+x+1\right)\left(x^{4}+x^{3}+x^{2}+x+1\right)\left(x^{2}+x+1\right)\left(x^{4}+x^{3}+1\right)=x^{14}+x^{13}+x^{12}+\cdots +x^{2}+x+1.\end{aligned}}}

Этот код имеет минимальное расстояние Хэмминга 15 и исправляет 7 ошибок. Он имеет 1 бит данных и 14 битов контрольной суммы. Фактически, этот код имеет только два кодовых слова: 000000000000000 и 1111111111111.

Общие коды BCH

Общие коды BCH отличаются от примитивных кодов BCH с узким смыслом в двух отношениях.

Во-первых, требование, чтобы α {\ displaystyle \ alpha}\alpha был примитивным элементом GF (qm) {\ displaystyle \ mathrm {GF} (q ^ {m})}\mathrm {GF} (q^{m})можно расслабить. При ослаблении этого требования длина кода изменяется с qm - 1 {\ displaystyle q ^ {m} -1}q^{m}-1на ord (α), {\ displaystyle \ mathrm {ord} (\ alpha),}\mathrm {ord} (\alpha),порядок элемента α. {\ displaystyle \ alpha.}\alpha.

Во-вторых, последовательные корни порождающего полинома могут начинаться из α c,…, α c + d - 2 {\ displaystyle \ alpha ^ {c}, \ ldots, \ alpha ^ {c + d-2}}\alpha ^{c},\ldots,\alpha ^{c+d-2}вместо α,…, α d - 1. {\ displaystyle \ alpha, \ ldots, \ alpha ^ {d-1}.}\ альфа, \ ldots, \ alpha ^ {d-1}.

Определение. Исправить конечное поле GF (q), {\ displaystyle GF (q),}GF(q),где q {\ displaystyle q}q- степень простого числа. Выберите целые положительные числа m, n, d, c {\ displaystyle m, n, d, c}m,n,d,cтак, чтобы 2 ≤ d ≤ n, {\ displaystyle 2 \ leq d \ leq n,}2\leq d\leq n,gcd (n, q) = 1, {\ displaystyle {\ rm {gcd}} (n, q) = 1,}{\rm {gcd}}(n,q)=1,и m {\ displaystyle m}m- порядок умножения числа q {\ displaystyle q}qпо модулю n. {\ displaystyle n.}n.

Как и раньше, пусть α {\ displaystyle \ alpha}\alpha будет примитивом n {\ displaystyle n}nкорень -й степени из единицы в GF (qm), {\ displaystyle GF (q ^ {m}),}GF(q^{m}),и пусть mi (x) {\ displaystyle m_ {i } (x)}m_{i}(x)быть минимальным многочленом над GF (q) {\ displaystyle GF (q)}GF(q)из α i { \ displaystyle \ alpha ^ {i}}\alpha ^{i}для всех i. {\ displaystyle i.}i.Генераторный полином кода BCH определяется как наименьшее общее кратное g (x) = lcm (mc (x),…, mc + d - 2 (х)). {\ displaystyle g (x) = {\ rm {lcm}} (m_ {c} (x), \ ldots, m_ {c + d-2} (x)).}g(x)={\rm {lcm}}(m_{c}(x),\ldots,m_{c+d-2}(x)).

Примечание: если n = qm - 1 {\ displaystyle n = q ^ {m} -1}n=q^{m}-1как в упрощенном определении, затем gcd (n, q) {\ displaystyle {\ rm { gcd}} (n, q)}{\rm {gcd}}(n,q)равно 1, и порядок q {\ displaystyle q}qпо модулю n {\ displaystyle n}nравно м. {\ displaystyle m.}m.Следовательно, упрощенное определение действительно является частным случаем общего.

Особые случаи

  • Код BCH с c = 1 {\ displaystyle c = 1}c=1называется кодом BCH с узким смыслом.
  • A Код BCH с n = qm - 1 {\ displaystyle n = q ^ {m} -1}n=q^{m}-1называется примитивным.

Генераторный полином g (x) {\ displaystyle g (x)}g(x)кода BCH имеет коэффициенты из GF (q). {\ displaystyle \ mathrm {GF} (q).}\mathrm {GF} (q).В общем, циклический код над GF (qp) {\ displaystyle \ mathrm {GF} (q ^ {p})}\mathrm {GF} (q^{p})с g (x) {\ displaystyle g (x)}g(x)в качестве порождающего полинома, называется кодом BCH над GF (qp). {\ displaystyle \ mathrm {GF} (q ^ {p}).}\mathrm {GF} (q^{p}).Код BCH над GF (qm) {\ displaystyle \ mathrm {GF} (q ^ {m})}\mathrm {GF} (q^{m})и порождающий полином g (x) {\ displaystyle g (x)}g(x)с последовательными степенями α {\ displaystyle \ alpha}\alpha поскольку корни - это один тип кода Рида – Соломона, где алфавит декодера (синдромов) совпадает с алфавитом канала (данные и генераторный полином), все элементы GF (qm) {\ displaystyle \ mathrm {GF} (q ^ {m})}\mathrm {GF} (q^{m}). Другой тип кода Рида-Соломона - это исходный код Рида-Соломона, который не является кодом BCH.

Свойства

Генераторный полином кода BCH имеет степень не выше (d - 1) m {\ displaystyle (d-1) m}(d-1)m. Кроме того, если q = 2 {\ displaystyle q = 2}q=2и c = 1 {\ displaystyle c = 1}c=1, порождающий полином имеет степень не более dm / 2 {\ displaystyle dm / 2}dm/2.

Proof

Каждый минимальный многочлен mi (x) {\ displaystyle m_ {i} (x)}m_{i}(x)имеет степень самый м {\ displaystyle m}m. Следовательно, наименьшее общее кратное для d - 1 {\ displaystyle d-1}d-1из них имеет степень не более (d - 1) m {\ displaystyle (d-1) m }(d-1)m. Кроме того, если q = 2, {\ displaystyle q = 2,}q=2,, то mi (x) = m 2 i (x) {\ displaystyle m_ {i} (x) = m_ {2i} (x)}m_{i}(x)=m_{2i}(x)для всех i {\ displaystyle i}i. Следовательно, g (x) {\ displaystyle g (x)}g(x)- наименьшее общее кратное не более чем d / 2 {\ displaystyle d / 2}d / 2 минимальные многочлены mi (x) {\ displaystyle m_ {i} (x)}m_{i}(x)для нечетных индексов i, {\ displaystyle i,}i,каждый степени в большинство m {\ displaystyle m}m.

Код BCH имеет минимальное расстояние Хэмминга не менее d {\ displaystyle d}d.

Доказательство

Предположим, что p (x) {\ displaystyle p (x)}p(x)- это кодовое слово, содержащее менее d {\ displaystyle d}dненулевых членов. Тогда

p (x) = b 1 xk 1 + ⋯ + bd - 1 xkd - 1, где k 1 < k 2 < ⋯ < k d − 1. {\displaystyle p(x)=b_{1}x^{k_{1}}+\cdots +b_{d-1}x^{k_{d-1}},{\text{ where }}k_{1}p(x)=b_{1}x^{k_{1}}+\cdots +b_{d-1}x^{k_{d-1}},{\text{ where }}k_{1}<k_{2}<\cdots <k_{d-1}.

Напомним, что α c,…, α c + d - 2 {\ displaystyle \ alpha ^ {c}, \ ldots, \ alpha ^ {c + d-2}}\alpha ^{c},\ldots,\alpha ^{c+d-2}являются корнями из g (x), {\ displaystyle g (x),}g(x),отсюда p (x) {\ displaystyle p (x)}p(x). Это означает, что b 1,…, bd - 1 {\ displaystyle b_ {1}, \ ldots, b_ {d-1}}b_{1},\ldots,b_{d-1}удовлетворяют следующим уравнениям для каждого i ∈ {c,…, c + d - 2} {\ displaystyle i \ in \ {c, \ dotsc, c + d-2 \}}i \ in \ {c, \ dotsc, c + d-2 \} :

p (α i) = b 1 α ik 1 + b 2 α ik 2 + ⋯ + bd - 1 α ikd - 1 = 0. {\ displaystyle p (\ alpha ^ {i}) = b_ {1} \ alpha ^ {ik_ {1}} + b_ {2} \ alpha ^ { ik_ {2}} + \ cdots + b_ {d-1} \ alpha ^ {ik_ {d-1}} = 0.}p(\alpha ^{i})=b_{1}\alpha ^{ik_{1}}+b_{2}\alpha ^{ik_{2}}+\cdots +b_{d-1}\alpha ^{ik_{d-1}}=0.

В матричной форме

[α ck 1 α ck 2 ⋯ α ckd - 1 α (c + 1) k 1 α (c + 1) k 2 ⋯ α (c + 1) kd - 1 ⋮ ⋮ ⋮ α (c + d - 2) k 1 α (c + d - 2).) k 2 ⋯ α (c + d - 2) kd - 1] [b 1 b 2 ⋮ bd - 1] = [0 0 0]. {\ displaystyle {\ begin {bmatrix} \ alpha ^ {ck_ {1}} \ alpha ^ {ck_ {2}} \ cdots \ alpha ^ {ck_ {d-1}} \\\ alpha ^ {( c + 1) k_ {1}} \ alpha ^ {(c + 1) k_ {2}} \ cdots \ alpha ^ {(c + 1) k_ {d-1}} \\\ vdots \ vdots \ vdots \\\ alpha ^ {(c + d-2) k_ {1}} \ alpha ^ {(c + d-2) k_ {2}} \ cdots \ alpha ^ {(c + d-2) k_ {d-1}} \\\ end {bmatrix}} {\ begin {bmatrix} b_ {1} \\ b_ {2} \\\ vdots \\ b_ {d-1} \ end { bmatrix}} = {\ begin {bmatrix} 0 \\ 0 \\\ vdots \\ 0 \ end {bmatrix}}.}{\displaystyle {\begin{bmatrix}\alpha ^{ck_{1}}\alpha ^{ck_{2}}\cdots \alpha ^{ck_{d-1}}\\\alpha ^{(c+1)k_{1}}\alpha ^{(c+1)k_{2}}\cdots \alpha ^{(c+1)k_{d-1}}\\\vdots \vdots \vdots \\\alpha ^{(c+d-2)k_{1}}\alpha ^{(c+d-2)k_{2}}\cdots \alpha ^{(c+d-2)k_{d-1}}\\\end{bmatrix}}{\begin{bmatrix}b_{1}\\b_{2}\\\vdots \\b_{d-1}\end{bmatrix}}={\begin{bmatrix}0\\0\\\vdots \\0\end{bmatrix}}.}

Определитель этой матрицы равен

(∏ i = 1 d - 1 α cki) det (1 1 ⋯ 1 α k 1 α k 2 ⋯ α kd - 1 ⋮ ⋮ ⋮ α (d - 2) k 1 α (d - 2) k 2 ⋯ α (d - 2) kd - 1) = (∏ i = 1 d - 1 α cki) det (V). {\ displaystyle \ left (\ prod _ {i = 1} ^ {d-1} \ alpha ^ {ck_ {i}} \ right) \ det {\ begin {pmatrix} 1 1 \ cdots 1 \\\ alpha ^ { k_ {1}} \ alpha ^ {k_ {2}} \ cdots \ alpha ^ {k_ {d-1}} \\\ vdots \ vdots \ vdots \\\ alpha ^ {(d-2) k_ {1}} \ alpha ^ {(d-2) k_ {2}} \ cdots \ alpha ^ {(d-2) k_ {d-1}} \\\ end {pmatrix}} = \ left (\ prod _ {i = 1} ^ {d-1} \ alpha ^ {ck_ {i}} \ right) \ det (V).}{\displaystyle \left(\prod _{i=1}^{d-1}\alpha ^{ck_{i}}\right)\det {\begin{pmatrix}11\cdots 1\\\alpha ^{k_{1}}\alpha ^{k_{2}}\cdots \alpha ^{k_{d-1}}\\\vdots \vdots \vdots \\\alpha ^{(d-2)k_{1}}\alpha ^{(d-2)k_{2}}\cdots \alpha ^{(d-2)k_{d-1}}\\\end{pmatrix}}=\left(\prod _{i=1}^{d-1}\alpha ^{ck_{i}}\right)\det(V).}

Матрица V {\ displaystyle V}Vрассматривается как матрица Вандермонда, и ее определитель равен

det (V) = ∏ 1 ≤ i < j ≤ d − 1 ( α k j − α k i), {\displaystyle \det(V)=\prod _{1\leq i{\displaystyle \det(V)=\prod _{1\leq i<j\leq d-1}\left(\alpha ^{k_{j}}-\alpha ^{k_{i}}\right),}

, который не равен нулю. Отсюда следует, что b 1,…, bd - 1 = 0, {\ displaystyle b_ {1}, \ ldots, b_ {d-1} = 0,}b_{1},\ldots,b_{d-1}=0,, следовательно, p (x) = 0. {\ displaystyle p (x) = 0.}{\displaystyle p(x)=0.}

Код BCH является циклическим.

Доказательство

Полиномиальный код длины n {\ displaystyle n}nявляется циклическим тогда и только тогда, когда его порождающий полином делит xn - 1. {\ displaystyle x ^ { n} -1.}x^{n}-1.Поскольку g (x) {\ displaystyle g (x)}g(x)является минимальным многочленом с корнями α c,…, α c + d - 2, {\ displaystyle \ alpha ^ {c}, \ ldots, \ alpha ^ {c + d-2},}\alpha ^{c},\ldots,\alpha ^{c+d-2},, достаточно проверить, что каждое из α c,…, α c + d - 2 {\ displaystyle \ alpha ^ {c}, \ ldots, \ alpha ^ {c + d-2}}\alpha ^{c},\ldots,\alpha ^{c+d-2}является корнем из xn - 1. {\ displaystyle x ^ {n} -1.}x^{n}-1.Это сразу следует из того факта, что α {\ displaystyle \ alpha}\alpha по определению является n { \ displaystyle n}nкорень -й степени из единицы.

Кодирование

Поскольку любой многочлен, кратный образующему многочлену, является допустимым кодовым словом BCH, кодирование BCH - это просто процесс поиска некоторого многочлена, в котором генератор является фактором.

Сам код BCH не определяет значения коэффициентов полинома; концептуально, единственная задача алгоритма декодирования BCH - найти допустимое кодовое слово с минимальным расстоянием Хэмминга до полученного кодового слова. Следовательно, код BCH может быть реализован либо как систематический код , либо нет, в зависимости от того, как разработчик решает внедрить сообщение в закодированный полином.

Несистематическое кодирование: сообщение как фактор

Самый простой способ найти многочлен, кратный генератору, - это вычислить произведение некоторого произвольного полинома и генератора. В этом случае произвольный многочлен можно выбрать, используя символы сообщения в качестве коэффициентов.

s (x) = p (x) g (x) {\ displaystyle s (x) = p (x) g (x)}{\displaystyle s(x)=p(x)g(x)}

В качестве примера рассмотрим порождающий полином g (x) = x 10 + x 9 + x 8 + x 6 + x 5 + x 3 + 1 {\ displaystyle g (x) = x ^ {10} + x ^ {9} + x ^ {8} + x ^ { 6} + x ^ {5} + x ^ {3} +1}{\displaystyle g(x)=x^{10}+x^{9}+x^{8}+x^{6}+x^{5}+x^{3}+1}, выбранный для использования в (31, 21) двоичном коде BCH, используемом POCSAG и другими. Чтобы закодировать 21-битное сообщение {101101110111101111101}, мы сначала представляем его как полином от GF (2) {\ displaystyle GF (2)}GF(2):

p (x) = x 20 + x 18 + x 17 + x 15 + x 14 + x 13 + x 11 + x 10 + x 9 + x 8 + x 6 + x 5 + x 4 + x 3 + x 2 + 1 {\ displaystyle p (x) = x ^ {20 } + x ^ {18} + x ^ {17} + x ^ {15} + x ^ {14} + x ^ {13} + x ^ {11} + x ^ {10} + x ^ {9} + x ^ {8} + x ^ {6} + x ^ {5} + x ^ {4} + x ^ {3} + x ^ {2} +1}{\displaystyle p(x)=x^{20}+x^{18}+x^{17}+x^{15}+x^{14}+x^{13}+x^{11}+x^{10}+x^{9}+x^{8}+x^{6}+x^{5}+x^{4}+x^{3}+x^{2}+1}

Затем вычислите (также более GF (2) {\ displaystyle GF (2)}GF(2)):

s (x) = p (x) g (x) = (x 20 + x 18 + x 17 + x 15 + х 14 + х 13 + х 11 + х 10 + х 9 + х 8 + х 6 + х 5 + х 4 + х 3 + х 2 + 1) (х 10 + х 9 + х 8 + х 6 + х 5 + x 3 + 1) = x 30 + x 29 + x 26 + x 25 + x 24 + x 22 + x 19 + x 17 + x 16 + x 15 + x 14 + x 12 + x 10 + x 9 + x 8 + x 6 + x 5 + x 4 + x 2 + 1 {\ displaystyle {\ begin {align} s (x) = p (x) g (x) \\ = \ left (x ^ {20}) + x ^ {18} + x ^ {17} + x ^ {15} + x ^ {14} + x ^ {13} + x ^ {11} + x ^ {10} + x ^ {9} + x ^ {8} + x ^ {6} + x ^ {5} + x ^ {4} + x ^ {3} + x ^ {2} +1 \ right) \ left (x ^ {10} + x ^ {9} + x ^ {8} + x ^ {6} + x ^ {5} + x ^ {3} +1 \ right) \\ = x ^ {30} + x ^ {29} + x ^ {26} + x ^ {25} + x ^ {24} + x ^ {22} + x ^ {19} + x ^ {17} + x ^ {16} + x ^ {15} + x ^ {14} + x ^ {12 } + x ^ {10} + x ^ {9} + x ^ {8} + x ^ {6} + x ^ {5} + x ^ {4} + x ^ {2} +1 \ end {выровнено} }}{\displaystyle {\begin{aligned}s(x)=p(x)g(x)\\=\left(x^{20}+x^{18}+x^{17}+x^{15}+x^{14}+x^{13}+x^{11}+x^{10}+x^{9}+x^{8}+x^{6}+x^{5}+x^{4}+x^{3}+x^{2}+1\right)\left(x^{10}+x^{9}+x^{8}+x^{6}+x^{5}+x^{3}+1\right)\\=x^{30}+x^{29}+x^{26}+x^{25}+x^{24}+x^{22}+x^{19}+x^{17}+x^{16}+x^{15}+x^{14}+x^{12}+x^{10}+x^{9}+x^{8}+x^{6}+x^{5}+x^{4}+x^{2}+1\end{aligned}}}

Таким образом, переданное кодовое слово - {1100111010010111101011101110101}.

Приемник может использовать эти биты в качестве коэффициентов в s (x) {\ displaystyle s (x)}s(x)и после исправления ошибок для проверки правильности кодового слова может повторно вычислить p (x) = s (x) / g (x) {\ displaystyle p (x) = s (x) / g (x)}{\displaystyle p(x)=s(x)/g(x)}

Систематическая кодировка: сообщение в виде префикса

Систематический код - это код, в котором сообщение дословно отображается где-то внутри кодового слова. Следовательно, систематическое кодирование BCH включает в себя сначала встраивание полинома сообщения в полином кодового слова, а затем настройку коэффициентов оставшихся (не связанных с сообщением) членов, чтобы гарантировать, что s (x) {\ displaystyle s (x)}s(x)делится на g (x) {\ displaystyle g (x)}g(x).

Этот метод кодирования использует тот факт, что вычитание остатка от делимого дает результат, кратный делителю. Следовательно, если мы возьмем наш многочлен сообщения p (x) {\ displaystyle p (x)}p(x), как прежде, и умножим его на xn - k {\ displaystyle x ^ {nk}}{\displaystyle x^{n-k}}(чтобы «сдвинуть» сообщение с пути остатка), мы можем затем использовать евклидово деление многочленов, чтобы получить:

p (x) xn - k = q (x) g (x) + r (x) {\ displaystyle p (x) x ^ {nk} = q (x) g (x) + r (x)}{\displaystyle p(x)x^{n-k}=q(x)g(x)+r(x)}

Здесь мы видим, что q (x) g (x) {\ displaystyle q (x) g (x)}{\ displaystyle q (x) g (x)} - допустимое кодовое слово. Поскольку r (x) {\ displaystyle r (x)}r(x)всегда имеет степень меньше n - k {\ displaystyle nk}n-k(которая является степенью из g (x) {\ displaystyle g (x)}g(x)), мы можем безопасно вычесть его из p (x) xn - k {\ displaystyle p (x) x ^ { nk}}{\displaystyle p(x)x^{n-k}}без изменения каких-либо коэффициентов сообщения, следовательно, мы имеем s (x) {\ displaystyle s (x)}s(x)как

s (x) знак равно Q (Икс) г (Икс) знак равно п (Икс) Икс - К - р (Икс) {\ Displaystyle s (х) = д (х) г (х) = р (х) х ^ {nk} -r (x)}{\displaystyle s(x)=q(x)g(x)=p(x)x^{n-k}-r(x)}

Более GF (2) {\ displaystyle GF (2)}GF(2)(то есть с двоичными кодами BCH), этот процесс неотличим от добавления циклической проверки избыточности, и если систематический двоичный код BCH используется только для целей обнаружения ошибок, мы видим, что коды BCH являются просто обобщением математики циклических проверок избыточности.

Преимущество систематического кодирования состоит в том, что получатель может восстановить исходное сообщение, отбросив все после первого k {\ d isplaystyle k}kкоэффициентов после выполнения исправления ошибок.

Декодирование

Существует множество алгоритмов декодирования кодов BCH. Наиболее распространенные из них следуют этой общей схеме:

  1. Вычислить синдромы s j для полученного вектора
  2. Определить количество ошибок t и полином локатора ошибок Λ (x) из синдромы
  3. Вычислить корни полинома местоположения ошибки, чтобы найти местоположения ошибки X i
  4. Вычислить значения ошибки Y i в этих местоположениях ошибки
  5. Исправить ошибки

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

Вычислить синдромы

Полученный вектор R {\ displaystyle R}Rпредставляет собой сумму правильного кодового слова C {\ displaystyle C}Cи неизвестный вектор ошибок E. {\ displaystyle E.}E.Значения синдрома формируются путем рассмотрения R {\ displaystyle R}Rкак полинома и его оценки при α c,…, α c + d - 2. {\ displaystyle \ alpha ^ {c}, \ ldots, \ alpha ^ {c + d-2}.}{\displaystyle \alpha ^{c},\ldots,\alpha ^{c+d-2}.}Таким образом, синдромы

sj = R (α j) = C (α j) + Е (α j) {\ Displaystyle s_ {j} = R \ left (\ alpha ^ {j} \ right) = C \ left (\ alpha ^ {j} \ right) + E \ left (\ alpha ^ {j} \ right)}{\displaystyle s_{j}=R\left(\alpha ^{j}\right)=C\left(\alpha ^{j}\right)+E\left(\alpha ^{j}\right)}

для j = c {\ displaystyle j = c}j = c до c + d - 2. {\ displaystyle c + d-2.}{\displaystyle c+d-2.}

Поскольку α j {\ displaystyle \ alpha ^ {j}}\ alpha ^ {j} - это нули g (x), {\ displaystyle g (x),}g(x),из которых C (x) {\ displaystyle C (x)}C(x)кратно, C (α j) = 0. {\ displaystyle C \ left (\ alpha ^ {j} \ right) = 0.}{\displaystyle C\left(\alpha ^{j}\right)=0.}Таким образом, изучение значений синдрома изолирует вектор ошибок, чтобы можно было приступить к его поиску.

Если ошибки нет, s j = 0 {\ displaystyle s_ {j} = 0}s_{j}=0для всех j. {\ displaystyle j.}j.Если все синдромы равны нулю, то декодирование выполнено.

Вычислить многочлен местоположения ошибки

Если есть ненулевые синдромы, значит, есть ошибки. Декодеру необходимо выяснить, сколько ошибок и где они находятся.

Если есть одна ошибка, запишите это как E (x) = exi, {\ displaystyle E (x) = e \, x ^ {i},}E(x)=e\,x^{i},где i {\ displaystyle i}i- местоположение ошибки, а e {\ displaystyle e}e- ее величина. Тогда первые два синдрома:

sc = e α cisc + 1 = e α (c + 1) i = α isc {\ displaystyle {\ begin {align} s_ {c} = e \, \ alpha ^ { c \, i} \\ s_ {c + 1} = e \, \ alpha ^ {(c + 1) \, i} = \ alpha ^ {i} s_ {c} \ end {align}}}{\displaystyle {\begin{aligned}s_{c}=e\,\alpha ^{c\,i}\\s_{c+1}=e\,\alpha ^{(c+1)\,i}=\alpha ^{i}s_{c}\end{aligned}}}

, поэтому вместе они позволяют нам вычислить e {\ displaystyle e}eи предоставить некоторую информацию о i {\ displaystyle i}i(полностью определяя его в случай кодов Рида – Соломона).

Если есть две или более ошибок,

E (x) = e 1 xi 1 + e 2 xi 2 + ⋯ {\ displaystyle E (x) = e_ {1} x ^ {i_ { 1}} + e_ {2} x ^ {i_ {2}} + \ cdots \,}E(x)=e_{1}x^{i_{1}}+e_{2}x^{i_{2}}+\cdots \,

Не сразу понятно, как начать решение результирующих синдромов для неизвестных ek {\ displaystyle e_ {k }}e_{k}и ik. {\ displaystyle i_ {k}.}i_{k}.

Первым шагом является поиск, совместимый с вычисленными синдромами и с минимально возможным t, {\ displaystyle t,}t,многочлен локатора:

Λ (Икс) знак равно ∏ J знак равно 1 T (Икс α ij - 1) {\ Displaystyle \ Lambda (x) = \ prod _ {j = 1} ^ {t} \ left (x \ alpha ^ {i_ {j}} -1 \ right)}{\displaystyle \Lambda (x)=\prod _{j=1}^{t}\left(x\alpha ^{i_{j}}-1\right)}

Два популярных алгоритма для этой задачи:

  1. алгоритм Петерсона – Горенштейна – Цирлера
  2. алгоритм Берлекампа – Месси

алгоритм Петерсона – Горенштейна – Цирлера

алгоритм Петерсона - шаг 2 обобщенной процедуры декодирования BCH. Алгоритм Петерсона используется для вычисления коэффициентов полинома локатора ошибок λ 1, λ 2,…, λ v {\ displaystyle \ lambda _ {1}, \ lambda _ {2}, \ dots, \ lambda _ {v} }\lambda _{1},\lambda _{2},\dots,\lambda _{v}многочлена

Λ (x) = 1 + λ 1 x + λ 2 x 2 + ⋯ + λ vxv. {\ displaystyle \ Lambda (x) = 1 + \ lambda _ {1} x + \ lambda _ {2} x ^ {2} + \ cdots + \ lambda _ {v} x ^ {v}.}\Lambda (x)=1+\lambda _{1}x+\lambda _{2}x^{2}+\cdots +\lambda _{v}x^{v}.

Теперь процедура алгоритма Петерсона – Горенштейна – Цирлера. Ожидается, что у нас будет как минимум 2t синдромов s c,…, s c + 2t − 1. Пусть v = t.

  1. Начните с создания матрицы S v × v {\ displaystyle S_ {v \ times v}}S_{{v\times v}}с элементами, которые являются значениями синдрома
    S v × v = [scsc + 1 … Sc + v - 1 sc + 1 sc + 2… sc + v ⋮ ⋮ ⋱ sc + v - 1 sc + v… sc + 2 v - 2]. {\ Displaystyle S_ {v \ times v} = {\ begin {bmatrix} s_ {c} s_ {c + 1} \ dots s_ {c + v-1} \\ s_ {c + 1} s_ {c + 2} \ dots s_ {c + v} \\\ vdots \ vdots \ ddots \ vdots \\ s_ {c + v-1} s_ {c + v} \ dots s_ {c + 2v-2 } \ end {bmatrix}}.}S_{v\times v}={\begin{bmatrix}s_{c}s_{c+1}\dots s_{c+v-1}\\s_{c+1}s_{c+2}\dots s_{c+v}\\\vdots \vdots \ddots \vdots \\s_{c+v-1}s_{c+v}\dots s_{c+2v-2}\end{bmatrix}}.
  2. Сгенерировать вектор cv × 1 {\ displaystyle c_ {v \ times 1}}c_{v\times 1}с элементами
    C v × 1 = [сбн + vsc + v + 1 ⋮ sc + 2 v - 1]. {\ Displaystyle C_ {v \ times 1} = {\ begin {bmatrix} s_ {c + v} \\ s_ {c + v + 1} \\\ vdots \\ s_ {c + 2v-1} \ end { bmatrix}}.}C_{v\times 1}={\begin{bmatrix}s_{c+v}\\s_{c+v+1}\\\vdots \\s_{c+2v-1}\end{bmatrix}}.
  3. Пусть Λ {\ displaystyle \ Lambda}\Lambda обозначает неизвестные полиномиальные коэффициенты, которые задаются как
    Λ v × 1 = [λ v λ v - 1 ⋮ λ 1]. {\ displaystyle \ Lambda _ {v \ times 1} = {\ begin {bmatrix} \ lambda _ {v} \\\ lambda _ {v-1} \\\ vdots \\\ lambda _ {1} \ end { bmatrix}}.}\Lambda _{v\times 1}={\begin{bmatrix}\lambda _{v}\\\lambda _{v-1}\\\vdots \\\lambda _{1}\end{bmatrix}}.
  4. Сформируйте матричное уравнение
    S v × v Λ v × 1 = - C v × 1. {\ displaystyle S_ {v \ times v} \ Lambda _ {v \ times 1} = - C_ {v \ times 1 \,}.}S_{v\times v}\Lambda _{v\times 1}=-C_{v\times 1\,}.
  5. Если определитель матрицы S v × v {\ displaystyle S_ {v \ times v}}S_{v\times v}не равно нулю, тогда мы можем фактически найти обратную матрицу и найти значения неизвестного Λ {\ displaystyle \ Lambda}\Lambda значений.
  6. Если det (S v × v) = 0, {\ displaystyle \ det \ left (S_ {v \ times v} \ right) = 0,}{\displaystyle \det \left(S_{v\times v}\right)=0,}затем выполните
    , если v = 0 {\ displaystyle v = 0}v=0, то объявите пустой полином локатора ошибок, остановите процедуру Петерсона. конечный набор v ← v - 1 {\ displaystyle v \ leftarrow v-1}{\displaystyle v\leftarrow v-1}
    продолжить с начала декодирования Петерсона, уменьшив S v × v {\ displaystyle S_ {v \ times v} }S_{v\times v}
  7. После того, как у вас есть значения Λ {\ displaystyle \ Lambda}\Lambda , у вас будет многочлен локатора ошибок.
  8. Остановить процедуру Петерсона.

Факторный полином локатора ошибок

Теперь, когда у вас есть многочлен Λ (x) {\ displaystyle \ Lambda (x)}\Lambda (x), его корни можно найти в форме Λ (x) знак равно (α я 1 Икс - 1) (α я 2 Икс - 1) ⋯ (α ivx - 1) {\ Displaystyle \ Lambda (x) = \ left (\ alpha ^ {i_ {1}} x-1 \ right) \ left (\ alpha ^ {i_ {2}} x-1 \ right) \ cdots \ left (\ alpha ^ {i_ {v}} x-1 \ right)}{\display style \Lambda (x)=\left(\alpha ^{i_{1}}x-1\right)\left(\alpha ^{i_{2}}x-1\right)\cdots \left(\alpha ^{i_{v}}x-1\right)}грубой силой для пример с использованием алгоритма поиска Chien. Экспоненциальные степени примитивного элемента α {\ displaystyle \ alpha}\alpha дадут позиции, где возникают ошибки в полученном слове; отсюда и название полином «локатора ошибок».

Нули Λ (x) - это α,…, α.

Расчет значений ошибок

После того, как места ошибок известны, следующим шагом будет определение значений ошибок в этих местах. Затем значения ошибок используются для исправления полученных значений в этих местах для восстановления исходного кодового слова.

Для случая двоичного BCH (со всеми читаемыми символами) это тривиально; просто переверните биты принятого слова в эти позиции, и мы получим исправленное кодовое слово. В более общем случае веса ошибок ej {\ displaystyle e_ {j}}e_{j}могут быть определены путем решения линейной системы

sc = e 1 α ci 1 + e 2 α ci 2 + ⋯ сбн + 1 знак равно е 1 α (с + 1) я 1 + е 2 α (с + 1) я 2 + ⋯ ⋮ {\ displaystyle {\ begin {align} s_ {c} = e_ {1} \ alpha ^ {c \, i_ {1}} + e_ {2} \ alpha ^ {c \, i_ {2}} + \ cdots \\ s_ {c + 1} = e_ {1} \ alpha ^ { (c + 1) \, i_ {1}} + e_ {2} \ alpha ^ {(c + 1) \, i_ {2}} + \ cdots \\ {} \ \ vdots \ end {выровнено}} }{\ displaystyle {\ begin {align} s_ {c} = e_ {1} \ alpha ^ {c \, i_ {1}} + e_ {2} \ alpha ^ {c \, i_ {2 }} + \ cdots \\ s_ {c + 1} = e_ {1} \ alpha ^ {(c + 1) \, i_ {1}} + e_ {2} \ alpha ^ {(c + 1) \, i_ {2}} + \ cdots \\ {} \ \ vdots \ end {align}}}

алгоритм Форни

Однако существует более эффективный метод, известный как алгоритм Форни.

Пусть

S (x) = sc + sc + 1 x + sc + 2 х 2 + ⋯ + сбн + г - 2 х г - 2. {\ Displaystyle S (x) = s_ {c} + s_ {c + 1} x + s_ {c + 2} x ^ {2} + \ cdots + s_ {c + d-2} x ^ {d-2 }.}{\displaystyle S(x)=s_{c}+s_{c+1}x+s_{c+2}x^{2}+\cdots +s_{c+d-2}x^{d-2}.}
v ⩽ d - 1, λ 0 ≠ 0 Λ (x) = ∑ i = 0 v λ ixi = λ 0 ∏ k = 0 v (α - ikx - 1). {\ displaystyle v \ leqslant d-1, \ lambda _ {0} \ neq 0 \ qquad \ Lambda (x) = \ sum _ {i = 0} ^ {v} \ lambda _ {i} x ^ {i} = \ lambda _ {0} \ prod _ {k = 0} ^ {v} \ left (\ alpha ^ {- i_ {k}} x-1 \ right).}{\displaystyle v\leqslant d-1,\lambda _{0}\neq 0\qquad \Lambda (x)=\sum _{i=0}^{v}\lambda _{i}x^{i}=\lambda _{0}\prod _{k=0}^{v}\left(\alpha ^{-i_{k}}x-1\right).}

И полином вычислителя ошибок

Ом (Икс) ≡ S (Икс) Λ (Икс) mod xd - 1 {\ Displaystyle \ Omega (x) \ Equiv S (x) \ Lambda (x) {\ bmod {x ^ {d-1}}} }{\displaystyle \Omega (x)\equiv S(x)\Lambda (x){\bmod {x^{d-1}}}}

Наконец:

Λ ′ (x) = ∑ i = 1 vi ⋅ λ ixi - 1, {\ displaystyle \ Lambda '(x) = \ sum _ {i = 1} ^ {v} i \ cdot \ lambda _ {i} x ^ {i-1},}{\displaystyle \Lambda '(x)=\sum _{i=1}^{v}i\cdot \lambda _{i}x^{i-1},}

где

i ⋅ x: = ∑ k = 1 ix. {\ displaystyle i \ cdot x: = \ sum _ {k = 1} ^ {i} x.}{\displaystyle i\cdot x:=\sum _{k=1}^{i}x.}

Чем, если бы синдромы можно было объяснить словом ошибки, которое может быть ненулевым только на позициях ik { \ displaystyle i_ {k}}i_ {k} , тогда значения ошибок равны

ek = - α ik Ω (α - ik) α c ⋅ ik Λ ′ (α - ik). {\ displaystyle e_ {k} = - {\ alpha ^ {i_ {k}} \ Omega \ left (\ alpha ^ {- i_ {k}} \ right) \ over \ alpha ^ {c \ cdot i_ {k} } \ Lambda '\ left (\ alpha ^ {- i_ {k}} \ right)}.}{\displaystyle e_{k}=-{\alpha ^{i_{k}}\Omega \left(\alpha ^{-i_{k}}\right) \over \alpha ^{c\cdot i_{k}}\Lambda '\left(\alpha ^{-i_{k}}\right)}.}

Для кодов BCH узкого смысла c = 1, поэтому выражение упрощается до:

ek = - Ω (α - ik) Λ ′ (α - ik). {\ displaystyle e_ {k} = - {\ Omega \ left (\ alpha ^ {- i_ {k}} \ right) \ over \ Lambda '\ left (\ alpha ^ {- i_ {k}} \ right)}.}{\displaystyle e_{k}=-{\Omega \left(\alpha ^{-i_{k}}\right) \over \Lambda '\left(\alpha ^{-i_{k}}\right)}.}

Объяснение вычисления алгоритма Форни

Он основан на интерполяции Лагранжа и методах производящих функций.

Рассмотрим S (x) Λ (x), {\ displaystyle S (x) \ Lambda (x),}{\displaystyle S(x)\Lambda (x),}и для простоты предположим, что λ k = 0 {\ displaystyle \ lambda _ {k} = 0}{\displaystyle \lambda _{k}=0}для k>v, {\ displaystyle k>v,}{\displaystyle k>v,} и sk = 0 {\ displaystyle s_ {k} = 0}{\displaystyle s_{k}=0}для k>+ d - 2. {\ displaystyle k>c + d-2.}{\displaystyle k>c + d-2.} Тогда

S (x) Λ (x) = ∑ j = 0 ∞ i = 0 jsj - i + 1. {\ Displaystyle S (x) \ Lambda (x) = \ sum _ {j = 0} ^ {\ infty} \ sum _ {i = 0} ^ {j} s_ {j-i + 1} \ lambda _ { i} x ^ {j}.}{\displaystyle S(x)\Lambda (x)=\sum _{j=0}^{\infty }\sum _{i=0}^{j}s_{j-i+1}\lambda _{i}x^{j}.}
S (x) Λ (x) = S (x) {λ 0 ∏ ℓ = 1 v (α i ℓ x - 1)} = {∑ i = 0 d - 2 ∑ j = 1 vej α (c + i) ⋅ ijxi} {λ 0 ∏ ℓ = 1 v (α i ℓ x - 1)} = {∑ j = 1 vej α cij ∑ i = 0 d - 2 (α ij) ixi} {λ 0 ∏ ℓ = 1 v (α i ℓ x - 1)} = {∑ j = 1 vej α cij (x α ij) d - 1 - 1 x α ij - 1} {λ 0 ∏ ℓ = 1 v (α i ℓ x - 1)} = λ 0 ∑ j = 1 vej α cij (x α ij) d - 1 - 1 x α ij - 1 ∏ ℓ = 1 v (α i ℓ x - 1) = λ 0 ∑ j = 1 vej α cij ( ( x α ij) d − 1 − 1) ∏ ℓ ∈ { 1, ⋯, v } ∖ { j } ( α i ℓ x − 1) {\displaystyle {\ begin{aligned}S(x)\Lambda (x)=S(x)\left\{\lambda _{0}\prod _{\ell =1}^{v}\left(\alpha ^{i_ {\ell }}x-1\right)\right\}\\=\left\{\sum _{i=0}^{d-2}\sum _{j=1}^{v}e_ {j}\alpha ^{(c+i)\cdot i_{j}}x^{i}\right\}\left\{\lambda _{0}\prod _{\ell =1}^{v }\left(\alpha ^{i_{\ell }}x-1\right)\right\}\\=\left\{\sum _{j=1}^{v}e_{j}\alpha ^{ci_{j}}\sum _{i=0}^{d-2}\left(\a lpha ^{i_{j}}\right)^{i}x^{i}\right\}\left\{\lambda _{0}\prod _{\ell =1}^{v}\left(\alpha ^{i_{\ell }}x-1\right)\right\}\\=\left\{\sum _{j=1}^{v}e_{j}\alpha ^{ci_{j}}{\frac {\left(x\alpha ^{i_{j}}\right)^{d-1}-1}{x\alpha ^{i_{j}}-1}}\right\}\left\{\lambda _{0}\prod _{\ell =1}^{v}\left(\alpha ^{i_{\ell }}x-1\right)\right\}\\=\lambda _{0}\sum _{j=1}^{v}e_{j}\alpha ^{ci_{j}}{\frac {\left(x\alpha ^{i_{j}}\right)^{d-1}-1}{x\alpha ^{i_{j}}-1}}\prod _{\ell =1}^{v}\left(\alpha ^{i_{\ell }}x-1\right)\\=\lambda _{0}\sum _{j=1}^{v}e_{j}\alpha ^{ci_{j}}\left(\left(x\alpha ^{i_{j}}\right)^{d-1}-1\right)\prod _{\ell \in \{1,\cdots,v\}\setminus \{j\}}\left(\alpha ^{i_{\ell }}x-1\right)\end{aligned}}}{\displaystyle {\begin{aligned}S(x)\Lambda (x)=S(x)\left\{\lambda _{0}\prod _{\ell =1}^{v}\left(\alpha ^{i_{\ell }}x-1\right)\right\}\\=\left\{\sum _{i=0}^{d-2}\sum _{j=1}^{v}e_{j}\alpha ^{(c+i)\cdot i_{j}}x^{i}\right\}\left\{\lambda _{0}\prod _{\ell =1}^{v}\left(\alpha ^{i_{\ell }}x-1\right)\right\}\\=\left\{\sum _{j=1}^{v}e_{j}\alpha ^{ci_{j}}\sum _{i=0}^{d-2}\left(\alpha ^{i_{j}}\right)^{i}x^{i}\right\}\left\{\lambda _{0}\prod _{\ell =1}^{v}\left(\alpha ^{i_{\ell }}x-1\right)\right\}\\=\left\{\sum _{j=1}^{v}e_{j}\alpha ^{ci_{j}}{\frac {\left(x\alpha ^{i_{j}}\right)^{d-1}-1}{x\alpha ^{i_{j}}-1}}\right\}\left\{\lambda _{0}\prod _{\ell =1}^{v}\left(\alpha ^{i_{\ell }}x-1\right)\right\}\\=\lambda _{0}\sum _{j=1}^{v}e_{j}\alpha ^{ci_{j}}{\frac {\left(x\alpha ^{i_{j}}\right)^{d-1}-1}{x\alpha ^{i_{j}}-1}}\prod _{\ell =1}^{v}\left(\alpha ^{i_{\ell }}x-1\right)\\=\lambda _{0}\sum _{j=1}^{v}e_{j}\alpha ^{ci_{j}}\left(\left(x\alpha ^{i_{j}}\right)^{d-1}-1\right)\prod _{\ell \in \{1,\cdots,v\}\setminus \{j\}}\left(\alpha ^{i_{\ell }}x-1\right)\end{aligned}}}

We want to compute unknowns e j, {\displaystyle e_{j},}e_{j},and we could simplify the context by removing the ( x α i j) d − 1 {\displaystyle \left(x\alpha ^{i_{j}}\right)^{d-1}}{\displaystyle \left(x\alpha ^{i_{j}}\right)^{d-1}}terms. This leads to the error evaluator polynomial

Ω ( x) ≡ S ( x) Λ ( x) mod x d − 1. {\displaystyle \Omega (x)\equiv S(x)\Lambda (x){\bmod {x^{d-1}}}.}{\displaystyle \Omega (x)\equiv S(x)\Lambda (x){\bmod {x^{d-1}}}.}

Thanks to v ⩽ d − 1 {\displaystyle v\leqslant d-1}{\ displaystyle v \ leqslant d-1} we have

Ω ( x) = − λ 0 ∑ j = 1 v e j α c i j ∏ ℓ ∈ { 1, ⋯, v } ∖ { j } ( α i ℓ x − 1). {\displaystyle \Omega (x)=-\lambda _{0}\sum _{j=1}^{v}e_{j}\alpha ^{ci_{j}}\prod _{\ell \in \{1,\cdots,v\}\setminus \{j\}}\left(\alpha ^{i_{\ell }}x-1\right).}{\displaystyle \Omega (x)=-\lambda _{0}\sum _{j=1}^{v}e_{j}\alpha ^{ci_{j}}\prod _{\ell \in \{1,\cdots,v\}\setminus \{j\}}\left(\alpha ^{i_{\ell }}x-1\right).}

Thanks to Λ {\displaystyle \Lambda }\Lambda (the Lagrange interpolation trick) the sum degenerates to only one summand for x = α − i k {\displaystyle x=\alpha ^{-i_{k}}}{\displaystyle x=\alpha ^{-i_{k}}}

Ω ( α − i k) = − λ 0 e k α c ⋅ i k ∏ ℓ ∈ { 1, ⋯, v } ∖ { k } ( α i ℓ α − i k − 1). {\displaystyle \Omega \left(\alpha ^{-i_{k}}\right)=-\lambda _{0}e_{k}\alpha ^{c\cdot i_{k}}\prod _{\ell \in \{1,\cdots,v\}\setminus \{k\}}\left(\alpha ^{i_{\ell }}\alpha ^{-i_{k}}-1\right).}{\displaystyle \Omega \left(\alpha ^{-i_{k}}\right)=-\lambda _{0}e_{k}\alpha ^{c\cdot i_{k}}\prod _{\ell \in \{1,\cdots,v\}\setminus \{k\}}\left(\alpha ^{i_{\ell }}\alpha ^{-i_{k}}-1\right).}

To get e k {\displaystyle e_{k}}e_{k}we just should get rid of the product. We could compute the product directly from already computed roots α − i j {\displaystyle \alpha ^{-i_{j}}}\ alpha ^ {- i_ {j}} of Λ, {\displaystyle \Lambda,}\Lambda,but we could use simpler form.

As formal derivative

Λ ′ ( x) = λ 0 ∑ j = 1 v α i j ∏ ℓ ∈ { 1, ⋯, v } ∖ { j } ( α i ℓ x − 1), {\displaystyle \Lambda '(x)=\lambda _{0}\sum _{j=1}^{v}\alpha ^{i_{j}}\prod _{\ell \in \{1,\cdots,v\}\setminus \{j\}}\left(\alpha ^{i_{\ell }}x-1\right),}{\displaystyle \Lambda '(x)=\lambda _{0}\sum _{j=1}^{v}\alpha ^{i_{j}}\prod _{\ell \in \{1,\cdots,v\}\setminus \{j\}}\left(\alpha ^{i_{\ell }}x-1\right),}

we get again only one summand in

Λ ′ ( α − i k) = λ 0 α i k ∏ ℓ ∈ { 1, ⋯, v } ∖ { k } ( α i ℓ α − i k − 1). {\displaystyle \Lambda '\left(\alpha ^{-i_{k}}\right)=\lambda _{0}\alpha ^{i_{k}}\prod _{\ell \in \{1,\cdots,v\}\setminus \{k\}}\left(\alpha ^{i_{\ell }}\alpha ^{-i_{k}}-1\right).}{\displaystyle \Lambda '\left(\alpha ^{-i_{k}}\right)=\lambda _{0}\alpha ^{i_{k}}\prod _{\ell \in \{1,\cdots,v\}\setminus \{k\}}\left(\alpha ^{i_{\ell }}\alpha ^{-i_{k}}-1\right).}

So finally

e k = − α i k Ω ( α − i k) α c ⋅ i k Λ ′ ( α − i k). {\displaystyle e_{k}=-{\frac {\alpha ^{i_{k}}\Omega \left(\alpha ^{-i_{k}}\right)}{\alpha ^{c\cdot i_{k}}\Lambda '\left(\alpha ^{-i_{k}}\right)}}.}{\displaystyle e_{k}=-{\frac {\alpha ^{i_{k}}\Omega \left(\alpha ^{-i_{k}}\right)}{\alpha ^{c\cdot i_{k}}\Lambda '\left(\alpha ^{-i_{k}}\right)}}.}

This formula is advantageous when one computes the formal derivative of Λ {\displaystyle \Lambda }\Lambda form

Λ ( x) = ∑ i = 1 v λ i x i {\displaystyle \Lambda (x)=\sum _{i=1}^{v}\lambda _{i}x^{i}}{\ displaystyle \ Lambda (x) = \ сумма _ {я = 1} ^ {v} \ lambda _ {i} x ^ {i}}

yielding:

Λ ′ ( x) = ∑ i = 1 v i ⋅ λ i x i − 1, {\displaystyle \Lambda '(x)=\sum _{i=1}^{v}i\cdot \lambda _{i}x^{i-1},}{\displaystyle \Lambda '(x)=\sum _{i=1}^{v}i\cdot \lambda _{i}x^{i-1},}

where

i ⋅ x := ∑ k = 1 i x. {\displaystyle i\cdot x:=\sum _{k=1}^{i}x.}{\displaystyle i\cdot x:=\sum _{k=1}^{i}x.}

Decoding based on extended Euclidean algorithm

An alternate process of finding both the polynomial Λ and the error locator polynomial is based on Yasuo Sugiyama's adaptation of the Extended Euclidean algorithm. Correction of unreadable characters could be incorporated to the algorithm easily as well.

Let k 1,..., k k {\displaystyle k_{1},...,k_{k}}{\displaystyle k_{1},...,k_{k}}be positions of unreadable characters. One creates polynomial localising these positions Γ ( x) = ∏ i = 1 k ( x α k i − 1). {\displaystyle \Gamma (x)=\prod _{i=1}^{k}\left(x\alpha ^{k_{i}}-1\right).}{\displaystyle \Gamma (x)=\prod _{i=1}^{k}\left(x\alpha ^{k_{i}}-1\right).}Set values on unreadable positions to 0 and compute the syndromes.

As we уже определили для формулы Форни, пусть S (x) = ∑ i = 0 d - 2 s c + i x i. {\ displaystyle S (x) = \ sum _ {i = 0} ^ {d-2} s_ {c + i} x ^ {i}.}S(x)=\sum _{i=0}^{d-2}s_{c+i}x^{i}.

Давайте запустим расширенный алгоритм Евклида для определения наименьшего общего делителя многочлены S (x) Γ (x) {\ displaystyle S (x) \ Gamma (x)}S(x)\Gamma (x)и xd - 1. {\ displaystyle x ^ {d-1}.}x^{{d-1}}.Цель состоит не в том, чтобы найти наименьший общий делитель, а в том, чтобы найти многочлен r (x) {\ displaystyle r (x)}r(x)степени не выше ⌊ (d + k - 3) / 2 ⌋ {\ displaystyle \ lfloor (d + k-3) / 2 \ rfloor}\ lfloor (d + k-3) / 2 \ rfloor и многочлены a (x), b (x) {\ displaystyle a (x), b (x)}a(x),b(x)такой, что r (x) = a (x) S (x) Γ (x) + б (х) хд - 1. {\ displaystyle r (x) = a (x) S (x) \ Gamma (x) + b (x) x ^ {d-1}.}r(x)=a(x)S(x)\Gamma (x)+b(x)x^{d-1}.Низкая степень r (x) {\ displaystyle r (x)}r(x)гарантирует, что a (x) {\ displaystyle a (x)}a(x)удовлетворяет расширенному (by Γ {\ displaystyle \ Gamma}\ Gamma ), определяющие условия для Λ. {\ displaystyle \ Lambda.}\Lambda.

Определение Ξ (x) = a (x) Γ (x) {\ displaystyle \ Xi (x) = a (x) \ Gamma (x)}\Xi (x)=a(x)\Gamma (x)и используя Ξ {\ displaystyle \ Xi}\Xi вместо Λ (x) {\ displaystyle \ Lambda (x)}\Lambda (x)в формуле Фурни даст нам значения ошибок.

Основное преимущество алгоритма в том, что он тем временем вычисляет Ω (x) = S (x) Ξ (x) mod xd - 1 = r (x) {\ displaystyle \ Omega (x) = S (x) \ Xi (x) {\ bmod {x}} ^ {d-1} = r (x)}\Omega (x)=S(x)\Xi (x){\bmod {x}}^{d-1}=r(x)требуется в формуле Форни.

Объяснение процесса декодирования

Цель состоит в том, чтобы найти кодовое слово, которое минимально отличается от принятого слова на читаемых позициях. Выражая полученное слово как сумму ближайшего кодового слова и слова ошибки, мы пытаемся найти слово ошибки с минимальным количеством ненулевых символов на читаемых позициях. Синдром s i {\ displaystyle s_ {i}}s_{i}ограничивает слово ошибки условием

s i = ∑ j = 0 n - 1 e j α i j. {\ displaystyle s_ {i} = \ sum _ {j = 0} ^ {n-1} e_ {j} \ alpha ^ {ij}.}s_{i}=\sum _{j=0}^{n-1}e_{j}\alpha ^{ij}.

Мы могли бы написать эти условия отдельно или мы могли бы создать многочлен

S (x) знак равно ∑ я знак равно 0 d - 2 сбн + ixi {\ displaystyle S (x) = \ sum _ {i = 0} ^ {d-2} s_ {c + i} x ^ {i}}S(x)=\sum _{i=0}^{d-2}s_{c+i}x^{i}

и сравните коэффициенты около степеней 0 {\ displaystyle 0}{\displaystyle 0}с d - 2. {\ Displaystyle d-2.}d-2.

S (x) = {0, ⋯, d - 2} E (x) = ∑ i = 0 d - 2 ∑ j = 0 n - 1 ej α ij α cjxi. {\ Displaystyle S (Икс) {\ stackrel {\ {0, \ cdots, \, d-2 \}} {=}} E (x) = \ sum _ {i = 0} ^ {d-2} \ sum _ {j = 0} ^ {n-1} e_ {j} \ alpha ^ {ij} \ alpha ^ {cj} x ^ {i}.}{\displaystyle S(x){\stackrel {\{0,\cdots,\,d-2\}}{=}}E(x)=\sum _{i=0}^{d-2}\sum _{j=0}^{n-1}e_{j}\alpha ^{ij}\alpha ^{cj}x^{i}.}

Предположим, на позиции k есть нечитаемая буква 1, {\ displaystyle k_ {1},}k_{1},мы могли бы заменить набор синдромов {sc, ⋯, sc + d - 2} {\ displaystyle \ {s_ {c}, \ cdots, s_ {c + d-2} \}}{\displaystyle \{s_{c},\cdots,s_{c+d-2}\}}по набору синдромов {tc, ⋯, tc + d - 3} {\ displaystyle \ {t_ {c}, \ cdots, t_ { c + d-3} \}}{\displaystyle \{t_{c},\cdots,t_{c+d-3}\}}определяется уравнением ti = α k 1 si - si + 1. {\ displaystyle t_ {i} = \ alpha ^ {k_ {1}} s_ {i} -s_ {i + 1}.}t_{i}=\alpha ^{k_{1}}s_{i}-s_{i+1}.Предположим для слова ошибки все ограничения из исходного набора { sc, ⋯, sc + d - 2} {\ displaystyle \ {s_ {c}, \ cdots, s_ {c + d-2} \}}{\displaystyle \{s_{c},\cdots,s_{c+d-2}\}}удерживает синдромов, чем

ti = α k 1 si - si + 1 = α k 1 ∑ j = 0 n - 1 ej α ij - ∑ j = 0 n - 1 ej α j α ij = ∑ j = 0 n - 1 ej (α k 1 - α j) α ij. {\ displaystyle t_ {i} = \ alpha ^ {k_ {1}} s_ {i} -s_ {i + 1} = \ alpha ^ {k_ {1}} \ sum _ {j = 0} ^ {n- 1} e_ {j} \ alpha ^ {ij} - \ sum _ {j = 0} ^ {n-1} e_ {j} \ alpha ^ {j} \ alpha ^ {ij} = \ sum _ {j = 0} ^ {n-1} e_ {j} \ left (\ alpha ^ {k_ {1}} - \ alpha ^ {j} \ right) \ alpha ^ {ij}.}{\displaystyle t_{i}=\alpha ^{k_{1}}s_{i}-s_{i+1}=\alpha ^{k_{1}}\sum _{j=0}^{n-1}e_{j}\alpha ^{ij}-\sum _{j=0}^{n-1}e_{j}\alpha ^{j}\alpha ^{ij}=\sum _{j=0}^{n-1}e_{j}\left(\alpha ^{k_{1}}-\alpha ^{j}\right)\alpha ^{ij}.}

Новый набор синдромов ограничивает вектор ошибок

fj = ej (α k 1 - α j) {\ displaystyle f_ {j} = e_ {j} \ left (\ alpha ^ {k_ {1}} - \ alpha ^ {j} \ right) }{\displaystyle f_{j}=e_{j}\left(\alpha ^{k_{1}}-\alpha ^{j}\right)}

точно так же, как исходный набор синдромов ограничивал вектор ошибок ej. {\ displaystyle e_ {j}.}e_{j}.За исключением координаты k 1, {\ displaystyle k_ {1},}k_{1},, где fk 1 = 0, {\ displaystyle f_ {k_ {1}} = 0,}f_{k_{1}}=0,an fj {\ displaystyle f_ {j}}f_{j}равно нулю, если ej = 0. {\ displaystyle e_ {j} = 0.}{\displaystyle e_{j}=0.}Для определения местоположения ошибок мы могли бы изменить набор синдромов аналогичным образом, чтобы отразить все нечитаемые символы. Это сокращает набор синдромов на k. {\ displaystyle k.}k.

В полиномиальной формулировке замена синдромов задает {sc, ⋯, sc + d - 2} {\ displaystyle \ {s_ {c}, \ cdots, s_ {c + d -2} \}}{\displaystyle \{s_{c},\cdots,s_{c+d-2}\}}по набору синдромов {tc, ⋯, tc + d - 3} {\ displaystyle \ {t_ {c}, \ cdots, t_ {c + d-3} \}}{\displaystyle \{t_{c},\cdots,t_{c+d-3}\}}приводит к

T (x) = ∑ i = 0 d - 3 tc + ixi = α k 1 ∑ i = 0 d - 3 sc + ixi - ∑ i = 1 d - 2 сбн + ixi - 1. {\ Displaystyle Т (х) = \ сумма _ {я = 0} ^ {d-3} t_ {с + я} х ^ {я} = \ альфа ^ {к_ {1}} \ сумма _ {я = 0 } ^ {d-3} s_ {c + i} x ^ {i} - \ sum _ {i = 1} ^ {d-2} s_ {c + i} x ^ {i-1}.}{\displaystyle T(x)=\sum _{i=0}^{d-3}t_{c+i}x^{i}=\alpha ^{k_{1}}\sum _{i=0}^{d-3}s_{c+i}x^{i}-\sum _{i=1}^{d-2}s_{c+i}x^{i-1}.}

Следовательно,

x T (x) = {1, ⋯, d - 2} (x α k 1 - 1) S (x). {\ displaystyle xT (x) {\ stackrel {\ {1, \ cdots, \, d-2 \}} {=}} \ left (x \ alpha ^ {k_ {1}} - 1 \ right) S ( x).}{\displaystyle xT(x){\stackrel {\{1,\cdots,\,d-2\}}{=}}\left(x\alpha ^{k_{1}}-1\right)S(x).}

После замены S (x) {\ displaystyle S (x)}S(x)на S (x) Γ (x) {\ displaystyle S (x) \ Gamma (x)}S(x)\Gamma (x), потребуется уравнение для коэффициентов около степеней k, ⋯, d - 2. {\ displaystyle k, \ cdots, d-2.}{\displaystyle k,\cdots,d-2.}

Можно Рассмотрите возможность поиска ошибочных позиций с точки зрения устранения влияния заданных позиций так же, как и для нечитаемых символов. Если мы нашли такие позиции v {\ displaystyle v}v, устранение их влияния приводит к получению набора синдромов, состоящего из всех нулей, то существует вектор ошибок с ошибками только по этим координатам. Если Λ (x) {\ displaystyle \ Lambda (x)}\Lambda (x)обозначает многочлен, исключающий влияние этих координат, мы получаем

S (x) Γ (x) Λ (x) знак равно {к + v, ⋯, d - 2} 0. {\ displaystyle S (x) \ Gamma (x) \ Lambda (x) {\ stackrel {\ {k + v, \ cdots, d-2 \}} {=}} 0.}{\displaystyle S(x)\Gamma (x)\Lambda (x){\stackrel {\{k+v,\cdots,d-2\}}{=}}0.}

В алгоритме Евклида мы пытаемся исправить не более 1 2 (d - 1 - k) {\ displaystyle {\ tfrac {1} {2}} (d-1- k)}{\displaystyle {\tfrac {1}{2}}(d-1-k)}ошибок (на читаемых позициях), потому что с большим количеством ошибок может быть больше кодовых слов на том же расстоянии от полученного слова. Следовательно, для Λ (x) {\ displaystyle \ Lambda (x)}\Lambda (x), которое мы ищем, уравнение должно выполняться для коэффициентов, близких к степеням, начиная с

k + ⌊ 1 2 (d - 1 - л) ⌋. {\ displaystyle k + \ left \ lfloor {\ frac {1} {2}} (d-1-k) \ right \ rfloor.}{\displaystyle k+\left\lfloor {\frac {1}{2}}(d-1-k)\right\rfloor.}

В формуле Форни, Λ (x) {\ displaystyle \ Lambda (x)}\Lambda (x)можно умножить на скаляр, что даст тот же результат.

Может случиться так, что алгоритм Евклида найдет Λ (x) {\ displaystyle \ Lambda (x)}\Lambda (x)со степенью выше, чем 1 2 (d - 1 - k) {\ displaystyle {\ tfrac {1} {2}} (d-1-k)}{\displaystyle {\tfrac {1}{2}}(d-1-k)}с числом различных корней, равным его степени, где формула Фурни могла бы исправить ошибки в все его корни, в любом случае исправление такого количества ошибок может быть рискованным (особенно без других ограничений на полученное слово). Обычно после получения Λ (x) {\ displaystyle \ Lambda (x)}\Lambda (x)более высокой степени мы решаем не исправлять ошибки. Исправление может завершиться неудачно, если Λ (x) {\ displaystyle \ Lambda (x)}\Lambda (x)имеет корни с большей кратностью или число корней меньше его степени. Отказ также может быть обнаружен по формуле Форни, возвращающей ошибку вне переданного алфавита.

Исправьте ошибки

Используя значения ошибок и местоположение ошибки, исправьте ошибки и сформируйте скорректированный кодовый вектор путем вычитания значений ошибок в местах ошибки.

Примеры декодирования

Декодирование двоичного кода без нечитаемых символов

Рассмотрим код BCH в GF (2) с d = 7 {\ displaystyle d = 7}d=7и g (x) = x 10 + x 8 + x 5 + x 4 + x 2 + x + 1 {\ displaystyle g (x) = x ^ {10} + x ^ { 8} + x ^ {5} + x ^ {4} + x ^ {2} + x + 1}g(x)=x^{10}+x^{8}+x^{5}+x^{4}+x^{2}+x+1. (Это используется в QR-кодах.) Пусть передаваемое сообщение будет [1 1 0 1 1], или в полиномиальной нотации M (x) = x 4 + x 3 + x + 1. {\ displaystyle M (x) = x ^ {4} + x ^ {3} + x + 1.}M(x)=x^{4}+x^{3}+x+1.Символы «контрольной суммы» вычисляются путем деления x 10 M ( x) {\ displaystyle x ^ {10} M (x)}x ^ {10} M (x) по g (x) {\ displaystyle g (x)}g(x)и взяв остаток, в результате x 9 + x 4 + x 2 {\ displaystyle x ^ {9} + x ^ {4} + x ^ {2}}x^{9}+x^{4}+x^{2}или [1 0 0 0 0 1 0 1 0 0 ]. Они добавляются к сообщению, поэтому переданное кодовое слово - [1 1 0 1 1 1 0 0 0 0 1 0 1 0 0].

Теперь представьте, что при передаче есть две битовые ошибки, поэтому полученное кодовое слово равно [1 0 0 1 1 1 0 0 0 1 1 0 1 0 0]. В полиномиальной записи:

R (x) = C (x) + x 13 + x 5 = x 14 + x 11 + x 10 + x 9 + x 5 + x 4 + x 2 {\ displaystyle R (x) = C (x) + x ^ {13} + x ^ {5} = x ^ {14} + x ^ {11} + x ^ {10} + x ^ {9} + x ^ {5} + x ^ {4} + x ^ {2}}R (x) = C (x) + x ^ {13} + x ^ {5} = x ^ {14} + x ^ {11} + x ^ {10} + x ^ {9} + x ^ {5} + x ^ {4} + x ^ {2}

Чтобы исправить ошибки, сначала вычислите синдромы. Взяв α = 0010, {\ displaystyle \ alpha = 0010,}\alpha =0010,, мы имеем s 1 = R (α 1) = 1011, {\ displaystyle s_ {1} = R (\ альфа ^ {1}) = 1011,}s_ {1} = R (\ alpha ^ {1}) = 1011, s 2 = 1001, {\ displaystyle s_ {2} = 1001,}s_{2}=1001,s 3 = 1011, {\ displaystyle s_ {3} = 1011,}s_{3}=1011,s 4 = 1101, {\ displaystyle s_ {4} = 1101,}s_{4}=1101,s 5 = 0001, {\ displaystyle s_ {5} = 0001,}s_{5}=0001,и s 6 = 1001. {\ displaystyle s_ {6} = 1001.}s_{6}=1001.Затем примените процедуру Петерсона путем сокращения строк следующей расширенной матрицы.

[S 3 × 3 | C 3 × 1] = [с 1 с 2 с 3 с 4 с 2 с 3 с 4 с 5 с 3 с 4 с 5 с 6] = [1011 1001 1011 1101 1001 1011 1101 0001 1011 1101 0001 1001] ⇒ [0001 0000 1000 0111 0000 0001 1011 0001 0000 0000 0000 0000] {\ displaystyle \ left [S_ {3 \ times 3} | C_ {3 \ times 1} \ right] = {\ begin {bmatrix} s_ {1} s_ {2 } s_ {3} s_ {4} \\ s_ {2} s_ {3} s_ {4} s_ {5} \\ s_ {3} s_ {4} s_ {5} s_ {6} \ end {bmatrix} } = {\ begin {bmatrix} 1011 1001 1011 1101 \\ 1001 1011 1101 0001 \\ 1011 1101 0001 1001 \ end {bmatrix}} \ Rightarrow {\ begin {bmatrix} 0001 0000 1000 0111 \\ 0000 0001 0001 0001 0001 0001 0001 0001 0001 0001 \\ 000075} к концу b строка, S 3 × 3 является сингулярной, что неудивительно, поскольку только две ошибки были введены в кодовое слово. Однако верхний левый угол матрицы идентичен [S 2 × 2 | C 2 × 1 ], что дает решение λ 2 = 1000, {\ displaystyle \ lambda _ {2} = 1000,}\lambda _{2}=1000,λ 1 = 1011. {\ displaystyle \ lambda _ {1} = 1011.}\lambda _{1}=1011.Результирующий полином локатора ошибок равен Λ (x) = 1000 x 2 + 1011 x + 0001, {\ displaystyle \ Lambda (x) = 1000x ^ {2} + 1011x + 0001,}\Lambda (x)=1000x^{2}+1011x+0001,, у которого есть нули в 0100 = α - 13 {\ displaystyle 0100 = \ alpha ^ {- 13}}0100=\alpha ^{-13}и 0111 = α - 5. {\ displaystyle 0111 = \ alpha ^ {- 5}.}0111=\alpha ^{-5}.Показатели степени α {\ displaystyle \ alpha}\alpha соответствуют местоположениям ошибок. В этом примере нет необходимости вычислять значения ошибок, поскольку единственное возможное значение - 1.

Декодирование с нечитаемыми символами

Предположим тот же сценарий, но полученное слово содержит два нечитаемых символа [1 0 0? 1 1? 0 0 1 1 0 1 0 0]. Мы заменяем нечитаемые символы нулями при создании полинома, отражающего их позиции Γ (x) = (α 8 x - 1) (α 11 x - 1). {\ displaystyle \ Gamma (x) = \ left (\ alpha ^ {8} x-1 \ right) \ left (\ alpha ^ {11} x-1 \ right).}{\ displaystyle \ Gamma (x) = \ left (\ alpha ^ {8} x-1 \ right) \ left (\ alpha ^ {11} x-1 \ right).} Мы вычисляем синдромы s 1 = α - 7, s 2 = α 1, s 3 = α 4, s 4 = α 2, s 5 = α 5, {\ displaystyle s_ {1} = \ alpha ^ {- 7}, s_ {2} = \ alpha ^ {1}, s_ {3} = \ alpha ^ {4}, s_ {4} = \ alpha ^ {2}, s_ {5} = \ alpha ^ {5},}{\displaystyle s_{1}=\alpha ^{-7},s_{2}=\alpha ^{1},s_{3}=\alpha ^{4},s_{4}=\alpha ^{2},s_{5}=\alpha ^{5},}и s 6 = α - 7. {\ displaystyle s_ {6} = \ alpha ^ {- 7}.}s_{6}=\alpha ^{-7}.(Использование логарифмической записи, не зависящей от изоморфизмов GF (2). Для проверки вычислений мы можем использовать то же представление для сложения, что и было использованный в предыдущем примере. Шестнадцатеричное описание степеней α {\ displaystyle \ alpha}\alpha : последовательно 1,2,4,8,3,6, C, B, 5, A, 7, E, F, D, 9 со сложением на основе побитового xor.)

Сделаем синдромный многочлен

S (x) = α - 7 + α 1 x + α 4 x 2 + α 2 x 3 + α 5 x 4 + α - 7 x 5, {\ displaystyle S (x) = \ alpha ^ {- 7} + \ alpha ^ {1} x + \ alpha ^ {4} x ^ {2} + \ alpha ^ {2} x ^ {3} + \ alpha ^ {5} x ^ {4} + \ alpha ^ {- 7} x ^ {5},}S(x)=\alpha ^{-7}+\alpha ^{1}x+\alpha ^{4}x^{2}+\alpha ^{2}x^{3}+\alpha ^{5}x^{4}+\alpha ^{-7}x^{5},

вычислить

S (x) Γ (Икс) знак равно α - 7 + α 4 Икс + α - 1 Икс 2 + α 6 Икс 3 + α - 1 Икс 4 + α 5 Икс 5 + α 7 Икс 6 + α - 3 Икс 7. {\ Displaystyle S (x) \ Gamma (x) = \ alpha ^ {- 7} + \ alpha ^ {4} x + \ alpha ^ {- 1} x ^ {2} + \ alpha ^ {6} x ^ { 3} + \ alpha ^ {- 1} x ^ {4} + \ alpha ^ {5} x ^ {5} + \ alpha ^ {7} x ^ {6} + \ alpha ^ {- 3} x ^ { 7}.}S (x) \ Gamma (x) = \alpha ^{-7}+\alpha ^{4}x+\alpha ^{-1}x^{2}+\alpha ^{6}x^{3}+\alpha ^{-1}x^{ 4}+\alpha ^{5}x^{5}+\alpha ^{7}x^{6}+\alpha ^{-3}x^{7}.

Запустите расширенный алгоритм Евклида:

(S (x) Γ (x) x 6) = (α - 7 + α 4 x + α - 1 x 2 + α 6 x 3 + α - 1 x 4 + α 5 x 5 + α 7 x 6 + α - 3 x 7 x 6) = (α 7 + α - 3 x 1 1 0) (x 6 α - 7 + α 4 x + α - 1 x 2 + α 6 x 3 + α - 1 x 4 + α 5 x 5 + 2 α 7 x 6 + 2 α - 3 x 7) = (α 7 + α - 3 x 1 1 0) (α 4 + α - 5 x 1 1 0) (α - 7 + α 4 x + α - 1 x 2 + α 6 x 3 + α - 1 x 4 + α 5 x 5 α - 3 + (α - 7 + α 3) x + (α 3 + α - 1) x 2 + (α - 5 + α - 6) x 3 + (α 3 + α 1) x 4 + 2 α - 6 x 5 + 2 x 6) = ((1 + α - 4) + (α 1 + α 2) x + α 7 x 2 α 7 + α - 3 x α 4 + α - 5 x 1) (α - 7 + α 4 x + α - 1 x 2 + α 6 x 3 + α - 1 x 4 + α 5 x 5 α - 3 + α - 2 x + α 0 x 2 + α - 2 x 3 + α - 6 x 4) = (α - 3 + α 5 x + α 7 x 2 α 7 + α - 3 x α 4 + α - 5 x 1) (α - 5 + α - 4 x 1 1 0) (α - 3 + α - 2 x + α 0 x 2 + α - 2 х 3 + α - 6 х 4 (α 7 + α - 7) + (2 α - 7 + α 4) x + (α - 5 + α - 6 + α - 1) x 2 + (α - 7 + α - 4 + α 6) x 3 + ( α 4 + α - 6 + α - 1) x 4 + 2 α 5 x 5) = (α 7 x + α 5 x 2 + α 3 x 3 α - 3 + α 5 x + α 7 x 2 α 3 + α - 5 x + α 6 x 2 α 4 + α - 5 x) (α - 3 + α - 2 x + α 0 x 2 + α - 2 x 3 + α - 6 x 4 α - 4 + α 4 x + α 2 x 2 + α - 5 x 3). {\ Displaystyle {\ begin {align} {\ begin {pmatrix} S (x) \ Gamma (x) \\ x ^ {6} \ end {pmatrix}} \\ [6pt] = {} {\ begin {pmatrix} \ alpha ^ {- 7} + \ alpha ^ {4} x + \ alpha ^ {- 1} x ^ {2} + \ alpha ^ {6} x ^ {3} + \ alpha ^ {- 1} x ^ {4} + \ alpha ^ {5} x ^ {5} + \ alpha ^ {7} x ^ {6} + \ alpha ^ {- 3} x ^ {7} \\ x ^ {6} \ конец {pmatrix}} \\ [6pt] = {} {\ begin {pmatrix} \ alpha ^ {7} + \ alpha ^ {- 3} x 1 \\ 1 0 \ end {pmatrix}} {\ begin {pmatrix} x ^ {6} \\\ alpha ^ {- 7} + \ alpha ^ {4} x + \ alpha ^ {- 1} x ^ {2} + \ alpha ^ {6} x ^ {3} + \ alpha ^ {-1} x ^ {4} + \ alpha ^ {5} x ^ {5} +2 \ alpha ^ {7} x ^ {6} +2 \ alpha ^ {- 3} x ^ {7} \ end {pmatrix}} \\ [6pt] = {} {\ begin {pmatrix} \ alpha ^ {7} + \ alpha ^ {- 3} x 1 \\ 1 0 \ end {pmatrix}} {\ begin {pmatrix} \ alpha ^ {4} + \ alpha ^ {- 5} x 1 \\ 1 0 \ end {pmatrix}} \\ \ qquad {\ begin {pmatrix} \ alpha ^ {- 7} + \ alpha ^ {4} x + \ альфа ^ {- 1} x ^ {2} + \ alpha ^ {6} x ^ {3} + \ alpha ^ {- 1} x ^ {4} + \ alpha ^ {5} x ^ {5} \\ \ alpha ^ {- 3} + \ left (\ alpha ^ {- 7} + \ alpha ^ {3} \ right) x + \ left (\ alpha ^ {3} + \ alpha ^ {- 1} \ right) x ^ {2} + \ left (\ alpha ^ {- 5} + \ alpha ^ {- 6} \ right) x ^ {3} + \ left (\ alpha ^ {3} + \ alpha ^ {1} \ right) x ^ {4} +2 \ alpha ^ {- 6} x ^ {5} + 2x ^ {6} \ end {pmatrix}} \\ [6pt] = {} {\ begin { pmatrix} \ left (1+ \ alpha ^ {- 4} \ right) + \ left (\ alpha ^ {1} + \ alpha ^ {2} \ right) x + \ alpha ^ {7} x ^ {2} \ alpha ^ {7} + \ alpha ^ {- 3} x \\\ alpha ^ {4} + \ alpha ^ {- 5} x 1 \ end {pmatrix}} {\ begin {pmatrix} \ alpha ^ {- 7 } + \ alpha ^ {4} x + \ alpha ^ {- 1} x ^ {2} + \ alpha ^ {6} x ^ {3} + \ alpha ^ {- 1} x ^ {4} + \ alpha ^ {5} x ^ {5} \\\ alpha ^ {- 3} + \ alpha ^ {- 2} x + \ alpha ^ {0} x ^ {2} + \ alpha ^ {- 2} x ^ {3} + \ alpha ^ {- 6} x ^ {4} \ end {pmatrix}} \\ [6pt] = {} {\ begin {pmatrix} \ alpha ^ {- 3} + \ alpha ^ {5} x + \ alpha ^ {7} x ^ {2} \ alpha ^ {7} + \ alpha ^ {- 3} x \\\ alpha ^ {4} + \ alpha ^ {- 5} x 1 \ end {pmatrix}} { \ begin {pmatrix} \ alpha ^ {- 5} + \ alpha ^ {- 4} x 1 \\ 1 0 \ end {pmatrix}} \\ \ qquad {\ begin {pmatrix} \ alpha ^ {- 3} + \ alpha ^ {- 2} x + \ alpha ^ {0} x ^ {2} + \ alpha ^ {- 2} x ^ {3} + \ alpha ^ {- 6} x ^ {4} \\\ left (\ альфа ^ {7} + \ alpha ^ {- 7} \ right) + \ left (2 \ alpha ^ {- 7} + \ alpha ^ {4} \ right) x + \ left (\ alpha ^ {- 5} + \ alpha ^ {- 6} + \ alpha ^ {- 1} \ right) x ^ {2} + \ left (\ alpha ^ {- 7} + \ alpha ^ {- 4} + \ alpha ^ {6} \ вправо) x ^ {3} + \ left (\ alpha ^ {4} + \ alpha ^ {- 6} + \ alpha ^ {- 1} \ right) x ^ {4} +2 \ alpha ^ {5} x ^ {5} \ end {pmatrix}} \\ [6pt] = {} {\ begin {pmatrix} \ alpha ^ {7} x + \ alpha ^ { 5} x ^ {2} + \ alpha ^ {3} x ^ {3} \ alpha ^ {- 3} + \ alpha ^ {5} x + \ alpha ^ {7} x ^ {2} \\\ альфа ^ {3} + \ alpha ^ {- 5} x + \ alpha ^ {6} x ^ {2} \ alpha ^ {4} + \ alpha ^ {- 5} x \ end {pmatrix}} {\ begin { pmatrix} \ alpha ^ {- 3} + \ alpha ^ {- 2} x + \ alpha ^ {0} x ^ {2} + \ alpha ^ {- 2} x ^ {3} + \ alpha ^ {- 6} x ^ {4} \\\ alpha ^ {- 4} + \ alpha ^ {4} x + \ alpha ^ {2} x ^ {2} + \ alpha ^ {- 5} x ^ {3} \ end {pmatrix }}. \ end {align}}}{\displaystyle {\begin{aligned}{\begin{pmatrix}S(x)\Gamma (x)\\x^{6}\end{pmatrix}}\\[6pt]={}{\begin{pmatrix}\alpha ^{-7}+\alpha ^{4}x+\alpha ^{-1}x^{2}+\alpha ^{6}x^{3}+\alpha ^{-1}x^{4}+\alpha ^{5}x^{5}+\alpha ^{7}x^{6}+\alpha ^{-3}x^{7}\\x^{6}\end{pmatrix}}\\[6pt]={}{\begin{pmatrix}\alpha ^{7}+\alpha ^{-3}x1\\10\end{pmatrix}}{\begin{pmatrix}x^{6}\\\alpha ^{-7}+\alpha ^{4}x+\alpha ^{-1}x^{2}+\alpha ^{6}x^{3}+\alpha ^{-1}x^{4}+\alpha ^{5}x^{5}+2\alpha ^{7}x^{6}+2\alpha ^{-3}x^{7}\end{pmatrix}}\\[6pt]={}{\begin{pmatrix}\alpha ^{7}+\alpha ^{-3}x1\\10\end{pmatrix}}{\begin{pmatrix}\alpha ^{4}+\alpha ^{-5}x1\\10\end{pmatrix}}\\\qquad {\begin{pmatrix}\alpha ^{-7}+\alpha ^{4}x+\alpha ^{-1}x^{2}+\alpha ^{6}x^{3}+\alpha ^{-1}x^{4}+\alpha ^{5}x^{5}\\\alpha ^{-3}+\left(\alpha ^{-7}+\alpha ^{3}\right)x+\left(\alpha ^{3}+\alpha ^{-1}\right)x^{2}+\left(\alpha ^{-5}+\alpha ^{-6}\right)x^{3}+\left(\alpha ^{3}+\alpha ^{1}\right)x^{4}+2\alpha ^{-6}x^{5}+2x^{6}\end{pmatrix}}\\[6pt]={}{\begin{pmatrix}\left(1+\alpha ^{-4}\right)+\left(\alpha ^{1}+\alpha ^{2}\right)x+\alpha ^{7}x^{2}\alpha ^{7}+\alpha ^{-3}x\\\alpha ^{4}+\alpha ^{-5}x1\end{pmatrix}}{\begin{pmatrix}\alpha ^{-7}+\alpha ^{4}x+\alpha ^{-1}x^{2}+\alpha ^{6}x^{3}+\alpha ^{-1}x^{4}+\alpha ^{5}x^{5}\\\alpha ^{-3}+\alpha ^{-2}x+\alpha ^{0}x^{2}+\alpha ^{-2}x^{3}+\alpha ^{-6}x^{4}\end{pmatrix}}\\[6pt]={}{\begin{pmatrix}\alpha ^{-3}+\alpha ^{5}x+\alpha ^{7}x^{2}\alpha ^{7}+\alpha ^{-3}x\\\alpha ^{4}+\alpha ^{-5}x1\end{pmatrix}}{\begin{pmatrix}\alpha ^{-5}+\alpha ^{-4}x1\\10\end{pmatrix}}\\\qquad {\begin{pmatrix}\alpha ^{-3}+\alpha ^{-2}x+\alpha ^{0}x^{2}+\alpha ^{-2}x^{3}+\alpha ^{-6}x^{4}\\\left(\alpha ^{7}+\alpha ^{-7}\right)+\left(2\alpha ^{-7}+\alpha ^{4}\right)x+\left(\alpha ^{-5}+\alpha ^{-6}+\alpha ^{-1}\right)x^{2}+\left(\alpha ^{-7}+\alpha ^{-4}+\alpha ^{6}\right)x^{3}+\left(\alpha ^{4}+\alpha ^{-6}+\alpha ^{-1}\right)x^{4}+2\alpha ^{5}x^{5}\end{pmatrix}}\\[6pt]={}{\begin{pmatrix}\alpha ^{7}x+\alpha ^{5}x^{2}+\alpha ^{3}x^{3}\alpha ^{-3}+\alpha ^{5}x+\alpha ^{7}x^{2}\\\alpha ^{3}+\alpha ^{-5}x+\alpha ^{6}x^{2}\alpha ^{4}+\alpha ^{-5}x\end{pmatrix}}{\begin{pmatrix}\alpha ^{-3}+\alpha ^{-2}x+\alpha ^{0}x^{2}+\alpha ^{-2}x^{3}+\alpha ^{-6}x^{4}\\\alpha ^{-4}+\alpha ^{4}x+\alpha ^{2}x^{2}+\alpha ^{-5}x^{3}\end{pmatrix}}.\end{aligned}}}

Мы достигли полинома степени не выше 3, а как

(- (α 4 + α - 5 x) α - 3 + α 5 x + α 7 x 2 α 3 + α - 5 x + α 6 x 2 - (α 7 x + α 5 x 2 + α 3 x 3)) (α 7 x + α 5 x 2 + α 3 x 3 α - 3 + α 5). Икс + α 7 Икс 2 α 3 + α - 5 Икс + α 6 Икс 2 α 4 + α - 5 Икс) = (1 0 0 1), {\ Displaystyle {\ begin {pmatrix} - \ left (\ alpha ^ {4} + \ alpha ^ {- 5} x \ right) \ alpha ^ {- 3} + \ alpha ^ {5} x + \ alpha ^ {7} x ^ {2} \\\ alpha ^ {3} + \ alpha ^ {- 5} x + \ alpha ^ {6} x ^ {2} - \ left (\ alpha ^ {7} x + \ alpha ^ {5} x ^ {2} + \ alpha ^ {3} x ^ {3} \ right) \ end {pmatrix}} {\ begin {pmatrix} \ alpha ^ {7} x + \ alpha ^ {5} x ^ {2} + \ alpha ^ {3} x ^ {3} \ alpha ^ {- 3} + \ alpha ^ {5} x + \ alpha ^ {7} x ^ {2} \\\ alpha ^ {3} + \ alpha ^ {- 5} x + \ alpha ^ {6} х ^ {2} \ а lpha ^ {4} + \ alpha ^ {- 5} x \ end {pmatrix}} = {\ begin {pmatrix} 1 0 \\ 0 1 \ end {pmatrix}},}{\ displaystyle {\ begin {pmatri x} - \ left (\ alpha ^ {4} + \ alpha ^ {- 5} x \ right) \ alpha ^ {- 3} + \ alpha ^ {5} x + \ alpha ^ {7} x ^ {2 } \\\ alpha ^ {3} + \ alpha ^ {- 5} x + \ alpha ^ {6} x ^ {2} - \ left (\ alpha ^ {7} x + \ alpha ^ {5} x ^ { 2} + \ alpha ^ {3} x ^ {3} \ right) \ end {pmatrix}} {\ begin {pmatrix} \ alpha ^ {7} x + \ alpha ^ {5} x ^ {2} + \ alpha ^ {3} x ^ {3} \ alpha ^ {- 3} + \ alpha ^ {5} x + \ alpha ^ {7} x ^ {2} \\\ alpha ^ {3} + \ alpha ^ {- - 5} x + \ alpha ^ {6} x ^ {2} \ alpha ^ {4} + \ alpha ^ {- 5} x \ end {pmatrix}} = {\ begin {pmatrix} 1 0 \\ 0 1 \ end { pmatrix}},}

получаем

(- ( α 4 + α - 5 x) α - 3 + α 5 x + α 7 x 2 α 3 + α - 5 x + α 6 x 2 - (α 7 x + α 5 x 2 + α 3 x 3)) ( S (x) Γ (x) x 6) = (α - 3 + α - 2 x + α 0 x 2 + α - 2 x 3 + α - 6 x 4 α - 4 + α 4 x + α 2 x 2 + α - 5 х 3). {\ displaystyle {\ begin {pmatrix} - \ left (\ alpha ^ {4} + \ alpha ^ {- 5} x \ right) \ alpha ^ {- 3} + \ alpha ^ {5} x + \ alpha ^ {7} x ^ {2} \\\ alpha ^ {3} + \ alpha ^ {- 5} x + \ alpha ^ {6} x ^ {2} - \ left (\ alpha ^ {7} x + \ alpha ^ {5} x ^ {2} + \ alpha ^ {3} x ^ {3} \ right) \ end {pmatrix}} {\ begin {pmatrix} S (x) \ Gamma (x) \\ x ^ { 6} \ end {pmatrix}} = {\ begin {pmatrix} \ alpha ^ {- 3} + \ alpha ^ {- 2} x + \ alpha ^ {0} x ^ {2} + \ alpha ^ {- 2} x ^ {3} + \ alpha ^ {- 6} x ^ {4} \\\ alpha ^ {- 4} + \ alpha ^ {4} x + \ alpha ^ {2} x ^ {2} + \ alpha ^ {-5} x ^ {3} \ end {pmatrix}}.}{\displaystyle {\begin{pmatrix}-\left(\alpha ^{4}+\alpha ^{-5}x\right)\alpha ^{-3}+\alpha ^{5}x+\alpha ^{7}x^{2}\\\alpha ^{3}+\alpha ^{-5}x+\alpha ^{6}x^{2}-\left(\alpha ^{7}x+\alpha ^{5}x^{2}+\alpha ^{3}x^{3}\right)\end{pmatrix}}{\begin{pmatrix}S(x)\Gamma (x)\\x^{6}\end{pmatrix}}={\begin{pmatrix}\alpha ^{-3}+\alpha ^{-2}x+\alpha ^{0}x^{2}+\alpha ^{-2}x^{3}+\alpha ^{-6}x^{4}\\\alpha ^{-4}+\alpha ^{4}x+\alpha ^{2}x^{2}+\alpha ^{-5}x^{3}\end{pmatrix}}.}

Следовательно,

S (x) Γ (x) (α 3 + α - 5 x + α 6 x 2) - (α 7 x + α 5 x 2 + α 3 x 3) x 6 = α - 4 + α 4 x + α 2 x 2 + α - 5 x 3. {\ Displaystyle S (x) \ Gamma (x) \ left (\ alpha ^ {3} + \ alpha ^ {- 5} x + \ alpha ^ {6} x ^ {2} \ right) - \ left (\ alpha ^ {7} x + \ alpha ^ {5} x ^ {2} + \ alpha ^ {3} x ^ {3} \ right) x ^ {6} = \ alpha ^ {- 4} + \ alpha ^ {4 } x + \ alpha ^ {2} x ^ {2} + \ alpha ^ {- 5} x ^ {3}.}{\displaystyle S(x)\Gamma (x)\left(\alpha ^{3}+\alpha ^{-5}x+\alpha ^{6}x^{2}\right)-\left(\alpha ^{7}x+\alpha ^{5}x^{2}+\alpha ^{3}x^{3}\right)x^{6}=\alpha ^{-4}+\alpha ^{4}x+\alpha ^{2}x^{2}+\alpha ^{-5}x^{3}.}

Пусть Λ (x) = α 3 + α - 5 x + α 6 х 2. {\ displaystyle \ Lambda (x) = \ alpha ^ {3} + \ alpha ^ {- 5} x + \ alpha ^ {6} x ^ {2}.}{\displaystyle \Lambda (x)=\alpha ^{3}+\alpha ^{-5}x+\alpha ^{6}x^{2}.}Не волнуйтесь, что λ 0 ≠ 1. {\ displaystyle \ lambda _ {0} \ neq 1.}\lambda _{0}\neq 1.Найти корень Λ с помощью грубой силы. {\ displaystyle \ Lambda.}\Lambda.Корни: α 2, {\ displaystyle \ alpha ^ {2},}\alpha ^{2},и α 10 {\ displaystyle \ alpha ^ {10}}\alpha ^{10}(найдя, например, α 2 {\ displaystyle \ alpha ^ {2}}\alpha ^{2}, мы можем разделить Λ {\ displaystyle \ Lambda}\Lambda соответствующим мономом (x - α 2) {\ displaystyle \ left (x- \ alpha ^ {2} \ right)}{\displaystyle \left(x-\alpha ^{2}\right)}, и корень полученного монома может быть нашел легко).

Пусть

Ξ (x) = Γ (x) Λ (x) = α 3 + α 4 x 2 + α 2 x 3 + α - 5 x 4 Ω (x) = S (x) Ξ (Икс) ≡ α - 4 + α 4 Икс + α 2 Икс 2 + α - 5 Икс 3 по модулю Икс 6 {\ Displaystyle {\ begin {align} \ Xi (x) = \ Gamma (x) \ Lambda (x) = \ alpha ^ {3} + \ alpha ^ {4} x ^ {2} + \ alpha ^ {2} x ^ {3} + \ alpha ^ {- 5} x ^ {4} \\\ Омега (x) = S (x) \ Xi (x) \ Equiv \ alpha ^ {- 4} + \ alpha ^ {4} x + \ alpha ^ {2} x ^ {2} + \ alpha ^ {- 5 } x ^ {3} {\ bmod {x ^ {6}}} \ end {align}}}{\displaystyle {\begin{aligned}\Xi (x)=\Gamma (x)\Lambda (x)=\alpha ^{3}+\alpha ^{4}x^{2}+\alpha ^{2}x^{3}+\alpha ^{-5}x^{4}\\\Omega (x)=S(x)\Xi (x)\equiv \alpha ^{-4}+\alpha ^{4}x+\alpha ^{2}x^{2}+\alpha ^{-5}x^{3}{\bmod {x^{6}}}\end{aligned}}}

Давайте искать значения ошибок по формуле

ej = - Ω (α - ij) Ξ ′ ( α - ij), {\ displaystyle e_ {j} = - {\ frac {\ Omega \ left (\ alpha ^ {- i_ {j}} \ right)} {\ Xi '\ left (\ alpha ^ {- i_ {j}} \ right)}},}{\displaystyle e_{j}=-{\frac {\Omega \left(\alpha ^{-i_{j}}\right)}{\Xi '\left(\alpha ^{-i_{j}}\right)}},}

где α - ij {\ displaystyle \ alpha ^ {- i_ {j}}}\ alpha ^ {- i_ {j}} - корни Ξ (x). {\ Displaystyle \ Xi (x).}\Xi (x).Ξ ′ (x) = α 2 x 2. {\ displaystyle \ Xi '(x) = \ alpha ^ {2} x ^ {2}.}\Xi '(x)=\alpha ^{2}x^{2}.Мы получаем

e 1 = - Ω (α 4) Ξ ′ (α 4) = α - 4 + α - 7 + α - 5 + α 7 α - 5 = α - 5 α - 5 = 1 e 2 = - Ω (α 7) Ξ ′ (α 7) = α - 4 + α - 4 + α 1 + α 1 α 1 = 0 e 3 = - Ω (α 10) Ξ ′ (α 10) = α - 4 + α - 1 + α 7 + α - 5 α 7 = α 7 α 7 = 1 e 4 Знак равно - Ω (α 2) Ξ ′ (α 2) = α - 4 + α 6 + α 6 + α 1 α 6 = α 6 α 6 = 1 {\ Displaystyle {\ begin {align} e_ {1} = - {\ frac {\ Omega (\ alpha ^ {4})} {\ Xi '(\ alpha ^ {4})}} = {\ frac {\ alpha ^ {- 4} + \ alpha ^ {- 7} + \ alpha ^ {- 5} + \ alpha ^ {7}} {\ alpha ^ {- 5}}} = {\ frac {\ alpha ^ {- 5}} {\ alpha ^ {- 5}}} = 1 \\ e_ {2} = - {\ frac {\ Omega (\ alpha ^ {7})} {\ Xi '(\ alpha ^ {7})}} = {\ frac {\ alpha ^ {- 4 } + \ alpha ^ {- 4} + \ alpha ^ {1} + \ alpha ^ {1}} {\ alpha ^ {1}}} = 0 \\ e_ {3} = - {\ frac {\ Omega (\ alpha ^ {10})} {\ Xi '(\ alpha ^ {10})}} = {\ frac {\ alpha ^ {- 4} + \ alpha ^ {- 1} + \ alpha ^ {7} + \ alpha ^ {- 5}} {\ alpha ^ {7}}} = {\ frac {\ alpha ^ {7}} {\ alpha ^ {7}}} = 1 \\ e_ {4} = - {\ frac {\ Omega (\ alpha ^ {2})} {\ Xi '(\ alpha ^ {2})}} = {\ frac {\ alpha ^ {- 4} + \ alpha ^ {6} + \ альфа ^ {6} + \ alpha ^ {1}} {\ alpha ^ {6}}} = {\ frac {\ alpha ^ {6}} {\ alpha ^ {6}}} = 1 \ end {align}}}{\displaystyle {\begin{aligned}e_{1}=-{\frac {\Omega (\alpha ^{4})}{\Xi '(\alpha ^{4})}}={\frac {\alpha ^{-4}+\alpha ^{-7}+\alpha ^{-5}+\alpha ^{7}}{\alpha ^{-5}}}={\frac {\alpha ^{-5}}{\alpha ^{-5}}}=1\\e_{2}=-{\frac {\Omega (\alpha ^{7})}{\Xi '(\alpha ^{7})}}={\frac {\alpha ^{-4}+\alpha ^{-4}+\alpha ^{1}+\alpha ^{1}}{\alpha ^{1}}}=0\\e_{3}=-{\frac {\Omega (\alpha ^{10})}{\Xi '(\alpha ^{10})}}={\frac {\alpha ^{-4}+\alpha ^{-1}+\alpha ^{7}+\alpha ^{-5}}{\alpha ^{7}}}={\frac {\alpha ^{7}}{\alpha ^{7}}}=1\\e_{4}=-{\frac {\Omega (\alpha ^{2})}{\Xi '(\alpha ^{2})}}={\frac {\alpha ^{-4}+\alpha ^{6}+\alpha ^{6}+\alpha ^{1}}{\alpha ^{6}}}={\frac {\alpha ^{6}}{\alpha ^{6}}}=1\end{aligned}}}

Факт, что e 3 = e 4 = 1, {\ displaystyle e_ {3} = e_ {4} = 1,}e_{3}=e_{4}=1,не должно вызывать удивления.

Таким образом, исправленный код - [1 1 0 1 1 1 0 0 0 0 1 0 1 0 0].

Декодирование с нечитаемыми символами с небольшим количеством ошибок

Покажем поведение алгоритма для случая с небольшим количеством ошибок. Пусть полученное слово [1 0 0? 1 1? 0 0 0 1 0 1 0 0].

Снова замените нечитаемые символы нулями при создании полинома, отражающего их положение Γ (x) = (α 8 x - 1) (α 11 x - 1). {\ displaystyle \ Gamma (x) = \ left (\ alpha ^ {8} x-1 \ right) \ left (\ alpha ^ {11} x-1 \ right).}{\ displaystyle \ Gamma (x) = \ left (\ alpha ^ {8} x-1 \ right) \ left (\ alpha ^ {11} x-1 \ right).} Вычислить синдромы s 1 = α 4, s 2 = α - 7, s 3 = α 1, s 4 = α 1, s 5 = α 0, {\ displaystyle s_ {1} = \ alpha ^ {4}, s_ {2} = \ alpha ^ {- 7}, s_ {3} = \ alpha ^ {1}, s_ {4} = \ alpha ^ {1}, s_ {5} = \ alpha ^ {0},}{\displaystyle s_{1}=\alpha ^{4},s_{2}=\alpha ^{-7},s_{3}=\alpha ^{1},s_{4}=\alpha ^{1},s_{5}=\alpha ^{0},}и s 6 = α 2. {\ displaystyle s_ {6} = \ alpha ^ {2}.}{\displaystyle s_{6}=\alpha ^{2}.}Создать синдромный многочлен

S (x) = α 4 + α - 7 x + α 1 x 2 + α 1 x 3 + α 0 x 4 + α 2 x 5, S (x) Γ (x) = α 4 + α 7 x + α 5 x 2 + α 3 x 3 + α 1 x 4 + α - 1 x 5 + α - 1 х 6 + α 6 х 7. {\ Displaystyle {\ begin {align} S (x) = \ alpha ^ {4} + \ alpha ^ {- 7} x + \ alpha ^ {1} x ^ {2} + \ alpha ^ {1} x ^ {3} + \ alpha ^ {0} x ^ {4} + \ alpha ^ {2} x ^ {5}, \\ S (x) \ Gamma (x) = \ alpha ^ {4} + \ alpha ^ {7} x + \ alpha ^ {5} x ^ {2} + \ alpha ^ {3} x ^ {3} + \ alpha ^ {1} x ^ {4} + \ alpha ^ {- 1} x ^ {5} + \ alpha ^ {- 1} x ^ {6} + \ alpha ^ {6} x ^ {7}. \ End {align}}}{\displaystyle { \begin{aligned}S(x)=\alpha ^{4}+\alph a ^{-7}x+\alpha ^{1}x^{2}+\alpha ^{1}x^{3}+\alpha ^{0}x^{4}+\alpha ^{2}x^{5},\\S(x)\Gamma (x)=\alpha ^{4}+\alpha ^{7}x+\alpha ^{5}x^{2}+\alpha ^{3}x^{3}+\alpha ^{1}x^{4}+\alpha ^{-1}x^{5}+\alpha ^{-1}x^{6}+\alpha ^{6}x^{7}.\end{aligned}}}

Запустим расширенный алгоритм Евклида:

(S (x) Γ (x) x 6) = (α 4 + α 7 x + α 5 x 2 + α 3 x 3 + α 1 x 4 + α - 1 x 5 + α - 1 x 6 + α 6 x 7 x 6) = (α - 1 + α 6 x 1 1 0) (x 6 α 4 + α 7 x + α 5 x 2 + α 3 x 3 + α 1 x 4 + α - 1 x 5 + 2 α - 1 x 6 + 2 α 6 x 7) = (α - 1 + α 6 x 1 1 0) (α 3 + α 1 x 1 1 0) (α 4 + α 7 x + α 5 x 2 + α 3 x 3 + α 1 x 4 + α - 1 x 5 α 7 + (α - 5 + α 5) x + 2 α - 7 x 2 + 2 α 6 x 3 + 2 α 4 x 4 + 2 α 2 x 5 + 2 x 6) = ((1 + α 2) + (α 0 + α - 6) x + α 7 x 2 α - 1 + α 6 x α 3 + α 1 x 1) (α 4 + α 7 Икс + α 5 Икс 2 + α 3 Икс 3 + α 1 Икс 4 + α - 1 Икс 5 α 7 + α 0 Икс) {\ Displaystyle {\ begin {align} {\ begin {pmatrix} S (x) \ Gamma (x) \\ x ^ {6} \ end {pmatrix}} = {\ begin {p матрица} \ alpha ^ {4} + \ alpha ^ {7} x + \ alpha ^ {5} x ^ {2} + \ alpha ^ {3} x ^ {3} + \ alpha ^ {1} x ^ {4 } + \ alpha ^ {- 1} x ^ {5} + \ alpha ^ {- 1} x ^ {6} + \ alpha ^ {6} x ^ {7} \\ x ^ {6} \ end {pmatrix }} \\ = {\ begin {pmatrix} \ alpha ^ {- 1} + \ alpha ^ {6} x 1 \\ 1 0 \ end {pmatrix}} {\ begin {pmatrix} x ^ {6} \\\ альфа ^ {4} + \ alpha ^ {7} x + \ alpha ^ {5} x ^ {2} + \ alpha ^ {3} x ^ {3} + \ alpha ^ {1} x ^ {4} + \ alpha ^ {- 1} x ^ {5} +2 \ alpha ^ {- 1} x ^ {6} +2 \ alpha ^ {6} x ^ {7} \ end {pmatrix}} \\ = {\ begin {pmatrix} \ alpha ^ {- 1} + \ alpha ^ {6} x 1 \\ 1 0 \ end {pmatrix}} {\ begin {pmatrix} \ alpha ^ {3} + \ alpha ^ {1} x 1 \\ 1 0 \ end {pmatrix}} {\ begin {pmatrix} \ alpha ^ {4} + \ alpha ^ {7} x + \ alpha ^ {5} x ^ {2} + \ alpha ^ {3} x ^ {3} + \ alpha ^ {1} x ^ {4} + \ alpha ^ {- 1} x ^ {5} \\\ alpha ^ {7} + \ left (\ alpha ^ {- 5} + \ alpha ^ {5 } \ right) x + 2 \ alpha ^ {- 7} x ^ {2} +2 \ alpha ^ {6} x ^ {3} +2 \ alpha ^ {4} x ^ {4} +2 \ alpha ^ {2} x ^ {5} + 2x ^ {6} \ end {pmatrix}} \\ = {\ begin {pmatrix} \ left (1+ \ alpha ^ {2} \ right) + \ left (\ alpha ^ {0} + \ alpha ^ {- 6} \ right) x + \ alpha ^ {7} x ^ {2} \ alpha ^ {- 1} + \ alpha ^ {6} x \\\ alpha ^ {3 } + \ alpha ^ {1} x 1 \ end {pmatrix}} {\ begin {pmatrix} \ alpha ^ {4} + \ alpha ^ {7} x + \ alpha ^ {5} x ^ {2} + \ альфа ^ {3} x ^ {3} + \ alpha ^ {1} x ^ {4} + \ alpha ^ {- 1} x ^ {5} \\\ alpha ^ {7} + \ alpha ^ {0} x \ end {pmatrix}} \ end {align}}}{\displaystyle {\begin{aligned}{\begin{pmatrix}S(x)\Gamma (x)\\ x^{6}\end{pmatrix}}={\begin{pmatrix}\alpha ^{4}+\alpha ^{7}x+\alpha ^{5}x^{2}+\alpha ^{3}x^{3}+\alpha ^{1}x^{4}+\alpha ^{-1}x^{5}+\alpha ^{-1}x^{6}+\alpha ^{6}x^{7}\\x^{6}\end{pmatrix}}\\={\begin{pmatrix}\alpha ^{-1}+\alpha ^{6}x1\\10\end{pmatrix}}{\begin{pmatrix}x^{6}\\\alpha ^{4}+\alpha ^{7}x+\alpha ^{5}x^{2}+\alpha ^{3}x^{3}+\alpha ^{1}x^{4}+\alpha ^{-1}x^{5}+2\alpha ^{-1}x^{6}+2\alpha ^{6}x^{7}\end{pmatrix}}\\={\begin{pmatrix}\alpha ^{-1}+\alpha ^{6}x1\\10\end{pmatrix}}{\begin{pmatrix}\alpha ^{3}+\alpha ^{1}x1\\10\end{pmatrix}}{\begin{pmatrix}\alpha ^{4}+\alpha ^{7}x+\alpha ^{5}x^{2}+\alpha ^{3}x^{3}+\alpha ^{1}x^{4}+\alpha ^{-1}x^{5}\\\alpha ^{7}+\left(\alpha ^{-5}+\alpha ^{5}\right)x+2\alpha ^{-7}x^{2}+2\alpha ^{6}x^{3}+2\alpha ^{4}x^{4}+2\alpha ^{2}x^{5}+2x^{6}\end{pmatrix}}\\={\begin{pmatrix}\left(1+\alpha ^{2}\right)+\left(\alpha ^{0}+\alpha ^{-6}\right)x+\alpha ^{7}x^{2}\alpha ^{-1}+\alpha ^{6}x\\\alpha ^{3}+\alpha ^{1}x1\end{pmatrix}}{\begin{pmatrix}\alpha ^{4}+\ alpha ^{7}x+\alpha ^{5}x^{2}+\alpha ^{3}x^{3}+\alpha ^{1}x^{4}+\alpha ^{-1}x^{5}\\\alpha ^{7}+\alpha ^{0}x\end{pmatrix}}\end{aligned}}}

Мы достигли полинома степени не выше 3, а как

(- 1 α - 1 + α 6 x α 3 + α 1 x - ( α - 7 + α 7 x + α 7 x 2)) (α - 7 + α 7 x + α 7 x 2 α - 1 + α 6 x α 3 + α 1 x 1) = (1 0 0 1), {\ displaystyle {\ begin {pmatrix} -1 \ alpha ^ {- 1} + \ alpha ^ {6} x \\\ alpha ^ {3} + \ alpha ^ {1} x - \ left (\ alpha ^ { -7} + \ alpha ^ {7} x + \ alpha ^ {7} x ^ {2} \ right) \ end {pmatrix}} {\ begin {pmatrix} \ alpha ^ {- 7} + \ alpha ^ {7 } x + \ alpha ^ {7} x ^ {2} \ alpha ^ {- 1} + \ alpha ^ {6} x \\\ alpha ^ {3} + \ alpha ^ {1} x 1 \ end {pmatrix} } = {\ begin {pmatrix} 1 0 \\ 0 1 \ end {pmatrix}},}{\displaystyle {\begin{pmatrix}-1\alpha ^{-1}+\alpha ^{6}x\\\alpha ^{3}+\alpha ^{1}x-\left(\alpha ^{-7}+\alpha ^{7}x+\alpha ^{7}x^{2}\right)\end{pmatrix}}{\begin{pmatrix}\alpha ^{-7}+\alpha ^{7}x+\alpha ^{7}x^{2}\alpha ^{-1}+\alpha ^{6}x\\\alpha ^{3}+\alpha ^{1}x1\end{pmatrix}}={\begin{pmatrix}10\\01\end{pmatrix}},}

получаем

(- 1 α - 1 + α 6 x α 3 + α 1 x - (α - 7 + α 7 x + α 7 x 2)) (S (x) Γ (x) x 6) = (α 4 + α 7 x + α 5 x 2 + α 3 x 3 + α 1 x 4 + α - 1 x 5 α 7 + α 0 x). {\ displaystyle {\ begin {pmatrix} -1 \ alpha ^ {- 1} + \ alpha ^ {6} x \\\ alpha ^ {3} + \ alpha ^ {1} x - \ left (\ alpha ^ { -7} + \ alpha ^ {7} x + \ alpha ^ {7} x ^ {2} \ right) \ end {pmatrix}} {\ begin {pmatrix} S (x) \ Gamma (x) \\ x ^ {6} \ end {pmatrix}} = {\ begin {pmatrix} \ alpha ^ {4} + \ alpha ^ {7} x + \ alpha ^ {5} x ^ {2} + \ alpha ^ {3} x ^ {3} + \ alpha ^ {1} x ^ {4} + \ alpha ^ {- 1} x ^ {5} \\\ alpha ^ {7} + \ alpha ^ {0} x \ end {pmatrix}}.}{\displaystyle {\begin{pmatrix}-1\alpha ^{-1}+\alpha ^{6}x\\\alpha ^{3}+\alpha ^{1}x-\left(\alpha ^{-7}+\alpha ^{7}x+\alpha ^{7}x^{2}\right)\end{pmatrix}}{\begin{pmatrix}S(x)\Gamma (x)\\x^{6}\end{pmatrix}}={\begin{pmatrix}\alpha ^{4}+\alpha ^{7}x+\alpha ^{5}x^{2}+\alpha ^{3}x^{3}+\alpha ^{1}x^{4}+\alpha ^{-1}x^{5}\\\alpha ^{7}+\alpha ^{0}x\end{pmatrix}}.}

Следовательно,

S (x) Γ (x) (α 3 + α 1 x) - (α - 7 + α 7 x + α 7 x 2) x 6 = α 7 + α 0 x. {\ Displaystyle S (x) \ Gamma (x) \ left (\ alpha ^ {3} + \ alpha ^ {1} x \ right) - \ left (\ alpha ^ {- 7} + \ alpha ^ {7} x + \ alpha ^ {7} x ^ {2} \ right) x ^ {6} = \ alpha ^ {7} + \ alpha ^ {0} x.}{\displaystyle S(x)\Gamma (x)\left(\alpha ^{3}+\alpha ^{1}x\right)-\left(\alpha ^{-7}+\alpha ^{7}x+\alpha ^{7}x^{2}\right)x^{6}=\alpha ^{7}+\alpha ^{0}x.}

Пусть Λ (x) = α 3 + α 1 х. {\ displaystyle \ Lambda (x) = \ alpha ^ {3} + \ alpha ^ {1} x.}{\displaystyle \Lambda (x)=\alpha ^{3}+\alpha ^{1}x.}Не беспокойтесь, что λ 0 ≠ 1. {\ displaystyle \ lambda _ {0} \ neq 1.}{\displaystyle \lambda _{0}\neq 1.}Корень Λ (x) {\ displaystyle \ Lambda (x)}\Lambda (x)равен α 3 - 1. {\ displaystyle \ alpha ^ {3-1}.}\alpha ^{3-1}.

Пусть

Ξ (x) = Γ (x) Λ (x) = α 3 + α - 7 x + α - 4 x 2 + α 5 Икс 3, Ом (Икс) знак равно S (Икс) Ξ (Икс) ≡ α 7 + α 0 Икс модуль Икс 6 {\ Displaystyle {\ begin {align} \ Xi (x) = \ Gamma (x) \ Lambda ( x) = \ alpha ^ {3} + \ alpha ^ {- 7} x + \ alpha ^ {- 4} x ^ {2} + \ alpha ^ {5} x ^ {3}, \\\ Omega (x) = S (x) \ Xi (x) \ Equiv \ alpha ^ {7} + \ alpha ^ {0} x {\ bmod {x ^ {6}}} \ end {align}}}{\displaystyle {\begin{aligned}\Xi (x)=\Gamma (x)\Lambda (x)=\alpha ^{3}+\alpha ^{-7}x+\alpha ^{-4}x^{2}+\alpha ^{5}x^{3},\\\Omega (x)=S(x)\Xi (x)\equiv \alpha ^{7}+\alpha ^{0}x{\bmod {x^{6}}}\end{aligned}}}

Позвольте нам найдите значения ошибок с помощью формулы ej = - Ω (α - ij) / Ξ ′ (α - ij), {\ displaystyle e_ {j} = - \ Omega \ left (\ alpha ^ {- i_ {j}) } \ right) / \ Xi '\ left (\ alpha ^ {- i_ {j}} \ right),}{\displaystyle e_{j}=-\Omega \left(\alpha ^{-i_{j}}\right)/\Xi '\left(\alpha ^{-i_{j}}\right),}где α - ij {\ displaystyle \ alpha ^ {- i_ {j }}}\ alpha ^ {- i_ {j}} являются корнями многочлена Ξ (x). {\ Displaystyle \ Xi (x).}\Xi (x).

Ξ ′ (x) = α - 7 + α 5 x 2. {\ displaystyle \ Xi '(x) = \ alpha ^ {- 7} + \ alpha ^ {5} x ^ {2}.}{\displaystyle \Xi '(x)=\alpha ^{-7}+\alpha ^{5}x^{2}.}

Мы получаем

e 1 = - Ω (α 4) Ξ ′ (α 4) = α 7 + α 4 α - 7 + α - 2 = α 3 α 3 = 1 e 2 = - Ω (α 7) Ξ ′ (α 7) = α 7 + α 7 α - 7 + α 4 знак равно 0 е 3 знак равно - Ω (α 2) Ξ ′ (α 2) = α 7 + α 2 α - 7 + α - 6 = α - 3 α - 3 = 1 {\ displaystyle {\ begin {align} e_ {1} = - {\ frac {\ Omega \ left (\ alpha ^ {4} \ right)} {\ Xi '\ left (\ alpha ^ {4} \ right)}} = {\ frac {\ alpha ^ {7} + \ alpha ^ {4}} {\ alpha ^ {- 7} + \ alpha ^ {- 2}}} = {\ frac {\ alpha ^ {3}} {\ alpha ^ {3}} } = 1 \\ e_ {2} = - {\ frac {\ Omega \ left (\ alpha ^ {7} \ right)} {\ Xi '\ left (\ alpha ^ {7} \ right)}} = {\ frac {\ alpha ^ {7} + \ alpha ^ {7}} {\ alpha ^ {- 7} + \ alpha ^ {4}}} = 0 \\ e_ {3} = - {\ frac { \ Omega \ left (\ alpha ^ {2} \ right)} {\ Xi '\ left (\ alpha ^ {2} \ right)}} = {\ frac {\ alpha ^ {7} + \ alpha ^ {2 }} {\ alpha ^ {- 7} + \ alpha ^ {- 6}}} = {\ frac {\ alpha ^ {- 3}} {\ alpha ^ {- 3}}} = 1 \ end {выровнено} }}{\displaystyle {\begin{aligned}e_{1}=-{\frac {\Omega \left(\alpha ^{4}\right)}{\Xi '\left(\alpha ^{4}\right)}}={\frac {\alpha ^{7}+\alpha ^{4}}{\alpha ^{-7}+\alpha ^{-2}}}={\frac {\alpha ^{3}}{\alpha ^{3}}}=1\\e_{2}=-{\frac {\Omega \left(\alpha ^{7}\right)}{\Xi '\left(\alpha ^{7}\right)}}={\frac {\alpha ^{7}+\alpha ^{7}}{\alpha ^{-7}+\alpha ^{4}}}=0\\e_{3}=-{\frac {\Omega \left(\alpha ^{2}\right)}{\Xi '\left(\alpha ^{2}\right)}}={\frac {\alpha ^{7}+\alpha ^{2}}{\alpha ^{-7}+\alpha ^{-6}}}={\frac {\alpha ^{-3}}{\alpha ^{-3}}}=1\end{aligned}}}

Тот факт, что e 3 = 1 {\ displaystyle e_ {3} = 1}{\displaystyle e_{3}=1}, не должен вызывать удивления.

Таким образом, исправленный код - [1 1 0 1 1 1 0 0 0 0 1 0 1 0 0].

Цитаты
Ссылки

Первичные источники

Вторичные источники

Далее чтение
Последняя правка сделана 2021-05-11 03:07:32
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте