1. Códigos Lineales
¿Qué tipos de códigos se conocen?
Códigos de Hamming
Códigos de Golay
Códigos de Reed-Muller.
¿A qué se refiere la equivalencia y automorfismo de códigos?
Equivalencia:
Automorfismo:
Se dice que σ es un automorfismo de C, si σ(C) = C
A que se refiere un código lineal.
Un código lineal (n,k) es cualquier subespacio vectorial de dimensión k del espacio Vectorial .
Todas las posibles combinaciones lineales de los k elementos que tiene una base de un código
lineal (n,k) son en total palabras que forman el código
2. Que son los códigos duales u ortogonales
Codificación y decodificación de códigos lineales
Codificación:
En la codificación bloque la fuente de información como una secuencia binaria (" 0 " o " 1 “)
es segmentada en bloques de longitud fija de largo k bits y se codifica en bloques V de N
bits de código (> k), lo que da una tasa de código rc=k/n. Hay un total de 2k mensajes o
palabras distintas de código válidas (“Código Bloque”), y un total de 2n mensajes o palabras
distintas posibles de recibir en presencia de posibles errores del canal. Hay correspondencia
uno a uno entre u y v.
Decodificación:
Sea C un código lineal [n, k, d] sobre Fq. Sabemos que C corrige t = d−q 2 errores. En esta
sección explicaremos de una manera general cómo funciona la descodificación. Si se envía
la palabra c ∈ C y se recibe el vector y ∈ F n q. El error cometido durante la transmisión ha
sido e = y − c. Para descodificar la palabra recibida calcularemos la distancia a todas las
palabras de C y la descodificaremos por la más cercana. Si durante la transmisión se han
cometido más de t errores (es decir w(e) ≤ t), entonces d(c, y) = w(e) ≤ t y c es la única
palabra del código con tal propiedad; la descodificación será correcta. Si t < w(e) < d,
podemos detectar que se han producido errores (puesto que y /∈ C), pero no corregirlos en
general. Si w(e) ≥ d la descodificación fallará. Para corregir los errores cometidos, hay que
hablar del síndrome. Supongamos que se envía c y se recibe y = c + e. Sea H una matriz de
control de C.
Cuáles son los constructores con códigos lineales.
Extensión (extending a code): El proceso de agregar una o más coordenadas a las palabras de un
código se conoce como extensión del código. La forma más común de extender un código es
agregando un dígito de chequeo de paridad total (overall parity check digit).
Si C es un (n, M, d)-código, el código extendido Cˆ se define como Cˆ = {c1c2 . . . cncn+1 : c1c2 . . .
cn ∈ C y Xn+1 k=1 ck = 0}. Es decir, tomamos cn+1 = −c1 − · · · − cn. Así, Cˆ es un (ˆn, M, ˆ ˆd)-código
con nˆ = n + 1, Mˆ = M, ˆd = d ´o d + 1. Luego, si bien el código extendido no mejora las cualidades
para corregir errores al menos tiene una mejor capacidad para detectar errores. Notar que si C es
lineal entonces Cˆ también lo es (ejercicio) y que si C es binario entonces Cˆ ⊂ E(n + 1) (ver (1.5)), es
decir Cˆ tiene todas sus palabras de peso par.
3. Pinchado (puncturing a code). El proceso opuesto a extender un código se denomina pinchado de
un código en el que una o más coordenadas son quitadas de las palabras códigos. Si C es un (n, M,
d)-código q-ario, con d ≥ 2, entonces el código pinchado C ∗, obtenido pinchando una de las
coordenadas de C, tiene parámetros n ∗ = n − 1, M∗ = M, d∗ = d ´o d − 1.
Expurgado (expunging or expurgate). Expurgar un código es eliminar algunas palabras del código.
Como ejemplo, sea L un (n, M, d)-código lineal binario. Si L contiene al menos una palabra de peso
impar entonces la mitad de las palabras de L son de peso impar (ejercicio). Tirando las palabras de
peso impar obtenemos un (n, M/2, d0 )-código con d 0≥ d. Si d es impar entonces d 0> d.
Aumentado (augmenting). El proceso opuesto a expurgar un código es aumentar un código, es decir
agregar palabras adicionales al código. Un modo común de aumentar un código binario C es incluir
los complementos de cada palabra código en C. El complemento x c de una palabra binaria x es la
palabra que se obtiene intercambiando los 0’s por los 1’s. Sea C c el conjunto de los complementos
de las palabras en C. Claramente, si x, y ∈ F n 2 entonces d(x, yc ) = n−d(x, y).
Producto tensorial. Si C1 es un [n1, k1, d1]q-código y C2 es un [n2, k2, d2]q-código, el producto
tensorial (o de Kronecker) de C1 y C2 es el [n1n2, k1k2, d1d2]-código C1 ⊗ C2 = {c1 ⊗ c2 : c1 ∈ C1,
c2 ∈ C2}. O sea, C1 ⊗ C2 puede pensarse como el código cuyas palabras códigos consisten en todas
las matrices n1 × n2 cuyas filas pertenecen a C1 y cuyas columnas pertenecen a C2 (el conjunto de
estas matrices puede ser identificado con un subespacio de F n1n2 q ). Por supuesto se puede
considerar el producto tensorial de un número finito de códigos. En particular, el producto tensorial
C ⊗m de C es un [n m, km, dm]q-código.
La construcción (u, u+v). Esta es una construcción muy útil. sólo puede realizarse con códigos de la
misma longitud y sobre el mismo alfabeto Fq. Sea C1 ⊂ F n q un (n, M1, d1)-código y C2 ⊂ F n q un
(n, M2, d2)-código. Se define el código C1 ⊕ C2 = {c(c + d) : c ∈ C1, d ∈ C2}.
Pegado (pasting). Sean C1 y C2 códigos lineales con parámetros [n1, k, d1]q y [n2, k, d2]q,
respectivamente, definidos por los mapas φ1 : F k q → F n1 q y φ2 : F k q → F n2 q. Consideremos
el mapa diagonal (φ1, φ2) : F k q → F n1 q ⊕ F n2 q = F n1+n2 q , x 7→ (φ1x, φ2x).
Intercalación (interleaving). Sea C1 un (n1, k1, d1) q-código y C2 un (n2, k2, d2) q-código, ambos
sobre el mismo alfabeto. Supongamos que en cada código fijamos un orden en sus palabras,
digamos C1 = hc11, c12, . . ., c1M1 i, C2 = hc21, c22, . . ., c1M2 i, donde h, i denotan un conjunto
ordenado. Luego, podemos intercalar las palabras códigos de C1 y C2 para formar el código
intercalado C1 ¯C2 = {c11c21, c12c22, . . ., c1Mc2M} donde M = mín. {M1, M2}. Se puede ver que C1
¯C2 tiene parámetros (n1 + n2, mín. {M1, M2}, d) donde d ≥ d1 + d2. Si algún Ci es vacío, entonces
por definición C1 ¯C2 es el otro código. Combinando las dos construcciones anteriores, pegado e
intercalado, tenemos el siguiente resultado.
4. A que se refiere la Cota de Hamming, Singleton y Códigos MDS
Cota de Hamming:
Son códigos llamados perfectos, La cota de Hamming da una cota superior para el tamaño M que
un código de longitud n y distancia d puede tener. Si C es un código de longitud n sobre Fq que
corrige t errores, entonces mVq(n, t) ≤ q n siendo m el número de palabras de C. Los códigos C para
los que se alcanza la igualdad en la cota anterior, son llamados perfectos.
Cota de Singleton:
Dependiendo del método que se quiera usar, se puede agregar más palabras a un código o quitar
palabras a un código para que este pueda ser entendido
Códigos MDS:
Un código C de tipo [n,k,d] es MDS si d = n − k + 1 (como hemos visto anteriormente). Proposición:
Si C es MDS entonces también C ⊥ es MDS. Para cualquier entero n existen siempre códigos MDS de
longitud n y dimensiones 1, n−1 y n; los llamaremos MDS triviales. Sobre F2 estos son los ´únicos
que existen. Sobre otros cuerpos, existen códigos MDS tanto triviales como no triviales.
Investigue sobre los tipos especiales de códigos lineales: Hamming y códigos simples, de Golay y
Reed-Muller
Códigos de Hamming:
Es un código que se utiliza en la detección y corrección de errores que se producen en la transmisión
de códigos binarios, la palabra de código se conforma por los bits de comprobación y los bits de
información.
El código Hamming se genera a partir de una distancia mínima de 3, ya que una distancia de 1 o 2
es inconveniente para poder generar un código para detectar un error.
La distancia mínima de Hamming está dada por la siguiente ecuación: Dm= 2X+1 Donde Dm es la
distancia mínima de un código para permitir la corrección de datos y X es las líneas de datos.
Si se tuviese una distancia de 1 no tendríamos valores para saber si hay o no un error.
Si se tienen una distancia de 2 se podría lograr un sistema de corrección de error con un bit de
paridad, pero el problema que esto lleva es que un sistema con distancia 2 puede tener datos
erróneos que pueden pasar como datos correctos.
Con la distancia de 3 se tiene que los códigos no van a tener datos o resultados similares por ende
se puede detectar el error y se puede desarrollar un sistema para su corrección como el Hamming
Código Simplex:
El código simplex Σq(r) es el código dual del código de Hamming Hq(r), para r ≥ 2. Luego Σq(r) tiene
longitud n = (q r − 1)/(q − 1) y dimensión complementaria r. Una matriz generadora para Σq(r) es
una matriz de paridad para Hq(r), luego la matriz Hq,r genera Σq(r). La llamamos Gq,r cuando la
pensamos como la generadora de Σq(r).
5. Códigos de Golay:
El código de Golay G24 es el código lineal binario definido por la matriz generadora
El código de Golay G24 tiene las siguientes propiedades.
(i) G24 es autodual, es decir G ⊥ 24 = G24.
(ii) G24 está generado por la matriz G = (A |Id12).
(iii) Si c ∈ G24 entonces 4 |w(c).
(iv) G24 no tiene palabras de peso 4.
(v) G24 es un [24, 12, 8]-código.
Códigos de Reed-Muller:
Estos códigos fueron estudiados por primera vez por I. E. Reed (1954) y por D. E. Muller (1954). Hay
uno de estos códigos para cada par r, m ∈ N, con 0 ≤ r ≤ m. Existen, sin embargo, muchas formas
alternativas de definirlos. Por ejemplo, a través de polinomios booleanos en m variables de grado a
lo sumo r, ´o, como funciones características de hiperplanos afines de la geometría euclídea finita
EG(m, 2). No entraremos en estos detalles y daremos una definición recursiva de estos códigos,
utilizando la construcción (u, u + v)
Investigar los siguientes códigos cíclicos:
Códigos cíclicos y anillos de polinomios
Sea K un cuerpo finito de característica p con p e elementos. Sea Z una indeterminada, K[Z] el
correspondiente anillo de polinomios.
Ceros de un código cíclico y matriz de control.
Codificación y decodificación en códigos cíclicos.
6. Bibliografía:
Cisneros, A. (2012). INFORMACIÓN Y CODIFICACIÓN. Bogotá.
de la Cruz, J. (2014). Códigos autoduales con un automorfismo de orden primo impar. Revista
Colombiana de Matemáticas, 135-163.
García, M. (2017). Introducción a la Tería de Códigos.
Graña, B. (8 de Noviembre de 2008). Teoría de códigos. Obtenido de
http://mat.usal.es/~beagra/teaching/ApuntesCodigos.pdf
Jimenez, P. (2013). Compresión de datos usando códigos lineales. Obtenido de
http://repositori.uji.es/xmlui/bitstream/handle/10234/100208/TFG_2014_JIMENEZMATE
OP.pdf?sequence=1
María, I. (s.f.). Lecciones de Elementos de Algebra. Aplicaciones. Obtenido de
https://www.uv.es/iranzo/lecciones_de_codigos.pdf
Podestá, R. (20 de Julio de 2012). INTRODUCCION A LA TEORÍA DE CÓDIGOS AUTOCORECTORES.
Obtenido de http://www.famaf.unc.edu.ar/series/pdf/pdfCMat/CMat35-3.pdf
Reina, M. (4 de Octubre de 2012). Códigos lineales. Obtenido de
http://euclides.us.es/da/apuntes/ae/ae0405b.pdf