En teoría de la codificación , un código lineal es un código corrector de errores para el cual cualquier combinación lineal de palabras clave también es una palabra clave. Los códigos lineales se dividen tradicionalmente en códigos de bloques y códigos convolucionales , aunque los códigos turbo pueden considerarse un híbrido de estos dos tipos. [ 1 ] Los códigos lineales permiten algoritmos de codificación y decodificación más eficientes que otros códigos (cf. decodificación de síndromes ).
Los códigos lineales se utilizan en la corrección de errores hacia adelante y se aplican en métodos para transmitir símbolos (por ejemplo, bits ) en un canal de comunicaciones de manera que, si se producen errores en la comunicación, algunos errores pueden ser corregidos o detectados por el receptor de un bloque de mensaje. Las palabras clave en un código de bloque lineal son bloques de símbolos que se codifican utilizando más símbolos que el valor original que se va a enviar. [ 2 ] Un código lineal de longitud n transmite bloques que contienen n símbolos. Por ejemplo, el código Hamming [7,4,3] es un código binario lineal que representa mensajes de 4 bits utilizando palabras clave de 7 bits. Dos palabras clave distintas difieren en al menos tres bits. Como consecuencia, se pueden detectar hasta dos errores por palabra clave, mientras que se puede corregir un solo error. [ 3 ] Este código contiene 2 4 = 16 palabras clave.
Definición y parámetros
Un código lineal de longitud n y dimensión k es un subespacio lineal C con dimensión k del espacio vectorial.dóndees el campo finito con q elementos. Dicho código se llama código q -ario. Si q = 2 o q = 3, el código se describe como un código binario o un código ternario , respectivamente. Los vectores en C se llaman palabras clave . El tamaño de un código es el número de palabras clave y es igual a q k .
El peso de una palabra clave es el número de sus elementos que no son cero y la distancia entre dos palabras clave es la distancia de Hamming entre ellas, es decir, el número de elementos en los que difieren. La distancia d del código lineal es el peso mínimo de sus palabras clave no nulas, o equivalentemente, la distancia mínima entre palabras clave distintas. Un código lineal de longitud n , dimensión k y distancia d se denomina código [ n , k , d ] (o, más precisamente,código).
Queremos darLa base estándar se utiliza porque cada coordenada representa un "bit" que se transmite a través de un "canal ruidoso" con una pequeña probabilidad de error de transmisión (un canal binario simétrico ). Si se utiliza otra base, este modelo no se puede usar y la métrica de Hamming no mide el número de errores de transmisión, como necesitamos.
Matrices generadoras y de verificación
Como un subespacio lineal de, todo el código C (que puede ser muy grande) puede representarse como el espacio generado por un conjunto depalabras clave (conocidas como base en álgebra lineal ). Estas palabras clave base a menudo se cotejan en las filas de una matriz G conocida como matriz generadora para el código C. Cuando G tiene la forma de matriz de bloques, dóndedenota elmatriz identidad y P es algunamatriz, entonces decimos que G está en forma estándar .
Una matriz H que representa una función lineal :\mathbb {F} _{q}^{n}\to \mathbb {F} _{q}^{nk}} cuyo núcleo es C se denomina matriz de verificación de C (o a veces matriz de verificación de paridad). Equivalentemente, H es una matriz cuyo espacio nulo es C. Si C es un código con una matriz generadora G en forma estándar,, entonceses una matriz de verificación para C. El código generado por H se llama código dual de C. Se puede verificar que G es unmatriz, mientras que H es unamatriz.
La linealidad garantiza que la distancia de Hamming mínima d entre una palabra clave c 0 y cualquiera de las otras palabras clave c ≠ c 0 es independiente de c 0 . Esto se deduce de la propiedad de que la diferencia c − c 0 de dos palabras clave en C también es una palabra clave (es decir, un elemento del subespacio C ), y de la propiedad de que d ( c , c 0 ) = d ( c − c 0 , 0 ). Estas propiedades implican que
En otras palabras, para hallar la distancia mínima entre las palabras clave de un código lineal, basta con observar las palabras clave distintas de cero. La palabra clave distinta de cero con el menor peso tiene entonces la distancia mínima a la palabra clave cero y, por lo tanto, determina la distancia mínima del código.
La distancia d de un código lineal C también es igual al número mínimo de columnas linealmente dependientes de la matriz de verificación H.
Prueba: Porque , lo cual es equivalente a, dóndees elcolumna de. Elimine esos elementos con, aquellosconson linealmente dependientes. Por lo tanto,es al menos el número mínimo de columnas linealmente dependientes. Por otro lado, consideremos el conjunto mínimo de columnas linealmente dependientes.dóndees el conjunto de índices de columna. Ahora consideremos el vectorde tal manera quesi. NotaporquePor lo tanto, tenemos, que es el número mínimo de columnas linealmente dependientes enPor lo tanto, se demuestra la propiedad reivindicada.
Ejemplo: Códigos de Hamming
Como la primera clase de códigos lineales desarrollados con fines de corrección de errores, los códigos de Hamming se han utilizado ampliamente en sistemas de comunicación digital. Para cualquier entero positivo, existe unCódigo Hamming. DesdeEste código Hamming puede corregir un error de 1 bit.
Ejemplo : El código de bloque lineal con la siguiente matriz generadora y matriz de verificación de paridad es unCódigo Hamming.
Ejemplo: Códigos de Hadamard
El código Hadamard es uncódigo lineal y es capaz de corregir muchos errores. El código Hadamard podría construirse columna por columna : elLa columna son los bits de la representación binaria del entero., como se muestra en el siguiente ejemplo. El código de Hadamard tiene distancia mínimay por lo tanto puede corregirerrores.
Ejemplo: El código de bloque lineal con la siguiente matriz generadora es unCódigo Hadamard: .
El código de Hadamard es un caso especial del código de Reed-Muller . Si tomamos la primera columna (la columna de ceros) de, obtenemoscódigo simplex , que es el código dual del código de Hamming.
Algoritmo del vecino más cercano
El parámetro d está estrechamente relacionado con la capacidad de corrección de errores del código. La siguiente construcción/algoritmo ilustra esto (denominado algoritmo de decodificación del vecino más cercano):
Entrada: Un vector recibido v en
Salida: Una palabra claveenmás cercano a, si los hubiera.
- Comenzando con, repita los dos pasos siguientes.
- Enumerar los elementos de la bola de radio (de Hamming)alrededor de la palabra recibida, denotado.
- Para cadaen, comprobar sienSi es así, devuélvalo.como la solución.
- Incremento. Fallar solo cuandoPor lo tanto, la enumeración ha finalizado y no se ha encontrado ninguna solución.
Decimos que una lineales-corrección de errores si hay como máximo una palabra clave en, para cadaen.
notación popular
Los códigos en general se suelen denotar con la letra C , y un código de longitud n y rango k (es decir, con n palabras clave en su base y k filas en su matriz generadora ) se suele denominar código ( n , k ). Los códigos de bloque lineales se suelen denotar como códigos [ n , k , d ], donde d se refiere a la distancia de Hamming mínima entre dos palabras clave cualesquiera.
(La notación [ n , k , d ] no debe confundirse con la notación ( n , M , d ) utilizada para denotar un código no lineal de longitud n , tamaño M (es decir, con M palabras de código) y distancia de Hamming mínima d .)
Singleton
Lema ( Límite Singleton ): Todo código lineal [ n , k , d ] C satisface.
Un código C cuyos parámetros satisfacen k + d = n + 1 se denomina código separable de máxima distancia o MDS . Dichos códigos, cuando existen, son en cierto sentido los mejores posibles.
Si C 1 y C 2 son dos códigos de longitud n y si existe una permutación p en el grupo simétrico S n tal que ( c 1 ,..., c n ) en C 1 si y solo si ( c p (1) ,..., c p ( n ) ) en C 2 , entonces decimos que C 1 y C 2 son equivalentes en permutación . En mayor generalidad, si existe unamatriz monomialque envía C 1 isomorfamente a C 2 entonces decimos que C 1 y C 2 son equivalentes .
Lema : Cualquier código lineal es equivalente por permutación a un código que está en forma estándar.
Teorema de Bonisoli
Un código se define como equidistante si y solo si existe alguna constante d tal que la distancia entre cualesquiera dos de las palabras clave distintas del código es igual a d . [ 4 ] En 1984, Arrigo Bonisoli determinó la estructura de los códigos lineales de peso uno sobre cuerpos finitos y demostró que todo código lineal equidistante es una secuencia de códigos de Hamming duales . [ 5 ]
Ejemplos
Algunos ejemplos de códigos lineales incluyen:
- Código de repetición
- Código de paridad
- Código cíclico
- Código de Hamming
- Código Golay , tanto en su versión binaria como ternaria.
- Códigos polinomiales , de los cuales los códigos BCH son un ejemplo.
- Códigos de Reed-Solomon
- Código de Reed-Muller
- Código de geometría algebraica
- Código binario de Goppa
- Códigos de verificación de paridad de baja densidad
- Código de expansión
- Código de verificación de paridad multidimensional
- Código tórico
- Código turbo
- Código recuperable localmente
Generalización
También se han considerado los espacios de Hamming sobre alfabetos no corpusculares, especialmente sobre anillos finitos , en particular los anillos de Galois sobre Z 4 . Esto da lugar a módulos en lugar de espacios vectoriales y códigos lineales de anillo (identificados con submódulos ) en lugar de códigos lineales. La métrica típica utilizada en este caso es la distancia de Lee . Existe una isometría de Gray entre(es decir, GF(2 2 m )) con la distancia de Hamming y(también denotado como GR(4,m)) con la distancia de Lee; su principal atractivo es que establece una correspondencia entre algunos códigos "buenos" que no son lineales sobrecomo imágenes de códigos lineales anulares de. [ 6 ] [ 7 ] [ 8 ]
Algunos autores también se han referido a dichos códigos sobre anillos simplemente como códigos lineales. [ 9 ]
Véase también
Referencias
- ↑ William E. Ryan y Shu Lin (2009). Códigos de canal: clásicos y modernos . Cambridge University Press. pág . 4. ISBN 978-0-521-84868-8.
- ↑ MacKay, David, JC (2003). Information Theory, Inference, and Learning Algorithms (PDF) . Cambridge University Press . p. 9. Bibcode : 2003itil.book.....M . ISBN 9780521642989En
un código de bloque lineal , el extraLos bits son funciones lineales del original.bits; estos bits adicionales se denominan bits de control de paridad.
{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ Thomas M. Cover y Joy A. Thomas (1991). Elementos de la teoría de la información . John Wiley & Sons, Inc. págs. 210–211 . ISBN 978-0-471-06259-2.
- ^ Etzión, Tuvi; Raviv, Netanel (2013). "Códigos equidistantes en el Grassmanniano". arXiv : 1308.6231 [ matemáticas.CO ].
- ↑ Bonisoli, A. (1984). "Todo código lineal equidistante es una secuencia de códigos de Hamming duales". Ars Combinatoria . 18 : 181–186 .
- ↑ Marcus Greferath (2009). «Una introducción a la teoría de la codificación lineal en anillo». En Massimiliano Sala; Teo Mora; Ludovic Perret; Shojiro Sakata; Carlo Traverso (eds.). Bases de Gröbner, codificación y criptografía . Springer Science & Business Media. ISBN 978-3-540-93806-4.
- ↑ "Enciclopedia de Matemáticas" . www.encyclopediaofmath.org .
- ↑ JH van Lint (1999). Introducción a la teoría de la codificación (3.ª ed.). Springer. Capítulo 8: Códigos sobre ℤ 4 . ISBN 978-3-540-64133-9.
- ↑ ST Dougherty; J.-L. Kim; P. Sole (2015). "Problemas abiertos en la teoría de la codificación" . En Steven Dougherty; Alberto Facchini; Andre Gerard Leroy; Edmund Puczylowski; Patrick Sole (eds.). Anillos no conmutativos y sus aplicaciones . American Mathematical Soc. pág. 80. ISBN 978-1-4704-1032-2.
Bibliografía
- JF Humphreys; MY Prest (2004). Números, grupos y códigos (2.ª ed.). Cambridge University Press. ISBN 978-0-511-19420-7.El capítulo 5 contiene una introducción más accesible (que este artículo) al tema de los códigos lineales.
Enlaces externos
- programa generador de código q -ario
- Tablas de códigos: límites de los parámetros de varios tipos de códigos , IAKS, Fakultät für Informatik, Universität Karlsruhe (TH)] . Tabla en línea actualizada de los códigos binarios óptimos, incluye códigos no binarios.
- Base de datos en línea de códigos Z4, base de datos actualizada de códigos Z4 óptimos.
- Teoría de la codificación
- Campos finitos