Motivación Teoría de códigos Algunos secretos del DNI Ramón Esteban Romero1,2 1 Universitat 2 Universitat de València Politècnica de València V Jornades de Modelització Matemàtica, 2016 València, 12 de mayo de 2016 Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos El proceso de comunicación Motivación El proceso de comunicación Mensaje Emisor −−−−−−−−−−→ Receptor Canal Un problema: El canal puede tener ruido y el mensaje puede llegar con errores. ¿Qué podemos hacer para minimizar el efecto de este ruido? Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos El proceso de comunicación Motivación El proceso de comunicación Mensaje Emisor −−−−−−−−−−→ Receptor Canal Un problema: El canal puede tener ruido y el mensaje puede llegar con errores. ¿Qué podemos hacer para minimizar el efecto de este ruido? Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos El proceso de comunicación Motivación El proceso de comunicación Mensaje Emisor −−−−−−−−−−→ Receptor Canal Un problema: El canal puede tener ruido y el mensaje puede llegar con errores. ¿Qué podemos hacer para minimizar el efecto de este ruido? Teoría de códigos Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Redundancia en el lenguaje usual Nos dicen algo y no lo entendemos por el ruido. ¿Qué podemos hacer? En algunos mensajes SMS se omiten letras: «qdms a ls 3?» La información del mensaje parece que puede transmitirse con menos letras. Es posible entender mensajes con faltas de ortografía. El lenguaje usual incluye una cierta redundancia que permite resolver situaciones como las anteriores. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Redundancia en el lenguaje usual Nos dicen algo y no lo entendemos por el ruido. ¿Qué podemos hacer? Una solución es pedir que nos repitan el mensaje. En algunos mensajes SMS se omiten letras: «qdms a ls 3?» La información del mensaje parece que puede transmitirse con menos letras. Es posible entender mensajes con faltas de ortografía. El lenguaje usual incluye una cierta redundancia que permite resolver situaciones como las anteriores. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Redundancia en el lenguaje usual Nos dicen algo y no lo entendemos por el ruido. ¿Qué podemos hacer? Una solución es pedir que nos repitan el mensaje. En algunos mensajes SMS se omiten letras: «qdms a ls 3?» La información del mensaje parece que puede transmitirse con menos letras. Es posible entender mensajes con faltas de ortografía. El lenguaje usual incluye una cierta redundancia que permite resolver situaciones como las anteriores. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Redundancia en el lenguaje usual Nos dicen algo y no lo entendemos por el ruido. ¿Qué podemos hacer? Una solución es pedir que nos repitan el mensaje. En algunos mensajes SMS se omiten letras: «qdms a ls 3?» La información del mensaje parece que puede transmitirse con menos letras. Es posible entender mensajes con faltas de ortografía. El lenguaje usual incluye una cierta redundancia que permite resolver situaciones como las anteriores. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Redundancia en el lenguaje usual Nos dicen algo y no lo entendemos por el ruido. ¿Qué podemos hacer? Una solución es pedir que nos repitan el mensaje. En algunos mensajes SMS se omiten letras: «qdms a ls 3?» La información del mensaje parece que puede transmitirse con menos letras. Es posible entender mensajes con faltas de ortografía. El lenguaje usual incluye una cierta redundancia que permite resolver situaciones como las anteriores. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Detección y corrección de errores Podemos repetir información del mensaje para minimizar el efecto de los errores: HOLA se envía repetido como HHOOLLAA Se produce un error: cambiamos una H por una B y recibimos HBOOLLAA Apreciamos que el mensaje no es correcto, ya que las dos primeras letras no son iguales. Si hubiera dos errores, como BBOOLLAA , no siempre sabríamos que hay un error. Este código permite detectar un error, pero no dos. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Detección y corrección de errores Podemos repetir información del mensaje para minimizar el efecto de los errores: HOLA se envía repetido como HHOOLLAA Se produce un error: cambiamos una H por una B y recibimos HBOOLLAA Apreciamos que el mensaje no es correcto, ya que las dos primeras letras no son iguales. Si hubiera dos errores, como BBOOLLAA , no siempre sabríamos que hay un error. Este código permite detectar un error, pero no dos. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Detección y corrección de errores Podemos repetir información del mensaje para minimizar el efecto de los errores: HOLA se envía repetido como HHOOLLAA Se produce un error: cambiamos una H por una B y recibimos HBOOLLAA Apreciamos que el mensaje no es correcto, ya que las dos primeras letras no son iguales. Si hubiera dos errores, como BBOOLLAA , no siempre sabríamos que hay un error. Este código permite detectar un error, pero no dos. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Detección y corrección de errores Podemos repetir información del mensaje para minimizar el efecto de los errores: HOLA se envía repetido como HHOOLLAA Se produce un error: cambiamos una H por una B y recibimos HBOOLLAA Apreciamos que el mensaje no es correcto, ya que las dos primeras letras no son iguales. Si hubiera dos errores, como BBOOLLAA , no siempre sabríamos que hay un error. Este código permite detectar un error, pero no dos. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Detección y corrección de errores Podemos repetir información del mensaje para minimizar el efecto de los errores: HOLA se envía repetido como HHOOLLAA Se produce un error: cambiamos una H por una B y recibimos HBOOLLAA Apreciamos que el mensaje no es correcto, ya que las dos primeras letras no son iguales. Si hubiera dos errores, como BBOOLLAA , no siempre sabríamos que hay un error. Este código permite detectar un error, pero no dos. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Detección y corrección de errores Podemos repetir tres veces el mensaje: HOLA se envía repetido como HHHOOOLLLAAA Se produce un error: cambiamos una H por una B y recibimos HBHOOOLLLAAA Apreciamos que se el mensaje no es correcto, ya que las tres primeras letras no son iguales. Pero si sabemos que solo hay un error, podemos recuperar el mensaje original. Por eso este código corrige un error. Si hubiera dos errores, como BSHOOOLLLAAA , sabríamos que hay errores, pero no siempre podríamos corregirlos. Este código permite detectar dos errores y corregir uno. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Detección y corrección de errores Podemos repetir tres veces el mensaje: HOLA se envía repetido como HHHOOOLLLAAA Se produce un error: cambiamos una H por una B y recibimos HBHOOOLLLAAA Apreciamos que se el mensaje no es correcto, ya que las tres primeras letras no son iguales. Pero si sabemos que solo hay un error, podemos recuperar el mensaje original. Por eso este código corrige un error. Si hubiera dos errores, como BSHOOOLLLAAA , sabríamos que hay errores, pero no siempre podríamos corregirlos. Este código permite detectar dos errores y corregir uno. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Detección y corrección de errores Podemos repetir tres veces el mensaje: HOLA se envía repetido como HHHOOOLLLAAA Se produce un error: cambiamos una H por una B y recibimos HBHOOOLLLAAA Apreciamos que se el mensaje no es correcto, ya que las tres primeras letras no son iguales. Pero si sabemos que solo hay un error, podemos recuperar el mensaje original. Por eso este código corrige un error. Si hubiera dos errores, como BSHOOOLLLAAA , sabríamos que hay errores, pero no siempre podríamos corregirlos. Este código permite detectar dos errores y corregir uno. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Detección y corrección de errores Podemos repetir tres veces el mensaje: HOLA se envía repetido como HHHOOOLLLAAA Se produce un error: cambiamos una H por una B y recibimos HBHOOOLLLAAA Apreciamos que se el mensaje no es correcto, ya que las tres primeras letras no son iguales. Pero si sabemos que solo hay un error, podemos recuperar el mensaje original. Por eso este código corrige un error. Si hubiera dos errores, como BSHOOOLLLAAA , sabríamos que hay errores, pero no siempre podríamos corregirlos. Este código permite detectar dos errores y corregir uno. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Detección y corrección de errores Podemos repetir tres veces el mensaje: HOLA se envía repetido como HHHOOOLLLAAA Se produce un error: cambiamos una H por una B y recibimos HBHOOOLLLAAA Apreciamos que se el mensaje no es correcto, ya que las tres primeras letras no son iguales. Pero si sabemos que solo hay un error, podemos recuperar el mensaje original. Por eso este código corrige un error. Si hubiera dos errores, como BSHOOOLLLAAA , sabríamos que hay errores, pero no siempre podríamos corregirlos. Este código permite detectar dos errores y corregir uno. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Como repetir el mensaje puede suponer enviar demasiada información, es habitual añadir un resumen de la información en forma de dígitos o caracteres de control. Esto se usa en: DNI, cuentas bancarias, información de códigos de barras, transmisión de información por internet... Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Se calcula el resto de la división del número entre 23. Se obtiene la letra según el resto de la división: 0 T 6 Y 12 N 18 H 1 R 7 F 13 J 19 L 2 W 8 P 14 Z 20 C 3 A 9 D 15 S 21 K 4 G 10 X 16 Q 22 E 5 M 11 B 17 V Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Algunas preguntas: ¿Por qué el 23? ¿Para qué queremos añadir una letra al número del DNI? Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Algunas preguntas: ¿Por qué el 23? ¿Para qué queremos añadir una letra al número del DNI? ¿Qué pasa si nos equivocamos en una cifra?, ¿lo detecta la letra del DNI? ¿Y si intercambiamos dos cifras consecutivas? Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI La resolución de estos problemas usa técnicas basadas en la aritmética modular. Teorema (división euclídea) Dado m ∈ N y a ∈ Z, existen enteros únicos q (llamado cociente) y r (llamado resto) tales que a = mq + r y 0 ≤ r < m. Definición Sea m un número natural y a, b ∈ Z. Se dice que a es congruente con b módulo m, escrito a ≡ b (mod m), si m es divisor de a − b. Se tiene que a ≡ b (mod m) si, y solo si, los restos de dividir a y b por m coinciden. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Teorema Supongamos que a, b, m son enteros con m ≥ 1, que m es divisor del producto ab y que mcd(a, m) = 1. Entonces m es divisor de b. Si a = an an−1 . . . a2 a1 a0 es un número escrito en base 10, entonces n X a= ai · 10i . i=0 Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Supongamos que dos números a = a7 a6 a5 a4 a3 a2 a1 a0 = 7 X ai · 10i , i=0 b = b7 b6 b5 b4 b3 b2 b1 b0 = 7 X bi · 10i i=0 tienen asociada la misma letra del DNI. Entonces nos dan el mismo resto al dividirlos entre 23. Supongamos que ai = bi para i 6= j. Los restamos: su diferencia (aj − bj ) · 10j es múltiplo de 23. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Como el 23 es primo y 23 no es divisor de 10i , resulta que 23 es divisor de ai − bi . Pero como esta diferencia está entre −9 y 9, la única posibilidad es ai − bi = 0, esto es, ai = bi . Concluimos que el DNI detecta un error. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Supongamos ahora que dos cifras están intercambiadas, pero los restos de la división entre 23 son iguales. Con la misma notación de antes, supongamos aj = bj , j ∈ / {i, i + 1}, ai+1 = bi , ai = bi+1 . Al restar los dos números, obtenemos un múltiplo de 23. Entonces la diferencia entre ambos números es 10i+1 (ai+1 − bi+1 ) + 10i (ai − bi ) = (10ai+1 − ai+1 ) − (10ai − ai ) · 10i = (9ai+1 − 9ai ) · 10i = (ai+1 − ai ) · 9 · 10i . Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Se tiene que esta diferencia es múltiplo de 23. Como 23 es primo y no es divisor de 9 · 10i , tiene que ser divisor de ai+1 − ai . Como antes, se obtiene que ai+1 − ai = 0, es decir, ai+1 = ai , pero entonces no intercambiamos cifras diferentes. Así, la letra del DNI también detecta un error de intercambio de dos letras consecutivas. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Nombre Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Número de DNI Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Número de tarjeta Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Fecha de nacimiento Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Fecha de caducidad Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Documento de identidad expedido por España Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Sexo Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Nacionalidad Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI Dígitos de control Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI ¿Cómo se calculan estos dígitos de control? El primero viene asociado con el número de tarjeta. Se obtiene asignando a cada cifra su valor y a cada letra un número, comenzando por la A, que vale 10, hasta la Z, que vale 35 (no se cuenta la Ñ). Se multiplican estos valores por 7, 3, 1, 7, 3, 1, 7, 3, 1 y se suman los resultados. La última cifra de la suma (resto de la división por 10) es el dígito de control: Para AMB111403, A vale 10, M vale 22, B vale 11, 7 · 10 + 3 · 22 + 1 · 11 + 7 · 1 + 3 · 1 + 1 · 1 + 7 · 4 + 3 · 0 + 1 · 3 = 70 + 66 + 11 + 7 + 3 + 1 + 28 + 0 + 3 = 189 acaba en 9. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI El segundo viene asociado a al fecha de nacimiento, multiplicando por 7, 3, 1, 7, 3, 1 y sumando. Para 700616, nos queda 7·7+3·0+1·0+7·6+3·1+1·6 = 49 + 0 + 0 + 42 + 3 + 6 = 100, que acaba en 0. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI El tercero viene asociado a al fecha de caducidad, multiplicando por 7, 3, 1, 7, 3, 1 y sumando. Para 220705, nos queda 7·2+3·2+1·0+7·7+3·0+1·5 = 14 + 6 + 0 + 49 + 0 + 5 = 74, que acaba en 4. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI El cuarto se obtiene aplicando esta misma técnica, pero ahora con la lista de números y letras formada por el número de soporte con su dígito de control, el número de DNI con su letra de control, la fecha de nacimiento con su dígito de control y la fecha de caducidad con su dígito de control, y multiplicándolas sucesivamente por 7, 3, 1, 7, 3, 1... y sumando y quedándonos con la última cifra. Ramón Esteban Romero Algunos secretos del DNI Motivación Teoría de códigos Redundancia en el lenguaje usual Detección y corrección de errores Dígitos de control: el DNI Teoría de códigos Dígitos de control: el DNI La elección de 7, 3 y 1 no es casual: son primos con 10. Permite detectar un error (una cifra mal leída). Si cambiamos uno de los dígitos, vemos que el dígito de control tiene que cambiar, porque la diferencia de esos dos dígitos multiplicada por el factor 7, 3 o 1 no puede ser múltiplo de 10. Esto no hubiera funcionado si hubiéramos elegido factores que fueran pares o múltiplos de 5. El 9 también hubiera valido. El argumento es parecido al que usamos para determinar que el DNI detecta un error: la última cifra es el resto de la división entre 10. Ramón Esteban Romero Algunos secretos del DNI