Recuperación de imagen

Una empresa muy reconocida de Argentina almacena por cada una de sus imágenes un archivo de bits de paridad permitiéndole recuperarla en caso de daño. El esquema de recuperación que utiliza es el siguiente:

A una imagen la divide en paquetes de 10 bytes, y por cada paquete calcula sus bits de paridad. Por ejemplo, supongamos el siguiente paquete de 10 bytes (80 bits).

1110 1100 1111 1100
1001 1101 1111 1000
1111 1111 1111 0000
1111 1111 1111 0000
1111 1111 1111 0000

Notar que el paquete se estructura en 5 filas de 16 bits. El bit de paridad se calcula por fila y por columna, como se muestra en la siguiente tabla:

Es decir, se generan dos vectores de bits de paridad. Un vector de bits de paridad de filas (longitud = 5) y otro vector de bits de paridad de columnas (longitud = 16).

Entonces ahora veamos qué sucede con los vectores de bits de paridad si uno de los bits del paquete cambia.

Por supuesto, si volvemos a calcular los vectores de bits de paridad se puede detectar que cambiaron. Se puede demostrar que si ocurre como máximo un error en un paquete, el mismo se puede corregir sin ambigüedades. Para ello se detecta el bit de paridad que cambió en cada vector y se realiza la intersección.

En este ejemplo, tenemos un vector de filas [1 0 0 0 0] y un vector de columnas [1 0 0 0 1 1 1 0 1 1 1 1 0 1 0 0]. Luego del error, el vector de filas se convirtió en [1 0 0 1 0] y el vector de columnas en [1 0 0 0 1 1 1 0 1 0 1 1 0 1 0 0]. Entonces el bit en donde ocurrió un error está en la cuarta fila y en la décima columna.

Esta empresa te necesita porque una de sus imágenes ha sido dañada. ¿Podrás recuperar su imagen?