Код Гоппа

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

В математика, алгебро-геометрический код (AG-код ), иначе известный как код Гоппа, является общим типом линейного код, построенный с использованием алгебраической кривой X {\ displaystyle X}X над конечным полем F q {\ displaystyle \ mathbb {F} _ {q}}\ mathbb {F} _ { q} . Такие коды ввел Валерий Денисович Гоппа. В частных случаях они могут быть интересными. Их не следует путать с двоичными кодами Гоппа, которые используются, например, в криптосистеме Мак-Элиса.

Содержание
  • 1 Конструкция
  • 2 Функциональный код
  • 3 Остаточный код
  • 4 Ссылки
  • 5 Внешние ссылки
Построение

Традиционно AG-код строится из несингулярной проективной кривой Xнад конечное поле F q {\ displaystyle \ mathbb {F} _ {q}}\ mathbb {F} _ { q} с использованием ряда фиксированных различных F q {\ displaystyle \ mathbb {F} _ {q} }\ mathbb {F} _ { q} -рациональные точки на X {\ displaystyle \ mathbf {X}}\ mathbf {X} :

P: = {P 1,…, P n} ⊂ X (F q). {\ displaystyle {\ mathcal {P}}: = \ {P_ {1}, \ ldots, P_ {n} \} \ subset \ mathbf {X} (\ mathbb {F} _ {q}).}{\ displaystyle {\ mathcal {P}} : = \ {P_ {1}, \ ldots, P_ {n} \} \ subset \ mathbf {X} (\ mathbb {F} _ {q}).}

Пусть G {\ displaystyle G}G будет делителем на X с опорой , состоящей только из рациональных точек. и это не пересекается с P i {\ displaystyle P_ {i}}P_ {i} . Таким образом, P ∩ supp ⁡ (G) = ∅ {\ displaystyle {\ mathcal {P}} \ cap \ operatorname {supp} (G) = \ varnothing}{\ displaystyle {\ mathcal {P}} \ cap \ operatorname {supp} (G) = \ varnothing }

По теореме Римана – Роха существует уникальное конечномерное векторное пространство, L (G) {\ displaystyle L (G)}L (G) , относительно делителя G {\ displaystyle G}G . Векторное пространство является подпространством функционального поля из X.

. Есть два основных типа AG-кодов, которые могут быть построены с использованием вышеуказанной информации.

Код функции

Код функции (или двойной код ) относительно кривой X, делитель G {\ displaystyle G}G и набор P {\ displaystyle {\ mathcal {P}}}{\ mathcal {P}} строятся следующим образом.

Пусть D = P 1 + ⋯ + P n {\ displaystyle D = P_ {1} + \ cdots + P_ {n}}{\ displaystyle D = P_ {1} + \ cdots + P_ {n}} , будет делителем с P i {\ displaystyle P_ {i}}P_ {i} определено, как указано выше. Обычно мы обозначаем код Гоппы C(D,G). Теперь мы знаем все, что нам нужно для определения кода Гоппы:

C (D, G) = {(f (P 1),…, f (P n)): f ∈ L (G)} ⊂ F qn { \ Displaystyle С (D, G) = \ влево \ {\ влево (е (P_ {1}), \ ldots, f (P_ {n}) \ вправо) \: \ е \ в L (G) \ вправо \ } \ subset \ mathbb {F} _ {q} ^ {n}}{\ Displaystyle С (D, G) = \ влево \ {\ влево (е (P_ {1}), \ ldots, f (P_ {n}) \ вправо) \: \ е \ в L (G) \ вправо \} \ subset \ mathbb {F} _ {q} ^ {n}}

Для фиксированного базиса f 1,…, fk {\ displaystyle f_ {1}, \ ldots, f_ {k}}f_ {1}, \ ldots, f_ {k} для L (G) над F q {\ displaystyle \ mathbb {F} _ {q}}\ mathbb {F} _ { q} , соответствующий код Гоппа в F qn {\ displaystyle \ mathbb {F} _ {q} ^ {n}}\ mathbb {F} _ {q} ^ {n} растянуто на F q {\ displaystyle \ mathbb {F} _ {q}}\ mathbb {F} _ { q} векторами

(fi (P 1),…, fi (P n)) {\ displaystyle \ left (f_ {i} (P_ {1}), \ ldots, f_ {i} (P_ {n}) \ right) }{\ displaystyle \ left (f_ {i} (P_ {1}), \ ldots, f_ {i} (P_ {n})) \ right)}

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

[f 1 (P 1) ⋯ f 1 (P n) ⋮ ⋮ fk (P 1) ⋯ fk (P n)] {\ displaystyle {\ begin {bmatrix} f_ {1} (P_ {1}) \ cdots f_ {1} (P_ {n}) \\\ vdots \ vdots \\ f_ {k} (P_ {1}) \ cdots f_ {k} (P_ {n}) \ end {bmatrix}}}{\ displaystyle {\ begin {bmatrix} f_ {1} (P_ {1}) \ cdots f_ {1} (P_ {n}) \\\ vdots \ vdots \\ f_ {k} (P_ {1}) \ cdots f_ {k} (P_ {n}) \ end {bmatrix} }}

- порождающая матрица для C (D, G). {\ displaystyle C (D, G).}{\ displaystyle C (D, G).}

Эквивалентно, он определяется как изображение

