Está en la página 1de 5

Códigos Lineales

Introducción
Una de las
aplicaciones más
recientes del álgebra
lineal es a la teoría de
códigos, que trata el
problema de
representar
información para
facilitar su procesado,
envío por diferentes
canales y posterior
recuperación. A
grandes rasgos, la
transmisión de
información consta
de los siguientes
elementos:

• El emisor y el receptor del mensaje, que son respectivamente quien emite y recibe el
mensaje.
• El canal, es el medio físico de transmisión por el que viajan las señales portadoras del
mensaje.
• El código, es las distintas formas que puede tomar el mensaje para ser emitido. Cada uno
de los elementos de un código se denomina palabra código. El lenguaje humano y la
escritura pueden ser considerados códigos. Otros son el código Morse, el código de barras,
el NIF, el ISBN usado en los libros, el ASCI usado en los ordenadores etc.

En general, cualquier medio tecnológico que transmita o almacene mensajes, como los
ordenadores, las trasmisiones vía satélite, los CD’s, involucra al menos un código, y con frecuencia
estos códigos están escritos con dos dígitos: 0 y 1.

Los tipos de códigos más comunes con los de bloque y los lineales. Una estructura que se desea que
tenga un código bloque, es la linealidad. Con esta estructura, la complejidad de la codificación se
reduce enormemente, como veremos más adelante.
Equivalencia y Automorfismo de Códigos

Códigos Duales y Ortogonales


Codificación y decodificación de códigos lineales
Para realizar la codificación en códigos lineales se utiliza una aplicación lineal que tiene que ser
inyectiva; luego el espacio de las palabras de longitud k verifica F k ∼= C. Cuando un código es muy
grande, se aprecia con claridad la necesidad de codificar y descodificar por formula.
El proceso de codificación es en general, mucho más fácil que el de decodificación debido a que en
la decodificación se incluye la corrección de errores, lo cual es más costoso de implementar.

Constructores con Códigos Lineales


• Pinchado
En el caso cuando d = 1. La demostración es trivial.

Corolario: Sea C un [n, k, 1]-código sobre Fq y sea C? i el código pinchado en la i-´esima


coordenada. Si C? i 6= 0 entonces es un [n−1, k?, d? ]-código, donde, 1. k? = k si (0, . . ., 1i, 0
. . ., 0) 6∈ C. 2. Si k > 1, y no se cumple el apartado anterior será un [n−1, k−1, 1]-código.

Sea C un código lineal sobre F. Sea C ? el código pinchado en la ´ultima coordenada y luego
extendido (por definición, también en la ´ultima). Entonces C = C ? si y solo si C es de tipo
par.

• Extendido

Es muy fácil comprobar cualquiera de los siguientes hechos.

Observación: Extendido de lineal es lineal. Aún más, si C es lineal y tiene parámetros [n, k,
d] entonces Cb tiene parámetros h n + 1, k, db i , donde db= {d, d + 1}.

¿A qué se refiere la Cota de Hamming, Singleton y Códigos MDS?


• Un código Hamming (n, k) se caracteriza por una matriz H cuyas columnas son todas las
posibles secuencias de n- k dígitos binarios excepto el vector 0. Los códigos Hamming son
perfectos.
• El patrón Singleton se encarga de controlar que únicamente se crea una instancia de una
clase en toda la aplicación mediante el uso de un único punto de acceso.
• Un código C cuyos parámetros satisfacer k + d = n +1 se conoce como distancia máxima
separable o MDS (por sus siglas en inglés). Estos códigos, cuando existen, son de alguna
manera lo mejor posible.

Investigue sobre los tipos especiales de códigos lineales: Hamming y códigos


simples, de Golay y Reed-Muller
• Código Hamming: Un código Hamming (n, k) se caracteriza por una matriz H cuyas columnas
son todas las posibles secuencias de n- k dígitos binarios excepto el vector 0. Los códigos
Hamming son perfectos.
• Código Golay: En las matemáticas y en la informática el código binario de Golay es un tipo
de código corrector de errores usado en las comunicaciones digitales.
• Código Red-Muller: Son una familia de códigos que cubre un amplio rango de tasas y
distancias mínimas. Para cualquier valor de m, y fijando un r < m, hay un código Reed-Muller
con n=2^m

Investigar los siguientes códigos cíclicos:


Un [n, k]-código lineal C sobre Fq se llama código cíclico si cumple que es cerrado para
permutaciones cíclicas; es decir, (x0, . . ., xn−1) ∈ C ⇒ (xn−1, . . ., xn−2) ∈ C.

Códigos cíclicos y anillos de polinomios


Seguimos suponiendo que mcd (n, p) = 1. Considérese F n q con la base canónica En y Rn = F n q /
(Xn − 1), como hemos estudiado, con su base canónica Xn = 1, X, X2, . . ., Xn (abusando de notación,
porque deberían de tener barras). Sea φ: En → Xn tal que φ(ei) = Xi−1, i = 1, . . ., n. Esta
correspondencia induce un isomorfismo Ψ: F n q −→ Rn que dejaremos en notación fija.

Ceros de un código cíclico y matriz de control


Sea C un código cíclico de orden n sobre Fq, con mcd (n, q) = 1, sea ξ una raíz n-´esima
primtitiva de 1, y sea S un juego completo de representantes de las clases q-ciclot´omicas
modulo n. Sea g(X) el generador de C (Observación 6.5.6). Como sabemos del Teorema 6.5.5
si g(X) | Xn − 1 entonces g = Y t∈T ⊆S mξ t.
Codificación y decodificación en códigos cíclicos
Como hipótesis general, supongamos que tenemos un código cíclico C ≤ Rn tal que C = hgi, con g el
polinomio generador, con gr(g) = r, así que la dimensión dim C = n − r. Comenzamos con la
codificación. Vamos a ver una decodificación sistemática. Supongamos que queremos codificar la
palabra a0 · · · an−r−1.

1. Hacemos a(X) = Pn−r−1 i=0 aiXn−i−1

2. Luego operamos a(X) = pg + s, con gr(s) < r.

3. Finalmente hacemos c = a − s = pg.

Para decodificar, se puede proceder de la siguiente manera.

1. Se recibe un vector p ∈ Rn.

2. Se divide p = gs + t, con gr(t) < r. Es claro que si p = c + e, entonces existe s 0 ∈ Rn tal que p = c 0 g
+e. La unicidad del algoritmo de la división nos dice que c = c 0; luego p − t es la palabra buscada.