ALGEBRA LINEAL II FERNANDO LOPEZ CARNÉ: 22000114
Códigos Lineales
Proyecto
En este reporte de proyecto está enmarcado en los términos de códigos lineales, por lo tanto nos
lleva a las teorías de información. Empezamos conociendo este mundo con nuestro padre de la
información Claude Shannon, un matemático y cientí co de computación que desempeñó un papel
crucial en el desarrollo de la teoría de la información y su aplicación en la teoría de códigos, incluidos los
códigos lineales. El documento está estructurado con la intención de comprender el signi cado y proceso
de código y codi cación para luego entender el término de códigos lineales, con ejemplos al nalizar y sus
aplicaciones en nuestro día a día.
Para comprender, comencemos desde la base de nuestra de nición. ¿Qué es un código? Es una
manera de transformar la información, esta transformación sigue un conjunto de reglas ya establecidas.
La información se codi ca a menudo para realiza un manejo más sencillo a la hora de ser enviada. El
objetivo de transformar la información en códigos es para promover la privacidad entre el emisor y el
remitente, además de detectar y corregir posibles errores que se generan durante la transmisión.
Este proceso de transformar la información a un código es denominado codi cación, para
realizar el proceso, se necesita de nir dos conceptos, el alfabeto e información. El alfabeto es un conjunto
nito de caracteres o símbolos y la información es la sucesión de nuestro conjunto de alfabeto, como una
frase. La información de entrada no necesariamente debe ser con el mismo alfabeto, por esto la
transformación.
Una codi cación sencilla para un ejemplo inicial, podemos usar el sistema binario, donde el número
4 (con alfabeto decimal) será transformado en el nuevo alfabeto abarcando la misma información el cual
sería 100 (con alfabeto binario).
Número Decimal Número Binario
1 1
2 10
3 11
4 100
5 101
6 110
CÓDIGOS LINEALES 1
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
ALGEBRA LINEAL II FERNANDO LOPEZ CARNÉ: 22000114
Una vez completemos la transformación, tenemos la di cultad de como entenderíamos el mensaje en
nuestro lenguaje o nuestro alfabeto por lo que seguimos con el paso de decodi cación. El concepto de
decodi cación hace referencia al acto de decodi car, esto nos indica aplicar el sentido inverso a las reglas de
nuestra codi cación. Básicamente es regresar por nuestros pasos al momento de realizar la
transformación, esto asegura nuestra privacidad al intercambio de información ya que, a menos que la
otra persona tenga las reglas, puede realizar la decodi cación y descifrar el mensaje enviado.
Ahora que hemos comprendido como funcionan los códigos, podemos proceder a ver un código
lineal. Los códigos lineales surgieron bajo un problema, el almacenamiento de datos era costoso y la
exigencia de una gran cantidad de memoria al ingresar un código “crudo”, esto nos llevo a desarrollar
una estructura algebraica añadida, para este caso, todas las palabras de los códigos lineales son una
combinación lineal de otras palabras.
La de nición de un código lineal es la siguiente: un código lineal de longitud n sobre q es un sub-espacio
vectorial de n.
q
Todo código lineal C de longitud n, es también código en bloque de longitud n. Como es un espacio
vectorial, C posee una dimensión k, luego su cardinal es una potencia de q, q k. Los números de n y k son
los parámetros fundamentales de C, junto con la distancia mínima d.
Dentro del campo de nuestros códigos lineales, es importante contar con una matriz generatriz,
se le llama matriz generatriz de C a una matriz G ∈ Ma tk×n( q ) cuyas las forman una base de C. Estos
elementos nos sirven para determinar de forma única todos los elementos de C como combinación lineal
de ellos.
Ejemplo:
Un código lineal de (7,3):
C = < 0110110,0110100,1011101 >
Por lo que siguiendo la de nición de la matriz generatriz, tendremos por matriz:
0 1 1 0 1 1 0
(1 0 1 1 1 0 1)
G = 0 1 1 0 1 0 0
La ventaja de llegar a obtener la matriz generatriz de G de un código lineal sobre q, podremos llegar a
obtener todas las palabras de nuestro código lineal C de forma más sencilla, su ciente en conseguir todos
los elementos de kq, seguido de calcular los productos (y1 . . . yk )G, que darán exactamente las palabras de
nuestro código lineal C.
CÓDIGOS LINEALES 2
𝔽
𝔽
𝔽
𝔽
𝔽
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
ALGEBRA LINEAL II FERNANDO LOPEZ CARNÉ: 22000114
Ademas de poder escribirse como sistemas de generadores, nuestros sub-espacios vectoriales n
q
pueden expresarse como ecuaciones implícitas que describan nuestro espacio.
De nición: Digamos que nuestra Matriz N es nuestra matriz de control de nuestro código C si
para todo vector x ∈ nq , este se veri ca que x ∈ C si y solo si Nx t = 0 . Si nuestro código C se esta
de niendo a base de q y es de tipo [n, k], entonces nuestra matriz N esta de nida sobre q.
Sea x = (x1, . . . , x n ) ∈ n. Estaremos llamando control a nuestro conjunto.
q
c o n (x) = {i | 1 ≤ i ≤ n , xi ≠ 0}
Ahora que ya hemos de nido sus formas de representación y generadores de código, llegamos a la
fase de codi cación, como ya he indicado, si la matriz generativa G ∈ Ma tk×n( q ) es matriz generativa
de nuestro código C podemos llegar obtener de manera sencilla las palabras de nuestro código. Basta con
encontrar y considerar (y1, . . . , yk ) ∈ kq y calcular (y1, . . . , yk )G . Para construir los mensajes vamos a
utilizar nuestro diccionario que estaría entrando en nuestro sub-espacio k que consta de nuestras
q
palabras, podemos identi car cada una de las palabras con un elemento (y1, . . . , yk ) ∈ k. Para empezar
q
escogemos un código lineal C que su capacidad sea adecuada al canal que estaremos empleando, luego
de nimos su matriz generadora de nuestro código, que podemos denotarla con la letra G. Luego para
codi car nuestra palabra, usando el código elegido (y1, . . . , yk )G y a base de esto se estará enviando la
información a través de nuestro canal.
Ejemplo:
Supongamos que deseamos realizar una transmisión de un planeta hacia otro. Estamos realizando
un envío de palabras clave las cuales son:
L = {orbita, atmosfera, roca, gases, esfera, eje, polo, nucleo}
Esta información es procesada y extraída por un equipo en el primer planeta y ha dividido la
información en código binario buscando transmitir las palabras claves, como son en código binario solo
constan de 0 y 1, se ha identi cado cada una de nuestras palabras en una terna de 32. Según lo anterior
tenemos la siguiente biyección:
f :L ⟶ 3
2
orbita ⟶ (1,1,1)
atomosfera ⟶ (0,0,0)
roca ⟶ (1,0,0)
gases ⟶ (0,1,0)
esfera ⟶ (0,0,1)
eje ⟶ (1,1,0)
polo ⟶ (1,0,1)
nucleo ⟶ (0,1,1)
CÓDIGOS LINEALES 3
𝔽
𝔽
𝔽
𝔽
𝔽
𝔽
𝔽
𝔽
𝔽
𝔽
𝔽
fi
fi
fi
fi
fi
fi
fi
fi
fi
fi
ALGEBRA LINEAL II FERNANDO LOPEZ CARNÉ: 22000114
Una vez realizada la codi cación de nuestras palabras clave, entramos en un problema común, ya
que las distancias entre los planetas llegan a ser relativamente grandes, no seríamos capaces de encontrar
y/o detectar errores en la transmisión, si lo enviamos como ternas. Esto sería un problema ya que pueden
llegar a ser interpretadas de una forma errónea al valor inicial de nuestras palabras clave y no podremos
garantizar nuestra información. Este problema se puede solucionar de manera sencilla usando un método,
donde aumentamos el tamaño binario haciéndolo de mayor longitud, es decir, las tuplas usadas para cada
palabra sean aún más largas, en este ejemplo haremos que tenga dimensión 3, para que conste de 8
palabras, usemos un código de (7,3) C = < 0110100, 0011010, 0001101 > , es de longitud 7 y de
dimensión 3 con una distancia mínima de 3. Usando C transmitiríamos con una matriz generatriz:
0 1 1 0 1 0 0
(0 0 0 1 1 0 1)
G = 0 0 1 1 0 1 0
De esta manera podemos realizar la transformación, ahora la palabra orbita se transmitiría como la
tupla 0100011, la palabra atmósfera sería 0000000, la palabra roca sería 0110100, y sucesivamente hasta
terminar con las demás palabras. Con esta codi cación seríamos capaces de encontrar diferentes errores
en la transmisión de nuestra información por las distancias largas o la perdida de información en el
camino por diferentes causas.
Los códigos de Hamming llevan el nombre de Richard Hamming, un matemático y cientí co de la
computación estadounidense que los desarrolló en la década de 1950. Estos códigos fueron concebidos
como una solución e caz para detectar y corregir errores en las primeras computadoras y sistemas de
transmisión de datos, donde los errores de bit eran comunes. Los códigos de Hamming son una forma
especí ca de códigos lineales que trabajan con palabras binarias (0 y 1).
Un código de Hamming se denota como [n, k], donde "n" es la longitud total de cada palabra del
código y "k" es la longitud de la parte del mensaje que se desea transmitir. Los restantes "n - k" bits se
utilizan para la redundancia y la detección/corrección de errores.
Al igual que en los códigos lineales en general, los códigos de Hamming también utilizan una matriz
generadora para codi car los mensajes. La matriz generadora se construye de manera que los vectores la
generen todas las palabras del código.
Además de la matriz generadora, se utiliza una matriz de comprobación de paridad para detectar y
corregir errores. Esta matriz se crea de manera que, cuando se multiplica por una palabra codi cada, el
resultado es un vector de paridad que indica si se ha producido un error y, en caso a rmativo, dónde se
encuentra.
CÓDIGOS LINEALES 4
fi
fi
fi
fi
fi
fi
fi
fi
fi
ALGEBRA LINEAL II FERNANDO LOPEZ CARNÉ: 22000114
Un ejemplo común es el código de Hamming (7, 4), que toma una palabra de 4 bits y agrega 3
bits de paridad. Aquí tienes una matriz generadora para el código de Hamming (7, 4):
1 0 0 0 1 1 0
(0 0 1 0 0 1 1)
G = 0 1 0 0 1 0 1
Para codi car un mensaje de 4 bits, se multiplica por esta matriz generadora. Por ejemplo, si el
mensaje es 1101, la palabra codi cada sería:
1101 * G = 1101001
Aquí, los tres bits adicionales (100) son bits de paridad que se utilizan para detectar y corregir
errores.
Los códigos de Hamming se basan en conceptos de álgebra lineal y teoría de códigos. La
demostración principal se relaciona con la capacidad del código para detectar y corregir errores, así como
la e ciencia en términos de redundancia. Las demostraciones especí cas pueden variar según la
con guración del código, como (7, 4), (15, 11), etc. En resumen, los códigos de Hamming son una clase
especí ca de códigos lineales diseñados para detectar y corregir errores en transmisiones de datos. Estos
códigos desempeñaron un papel fundamental en el desarrollo de sistemas de comunicación y computación
con ables y siguen siendo relevantes en la actualidad.
Los códigos lineales representan una parte esencial de la teoría de códigos y desempeñan un papel
crítico en la transmisión segura y con able de información en nuestra vida cotidiana. A medida que la
tecnología continúa avanzando y la cantidad de datos que transmitimos y almacenamos sigue creciendo
exponencialmente, los códigos lineales se vuelven aún más relevantes. Estos códigos, basados en conceptos
matemáticos sólidos, garantizan que los datos lleguen a su destino sin errores, ya sea en comunicaciones
digitales, almacenamiento de datos o transmisiones inalámbricas. Los códigos lineales, con su propiedad de
linealidad y matrices generadoras, nos permiten detectar y, en algunos casos, corregir errores de manera
e ciente. Además, su in uencia se extiende más allá de las aplicaciones de comunicación y
almacenamiento, llegando a la criptografía, la detección de errores en sistemas de procesamiento de datos,
y más. La historia de los códigos lineales, in uenciada por guras prominentes como Claude Shannon,
resalta su importancia en la creación y mejora de tecnologías esenciales que forman la base de la sociedad
digital actual.
CÓDIGOS LINEALES 5
fi
fi
fi
fi
fi
fi
fl
fi
fi
fl
fi
fi
ALGEBRA LINEAL II FERNANDO LOPEZ CARNÉ: 22000114
Bibliografía
Jiménez Mateo, P. (2014). Compresión de datos usando códigos lineales.
https://repositori.uji.es/xmlui/handle/10234/100208
Generalizados, C. T., & Benito, D. R. Estructura Métrica de los Códigos Lineales.
https://www.rsme.es/arbolmat/Campillo/PhDs/TesisDRuano.pdf
Introducción a la teoría de códigos. M.A. García, L. Martínez y T. Ramirez
https://bit.ly/IntroducciónalaTeoríadeCódigos
CÓDIGOS LINEALES 6