Este documento explica los fundamentos de la teoría de codificación. La teoría de codificación busca aumentar la probabilidad de que un mensaje sea recuperado correctamente a pesar de posibles errores durante la transmisión. Se usa información redundante para detectar y corregir errores mediante la asignación de códigos a los mensajes. Los ejemplos muestran cómo los códigos de repetición y los códigos par-impar pueden detectar errores durante la transmisión.
2. Fuandamentos
La Teoría de la Codificación Algebraica es una de las aplicaciones más recientes del
algebra. Se suele fijar su nacimiento en el año 1948 con los trabajos de Claude
Shannon sobre la Teoría Matemática de la Información.
Richard Hamming, uno de los creadores de la teoría de códigos, cuenta la siguiente
anécdota:
Cuando trabajaba para Bell Lavoratories, en los años cuarenta, tena acceso a los
computadores solo los fines de semana. Sola dejar corriendo ciertos programas en el
ordenador y cuando volva, el fin de semana siguiente, encontraba que alguno de los
programas que más necesitaba no habían sido ejecutados
3. (cuando el ordenador detecta un error en un programa, suele detener su realización y pasa a otro que
este en la cola de espera). Esto ocasionaba importantes atrasos a su trabajo y le llevó a plantearse el
problema de acondicionar de algún modo la información que maneja el ordenador de tal suerte que no
solo fuera capaz de detectar un error y pararse, sino que pudiera corregir los errores.
Uno de los objetivos de la Teoría de Códigos es conseguir aumentar todo lo que se pueda la
probabilidad de que el mensaje correcto pueda ser recuperado a pesar de los posibles
errores, siempre que el número de estos sea razonable. La teoría de los datos (Teoría de claves
o tipografía), ayuda a reducir los efectos de la distorsión. La información redundante ayuda a
proteger los mensajes contra los errores. No hay seguridad absoluta, pero sí una gran
probabilidad de conseguirla con este sistema.
4. Antes de profundizar debemos tener claro varios elementos
El mensaje: unidad básica de información (Sucesión finita de un alfabeto finito).
Ruido: perturbaciones en el canal de transmisión que pueden generar distorsión en la data
(Se originan por fenómenos físicos).
Variable K: servirá para representar el número de errores que se detecten
Peso: cantidad de veces que se repite un elemento (con esto se toma el elemento de peso y
el código referente a este).
Información redundante: dentro de ciertos límites razonables, se utiliza por los códigos
detectores de errores para que en caso de que alguno ocurra pueda ser detectado por el
receptor.
5. Los siguientes ejemplos ayudarán a entender mejor lo antes planteado
Supongamos que deseamos transmitir los mensajes si o no. Podemos
asignar al mensaje si el 1 y al no el 0.
Si transmitimos el mensaje (si) codificado como un 1, un error provoca que el receptor reciba 0 e
interprete (decodifique) 0 como el mensaje incorrecto (no). Vemos que un error nos hace perder el
mensaje.
Este contratiempo tiene una fácil solución
Codificamos el mensaje (si) como 11111 y el (no) como 00000.
6. Ahora, si queremos transmitir por el canal de comunicación el mensaje, enviaremos el
mensaje codificado 11111. Si hay dos errores o menos de dos, se recibe un mensaje que
consiste en una cadena de 5 ceros y uno que contiene al menos 3 unos. El receptor decodifica
el mensaje recibido como (si). Simplemente, interpreta que se han producido uno o dos
errores en la transmisión y que el mensaje enviado era realmente 11111.
Es decir, con este código (código binario de repetición de longitud 5) el receptor decodifica el
mensaje recibido con 1 o 0, dependiendo del peso (en este caso, como se trata de el
conjunto de binarios se toma como peso la cantidad de veces que el numero 1 aparezca).
en el mensaje que recibe. Parece muy razonable, pues no es muy probable que al enviar el
mensaje 11111 o el 00000 se produzcan K o más de K errores.
7. Otro ejemplo interesante y simple es el siguiente (usado en cintas magnéticas para
computadores):
Para representar 32 símbolos distintos se emplean los enteros de 0 a 31 en el sistema binario.
Son cadenas de ceros y unos de longitud 5. Se añade un digito redundante de modo que la
cadena de longitud 6 resultante (mensaje codificado) tenga un numero par de unos. Puede
producirse, aunque con pequeña probabilidad, un error ocasional en uno de los bits. El
resultado es que el numero de unos en la cadena codificada será impar. En este caso la
maquina se para porque ha detectado un error.
Este es un ejemplo de lo que llamaremos códigos capaces de detectar un único error.