 Ahora que hemos visto todos los conceptos relacionados con los espacios victoriales, estamos listos para presentar el código de hamming. Os recordamos el ereto, una pareja, Benito y Alicia, se encuentran en un bar y la pregunta es cómo pueden comunicarse aunque no se escuchen bien. Es decir, nos preguntamos si hay una manera de entenderse aunque lo que envía Benito no corresponde necesariamente a lo que recibe Alicia. Asumimos que Benito quiere enviar cuatro bits, una cadena de cuatro elementos tal que cada elemento es igual a 0 o 1. Podéis suponer que cada cadena corresponde a un mensaje particular. Entonces, hay 16 mensajes posibles que corresponden a las siguientes posibilidades, como acabo de decir, la transmisión del mensaje no es fiable y es posible que lo que envía Benito no corresponde a lo que Alicia recibe. Es decir, que en la cadena de bits que Alicia recibe, algunos bits pueden tomar el valor opuesto con respecto al mensaje enviado por Benito. Tomamos nota de que los mensajes, las cadenas de cuatro bits, se pueden considerar como vectores en el espacio vectorial f2,4. Vamos a definir dos matrices con coeficientes en f2. Sean g y h, las matrices siguientes. g es de tamaño cuatro veces siete y h es una matriz tres veces siete. Además, definimos las funciones g y h que corresponden a las aplicaciones lineales obtenidas por las matrices g y h. En particular, g toma vectores de f2,4 y da vectores de f2,7 y h toma vectores de f2,7 y da vectores de f2,3. Seguimos con una proposición. La imagen de la aplicación lineal g es igual al núcleo de la aplicación lineal h. Y vamos a demostrar esta proposición. Primero escribimos de nuevo las matrices h y g. Os recordamos que g es una matriz siete veces cuatro y h es una matriz tres veces siete. Y tomamos nota de que las columnas de g que llamamos c1 hasta c4 como vectores del espacio f2,7 son linealmente independientes. Entonces, si un vector v pertenece a la imagen de g, esto equivale a que v es un elemento del espacio generado por los vectores c1 hasta c4. Lo que nos permite deducir que la imagen de g es igual al espacio generado por los vectores c1 hasta c4. Por otro lado, si un vector de f2,7 pertenece al núcleo de h, entonces sus coordenadas satisfacen el sistema lineal siguiente. Este sistema es equivalente al siguiente y ahora concluimos que el núcleo de h se obtiene como el espacio generado por los vectores c1 hasta c4. Así concluimos que la proposición es cierta y definimos el código de Hamming que notamos h. H es igual al subespacio de f2,7 igual a la imagen de g y el núcleo de h. En particular, los elementos de h se llaman palabras del código. Ahora vamos a describir cómo Benito y Alicia se pueden comunicar de manera fiable usando el código de Hamming. Supongamos que Benito quiere enviar cuatro bits a Alicia. Por hecho, quiere enviar un vector m en f2,4. Primero calcula la imagen de m por g, una palabra del código c, y envía c a Alicia. C corresponde al vector de f2,7 siguiente. Alicia recibe un vector c' de f2,7 que posiblemente contiene errores. Es decir, algunas de las coordenadas pueden tomar los valores supuestos de las coordenadas de c y calcula el vector de f2,3s obtenido como la imagen de c' por h. Luego distinguimos dos casos según el valor de s. Si s es igual al elemento neutro y así c' corresponde a una palabra del código, Alicia construye el vector m' siguiente. El vector m' depende de c'. Por otro lado, si s es diferente del elemento neutro, Alicia calcula el número natural y obtenido a partir de las coordenadas de s. Cambia la i' coordenada de c', por su valor opuesto y construye el vector m' de f2,4 a partir del vector c', una vez modificado. Vamos a ver unos ejemplos para aclarar todo eso. Aquí tenemos un mensaje m, la imagen por g de m, c y el vector c', recibido por Alicia. En este primer ejemplo, c' contiene un error. Calculamos la imagen de s, la imagen s de c' por h. s es igual al vector 1, 0, 0. Calculamos i a partir de s. Cambiamos la primera coordenada de c', y deducimos que m' corresponde al mensaje original. Seguimos con otros valores para m, c y c', todavía con solo un error. Calculamos s es igual a 1, 1, 0, deducimos el valor de i, y cambiamos la tercera coordenada de c', y de nuevo obtenemos un m' igual a m. A continuación, consideramos un ejemplo donde se han cometido dos errores durante la transmisión. Tenemos m, c y c', calculamos s, deducimos, y cambiamos la primera coordenada de c', y notamos que el mensaje m' obtenido no corresponde al mensaje original. Entonces el protocolo que hemos descrito no nos permite corregir cualquier error. Por fin en el último ejemplo se han cometido tres errores durante la transmisión. Calculamos s, notamos que es igual al elemento neutro, y obtenemos un vector m', que de nuevo no corresponde al mensaje original. En unos momentos vamos a ver qué tipo de errores el protocolo nos permite corregir. Teorema, sea m el mensaje que Benito quería enviar y se hace prima el vector de f27 que Alicia recibió. El teorema dice que si c' contiene como máximo dos errores entonces Alicia puede detectar que la palabra del código fue alcerada en el camino. Y por otro lado, si c' contiene como máximo un error entonces Alicia puede recuperar el mensaje original m. Y vamos a ver por qué. Os recordamos la matriz h asociada al código de Hamming y ahora si c' contiene dos errores entonces c' se puede escribir como la suma de una palabra del código y de un vector e cuyas coordenadas son todas nulas excepto dos que son iguales a uno. Entonces la imagen de c' por h es igual a la imagen de e por h y ya que las columnas de h son por parejas linealmente independientes deducimos que la imagen de c' por h es diferente del elemento neutro. Luego, si c' contiene solo un error escribimos de nuevo c' como la suma de una palabra del código y de un vector e cuyas coordenadas son todas nulas excepto una. Calculamos s deducimos que s es diferente del elemento neutro ya que ninguna columna de h es nula y notamos que en particular s es igual a la isima columna de h donde i es la posición de la coordenada no nula del vector e. Entonces ya que i es igual a s1 más 2 veces s2 más 4 veces s3 deducimos que el valor de i está dado por este cálculo y así cambiando la isima coordenada de c' obtenemos la palabra del código c lo que nos permite extraer el mensaje original m. Por fin si c' no contiene errores entonces c' corresponde a la palabra del código enviado por Benito lo que permite a Alicia extraer el mensaje m y acabamos el módulo con el ejercicio siguiente os pedimos de deducir el mensaje enviado por Benito a partir de c' sabiendo que como máximo solo un error se ha cometido durante la transmisión