{α: L (G) → F nf ↦ (f (P 1),…, f (P n)) {\ displaystyle {\ begin {case} \ alpha: L (G) \ to \ mathbb {F} ^ {n} \\ f \ mapsto (f (P_ {1}), \ ldots, f (P_ { n})) \ end {ases}}}{\ displaystyle {\ begin {cases} \ alpha: L (G) \ в \ mathbb {F} ^ {n} \\ f \ mapsto (f (P_ {1}), \ ldots, f (P_ {n})) \ end {cases}}}

Ниже показано, как параметры кода соотносятся с классическими параметрами линейных систем делителей D на C (см. Riemann – Roch теорема подробнее). Обозначение ℓ (D) означает размерность L (D).

Предложение A. Размерность кода Гоппа C (D, G) {\ displaystyle C (D, G)}{\ displaystyle C (D, G)} равна k = ℓ (G) - ℓ (G - D). {\ displaystyle k = \ ell (G) - \ ell (GD).}{\ displaystyle k = \ ell (G) - \ ell (GD).}

Доказательство. Поскольку C (D, G) ≅ L (G) / ker ⁡ (α), {\ displaystyle C (D, G) \ cong L (G) / \ ker (\ alpha),}{\ display стиль C (D, G) \ cong L (G) / \ ker (\ alpha),} мы должны показать, что

ker ⁡ (α) = L (G - D). {\ displaystyle \ ker (\ alpha) = L (GD).}{\ displaystyle \ ker (\ alpha) = L (GD).}

Пусть f ∈ ker ⁡ (α) {\ displaystyle f \ in \ ker (\ alpha)}f \ in \ ker (\ alpha) тогда е (п 1) = ⋯ = е (п п) = 0 {\ displaystyle f (P_ {1}) = \ cdots = f (P_ {n}) = 0}{\ displaystyle f (P_ {1}) = \ cdots = f (P_ {n}) = 0} так что div ⁡ (f)>D {\ displaystyle \ operatorname {div} (f)>D}{\displaystyle \operatorname {div} (f)>D} . Таким образом, f ∈ L (G - D). {\ displaystyle f \ in L (GD).}{\ displaystyle f \ in L (GD).} И наоборот, предположим, что f ∈ L (G - D), {\ displaystyle f \ in L (GD),}{\ displaystyle f \ in L (GD),} , затем div ⁡ (f)>D { \ displaystyle \ operatorname {div} (f)>D}{\displaystyle \operatorname {div} (f)>D} с

P i < G, i = 1, …, n. {\displaystyle P_{i}{\ displaystyle P_ {i} <G, \ quad i = 1, \ ldots, n.}

(G не« исправляет »проблемы с - D {\ displaystyle -D}-D , поэтому f должен сделать это вместо этого.) Отсюда следует, что f (P 1) = ⋯ = f (P n) = 0. {\ displaystyle f (P_ {1}) = \ cdots = f (P_ { n}) = 0.}{\ displaystyle f (P_ {1}) = \ cdots = f (P_ {n}) = 0.}

Предложение B. Минимальное расстояние между двумя кодовыми словами равно d ⩾ n - deg ⁡ (G). {\ displaystyle d \ geqslant n- \ deg (G).}{\ displaystyle d \ geqslant n- \ deg (G).}

Доказательство. Предположим, что вес Хэмминга из α (f) {\ displaystyle \ alpha (f)}\ alpha (f) - д. Это означает, что для n - d {\ displaystyle nd}nd индексы i 1,…, in - d {\ displaystyle i_ {1}, \ ldots, i_ {nd}}{\ displaystyle i_ {1}, \ ldots, i_ {nd}} мы имеем f (P ik) = 0 {\ displaystyle f (P_ {i_ {k}}) = 0}{ \ displaystyle f (P_ {i_ {k}}) = 0} для k ∈ {1,…, n - d}. {\ displaystyle k \ in \ {1, \ ldots, nd \}.}{\ displaystyle к \ ин \ {1, \ ldots, nd \}.} Тогда f ∈ L (G - P i 1 - ⋯ - P in - d) {\ displaystyle f \ в L (G-P_ {i_ {1}} - \ cdots -P_ {i_ {nd}})}{\ displaystyle f \ in L (G-P_ {i_ {1}} - \ cdots -P_ {i_ {nd}})} и

div ⁡ (f) + G - P i 1 - ⋯ - P в - d>0. {\ displaystyle \ operatorname {div} (f) + G-P_ {i_ {1}} - \ cdots -P_ {i_ {nd}}>0.}{\displaystyle \operatorname {div} (f)+G-P_{i_{1}}-\cdots -P_{i_{n-d}}>0.}

Принимая степени с обеих сторон и отмечая, что

град ⁡ (div ⁡ (е)) знак равно 0, {\ displaystyle \ deg (\ operatorname {div} (f)) = 0,}{\ displaystyle \ deg (\ operatorname {div} (f)) = 0,}

получаем

deg ⁡ (G) - (n - d) ⩾ 0. {\ Displaystyle \ deg (G) - (nd) \ geqslant 0.}{\ displaystyle \ deg (G) - (nd) \ geqslant 0.}

поэтому

d ≥ n - deg ⁡ (G). {\ Displaystyle d \ geq n- \ deg (G).}{\ displaystyle d \ geq n- \ deg (G).}
Код остатка

Код остатка может быть определен как двойник кода функции или как остаток некоторых функций в P i {\ displaystyle P_ {i}}P_ {i} .

Ссылки
  • Key One Chung, Goppa Codes, декабрь 2004 г., факультет математики, Университет штата Айова.
Внешние ссылки
Последняя правка сделана 2021-05-22 14:11:36
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте