1
C ´
ODIGOS CORRECTORES
Piensa en un n´umero entre 0 y 15. Si siempre dices la verdad, yo podr´ıa adivinar tu n´umero con 4 preguntas, cuyas posibles respuestas son: ”s´ı” o ”no”. ¿Por qu´e?Un truco para justificar lo anterior es representar cada n´umeronentre 0 y 15 en sistema binario: n=a·23+b·22+c·2 +d, dondea, b, c, d son o 0 o 1.
Es decir, comunicarnes lo mismo que comunicar los cuatro bits a, b, c, d. Por tanto, se requieren de cuatro preguntas para determinar el n´umero.
Ejercicio 1: ¿Cu´ales podr´ıan ser las preguntas?
Pero si ahora complicamos un poco m´as el problema y se permite mentir una (sola) vez. ¿Cu´antas preguntas te tendr´ıa que hacer para detectar si mientes? ¿Cu´antas en el caso de que quiera corregir tu mentira (o error) y adivinar el n´umero que realmente pensaste?
Canal binario perfecto
Un canal binario es un canal para comunicar bits. En el primer problema, tenemos un canal binario perfecto para comunicar bloques de 4 bits entre t´u y yo. ”Perfecto” porque el canal transmite el mensaje sin cambiarlo.
Canales con ruido
En la pr´actica, los canales binarios no son perfectos, y pueden cambiar un 1 en un 0, o viceversa, con cierta probabilidad (Teor´ıa de Shannon). El segundo problema, cuando se permite una mentira, es un ejemplo de esta situaci´on: la mentira intercambia los bits. La teor´ıa de los codigos correctores de error, o teor´ıa de la codificaci´on, trata de m´etodos de procesar mensajes para proteger contra errores introducidos por el canal.
La idea fundamental es introducir cierta estructura o informaci´on redundante en el mensaje que se env´ıa. Si esa estructura no est´a en el mensaje que se recibe, se sabe que ha habido cambios en el canal; una estructura lo suficientemente rica permite recuperar el mensaje original, siempre que no haya habido demasiados cambios. Es muy parecido a lo que ocurre en lenguaje natural: piensa en c´omo funcionan los programas correctores de ortograf´ıa. Imaginemos que recibimos el siguiente mensaje de texto:
”En un lular de la Mancha”
Nos damos cuenta inmediatamente de que se han producido errores en la transmisi´on, porque ”lular” no es una palabra del castellano. ´Esta es una idea importante: no todas las combinaciones de letras son palabras v´alidas de nuestro diccionario y esto nos permite detectar en este caso el error.
Pero vayamos m´as all´a: supongamos que transmitimos la palabra “Zaragoza” y recibimos, por ejemplo, “Zatagoza”. Por supuesto, detectamos que se ha producido alg´un error; pero a´un m´as, cualquiera se sentir´ıa en disposici´on de corregir el error: se ha producido en el tercer s´ımbolo, y era una r en lugar de una t. La raz´on es clara: no hay palabras en castellano “cerca” (en el sentido de “parecidas”) de Zaragoza. Pero si transmitimos “casa” y recibimos “cusa”,
pese a que detectamos el error, ya no est´a tan claro c´omo corregirlo: podr´ıamos haber emitido lusa, musa, cuna, etc. Peor a´un, podr´ıamos haber recibido “tasa” en lugar de “casa” y ni siquiera podr´ıamos detectar el error. La raz´on, la misma de antes, pero al rev´es: ahora hay muchas palabras semejantes (”muy cerca”) a “casa”.
Enumeremos las ense˜nanzas de estos ejemplos:
• La estructura: un conjunto de s´ımbolos (el abecedario) y unas palabras formadas con ellos (el diccionario).
• Las palabras del diccionario deben estar separadas (para detectar errores) . . . y si est´an muy separadas, hasta nos atreveremos a corregir.
Volviendo a nuestro problema de adivinar un n´umero, un caso m´as f´acil es reconocer un mentiroso, sin intentar recuperar su n´umero. Para esto, en vez de mandar 4 bits [a, b, c, d], se mandan 5, [a, b, c, d, e] dondeese escoge de manera que el n´umero total de 1’s en el vector sea par. Si los bits del mensaje que llega no satisfacen la condici´on de paridad, se detecta que ha habido errores, pero no hay manera de corregirlos.
Ejercicio 2: Continuando con el ejercicio 1, ¿cu´al ser´ıa la pregunta para determinare?
Para corregir, y no solamente detectar, errores, hay que introducir a´un m´as estructura en el mensaje.
1.1
C´
odigos de Hamming
Un c´odigo lineal de longitud n y rango k es un subespacio lineal C con di-mensi´onkdel espacio vectorialF2n, dondeF2={0,1}(es el cuerpo finito con 2
elementos). Tal c´odigo se denomina c´odigo binario. Los vectores enCse llaman
1. Existe una matriz generadoraG deC de la forma (Ik, A) donde Ik es la
matriz identidad de ordenkyAes una matriz de orden k×(n−k). 2. Existe una matriz de comprobaci´on de paridad H para C de la forma
(B, In−k), dondeBes una matriz de orden (n−k)×k. M´as a´un,B=At.
3. Un c´odigo de distancia m´ınimaddetectad−1 errores y corrige [(d−1)/2] errores.
En nuestro problema de adivinar un n´umero, consideraremos el c´odigo de Hamming [7,4,3] (el hecho qued= 3 es una consecuencia de la definici´on del c´odigo). Seg´un la propiedad 3, detecta dos errores y corrige uno. Una matriz generadora ser´ıa G= 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 1 1 1 . Observa que six= a b c d , entonces xG= a b c d 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 1 1 1 = a b c d a+b+d a+c+d b+c+d ,
que es una relaci´on que nos ser´a ´util para construir expl´ıcitamente el c´odigo. Veamos c´omo la matriz Ggenera las palabras del c´odigo que incluye los (tres)
d´ıgitos redundantes para cada n´umero del 0 al 15: 20 21 23 24 25 26 27 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 2 0 1 0 0 1 0 1 3 1 1 0 0 0 1 1 4 0 0 1 0 0 1 1 5 1 0 1 0 1 0 1 6 0 1 1 0 1 1 0 7 1 1 1 0 0 0 0 8 0 0 0 1 1 1 1 9 1 0 0 1 0 0 1 10 0 1 0 1 0 1 0 11 1 1 0 1 1 0 0 12 0 0 1 1 1 0 0 13 1 0 1 1 0 1 0 14 0 1 1 1 0 0 1 15 1 1 1 1 1 1 1 α a b c d e f g −→ P1 P2 P3 P4 P5 P6 P7 1 1 1 2 2 2 3 3 3 3 4 4 4 5 5 5 5 6 6 6 6 7 7 7 8 8 8 9 9 9 10 10 10 11 11 11 11 12 12 12 13 13 13 13 14 14 14 14 15 15 15 15 15 15 15 y1 y2 y3 y4 y5 y6 y7 verific´andose: e=a+b+d,f =a+c+dyg=b+c+d.
As´ı, las columnas P1, P2, P3, P4, P5, P6, P7 son los conjuntos que nos
de-terminan las preguntas que vimos en el demo del juego de la adivinanza, e y1, y2, y3, y4, y5, y6, y7 son las respuestas ”S´ı = 1” o ”N o = 0”. Si llamamos
α = a b c d e f g
e y = y1 y2 y3 y4 y5 y6 y7, pueden
suceder dos casos: que sean id´enticos o que se diferencien en una sola compo-nente. Equivalentemente,w(α+y) = 0 o 1, respectivamente. Siw(α+y) = 0, el participante dijo la verdad. Siw(α+y) = 1, el participante minti´o una vez, y la posici´oni donde se encuentra el 1 enα+y corresponde a la preguntaPi,
volv´ıa, el fin de semana siguiente, encontraba que alguno de los programas que m´as necesitaba no hab´ıan sido ejecutados (cuando el ordenador detectaba un error en un programa, deten´ıa su realizaci´on y pasaba a otro que estaba en la lista de espera). Esto ocasionaba importantes atrasos en su trabajo y le llev´o a plantearse el problema de acondicionar de alg´un modo la informaci´on que maneja el ordenador de tal suerte que pudiera corregir los errores.
Imaginemos que se desea enviar informaci´on digital (una cadena de ceros y unos) a trav´es de un canal de comunicaci´on de una forma r´apida y segura. El canal de comunicaci´on puede ser una l´ınea telef´onica, comunicaci´on v´ıa sat´elite, fibra ´optica, almacenamiento de datos en un disco, cinta de computadora, etc. A veces ocurre que el mensaje que se recibe no concuerda con el enviado, prin-cipalmente debido a alg´un error humano, interferencias, deficiencias del equipo, situaciones atmosf´ericas, etc. Se suele decir que la comunicaci´on se hace a trav´es de un canal con ruido.
Los c´odigos de Hamming no son tan ´utiles en la actualidad, pero hay otros como los c´odigos de Reed-Muller (corrige 5 errores por cada secuencia de 32 bits) o c´odigos de Golay extremadamente ´utiles en diversos ´ambitos. La transmisi´on de informaci´on desde naves espaciales o a trav´es de sat´elites de comunicaciones es uno de los paradigmas de la teor´ıa de c´odigos. Los impresionantes avances tecnol´ogicos, en tecnolog´ıa digital, que en la actualidad son normales y que consideramos parte de nuestra vida cotidiana, como el tel´efono m´ovil, la tele-visi´on digital, los sistemas de navegaci´on a´erea y mar´ıtima, los CD-R, los DVD, en buena medida (pero no totalmente) no ser´ıan posibles sin el desarrollo de los c´odigos detectores-correctores de error. Estos c´odigos aparecen, adem´as, en medicina (tomograf´ıa), en los c´odigos de barras, en las transacciones comer-ciales y bancarias, en sistemas de grabaci´on y reproducci´on de im´agenes, audios y v´ıdeos y, en consecuencia, la importancia de su estudio y de la obtenci´on de resultados originales en este contexto est´a fuera de discusi´on.