algebraic geometry code
{{Short description|Mathematical linear code}}
Algebraic geometry codes, often abbreviated AG codes, are a type of linear code that generalize Reed–Solomon codes. The Russian mathematician V. D. Goppa constructed these codes for the first time in 1982.{{Cite journal |last=Goppa |first=Valerii Denisovich |author-link=Valery Goppa |date=1982 |title=Algebraico-geometric codes |url=https://www.mathnet.ru/php/archive.phtml?wshow=paper&jrnid=im&paperid=1646&option_lang=eng |journal=Izvestiya Rossiiskoi Akademii Nauk. Seriya Matematicheskaya |volume=46 |issue=4 |pages=726–781 |via=Russian Academy of Sciences, Steklov Mathematical Institute of Russian}}
History
The name of these codes has evolved since the publication of Goppa's paper describing them. Historically these codes have also been referred to as geometric Goppa codes;{{Cite journal |last=Stichtenoth |first=Henning |date=1988 |title=A note on Hermitian codes over GF(q^2) |url=https://ieeexplore.ieee.org/abstract/document/21267 |journal=IEEE Transactions on Information Theory |volume=34 |issue=5 |pages=1345–1348 |via=IEEE}} however, this is no longer the standard term used in coding theory literature. This is due to the fact that Goppa codes are a distinct class of codes which were also constructed by Goppa in the early 1970s.{{Cite journal |last=Goppa |first=Valery Denisovich |author-link=Valery Goppa |date=1970 |title=A new class of linear error-correcting codes |url=https://www.mathnet.ru/php/archive.phtml?wshow=paper&jrnid=ppi&paperid=1748&option_lang=eng |journal=Probl. Inf. Transm. |volume=6 |pages=300–304}}{{Cite journal |last=Goppa |first=Valerii Denisovich |author-link=Valery Goppa |date=1972 |title=Codes Constructed on the Base of (L,g)-Codes |url=https://www.mathnet.ru/php/archive.phtml?wshow=paper&jrnid=ppi&paperid=791&option_lang=eng |journal=Problemy Peredachi Informatsii |volume=8 |issue=2 |pages=107–109 |via=Russian Academy of Sciences, Branch of Informatics, Computer Equipment and}}{{Cite journal |last=Berlekamp |first=Elwyn |author-link=Elwyn Berlekamp |date=1973 |title=Goppa codes |url=https://ieeexplore.ieee.org/abstract/document/1055088 |journal=IEEE Transactions on Information Theory |volume=19 |issue=5 |pages=590–592 |via=IEEE}}
These codes attracted interest in the coding theory community because they have the ability to surpass the Gilbert–Varshamov bound; at the time this was discovered, the Gilbert–Varshamov bound had not been broken in the 30 years since its discovery.{{Cite book |last=Walker |first=Judy L. |title=Codes and Curves |publisher=American Mathematical Society |year=2000 |isbn=0-8218-2628-X |location= |pages=15}} This was demonstrated by Tfasman, Vladut, and Zink in the same year as the code construction was published, in their paper "Modular curves, Shimura curves, and Goppa codes, better than Varshamov-Gilbert bound".{{Cite journal |last=Tsfasman |first=Michael |last2=Vladut |first2=Serge |last3=Zink |first3=Thomas |author-link3=Thomas Zink |date=1982 |title=Modular curves, Shimura curves, and Goppa codes better than the Varshamov-Gilbert bound |url=https://onlinelibrary.wiley.com/doi/abs/10.1002/mana.19821090103 |journal=Mathematische Nachrichten}} The name of this paper may be one source of confusion affecting references to algebraic geometry codes throughout 1980s and 1990s coding theory literature.
Construction
In this section the construction of algebraic geometry codes is described. The section starts with the ideas behind Reed–Solomon codes, which are used to motivate the construction of algebraic geometry codes.
= Reed–Solomon codes =
Algebraic geometry codes are a generalization of Reed–Solomon codes. Constructed by Irving Reed and Gustave Solomon in 1960, Reed–Solomon codes use univariate polynomials to form codewords, by evaluating polynomials of sufficiently small degree at the points in a finite field .{{Cite journal |last=Reed |first=Irving |author-link=Irving S. Reed |last2=Solomon |first2=Gustave |author-link2=Gustave Solomon |date=1960 |title=Polynomial codes over certain finite fields |url=https://epubs.siam.org/doi/abs/10.1137/0108018?journalCode=smjmap.1 |journal=Journal of the Society for Industrial and Applied Mathematics |volume=8 |issue=2 |pages=300–304 |via=SIAM}}
Formally, Reed–Solomon codes are defined in the following way. Let . Set positive integers . Let
= Codes from algebraic curves =
Goppa observed that
With this idea in mind, Goppa looked toward the Riemann–Roch theorem. The elements of a Riemann–Roch space are exactly those functions with pole order restricted below a given threshold,{{Cite journal |last=Hoholdt |first=Tom |last2=van Lint |first2=Jacobus |author-link2=J. H. van Lint |last3=Pellikaan |first3=Ruud |date=1998 |title=Algebraic geometry codes |url=https://www.researchgate.net/profile/R-Pellikaan/publication/293123965_Algebraic_geometry_of_codes_handbook_of_coding_theory/links/56c59cc708ae7fd4625baa21/Algebraic-geometry-of-codes-handbook-of-coding-theory.pdf |journal=Handbook of coding theory |volume=1 |issue=Part 1 |pages=871–961 |via=Elsevier Amsterdam}} with the restriction being encoded in the coefficients of a corresponding divisor. Evaluating those functions at the rational points on an algebraic curve
However, because the parameters of algebraic geometry codes are connected to algebraic function fields, the definitions of the codes are often given in the language of algebraic function fields over finite fields.{{Cite book |last=Stichtenoth |first=Henning |title=Algebraic function fields and codes |publisher=Springer Science & Business Media |year=2009 |isbn=978-3-540-76878-4 |edition=2nd |pages=45–65}} Nevertheless, it is important to remember the connection to algebraic curves, as this provides a more geometrically intuitive method of thinking about AG codes as extensions of Reed-Solomon codes.
Formally, algebraic geometry codes are defined in the following way. Let
Examples
= Reed-Solomon codes =
One can see that
where
= One-point Hermitian codes =
The Hermitian curve is given by the equation
The Riemann–Roch space of the Hermitian function field is given in the following statement. For the Hermitian function field
With that, the one-point Hermitian code can be defined in the following way. Let
Let
The one-point Hermitian code