dígito de control
Un dígito de control es una forma de verificación de redundancia utilizada para la detección de errores en los números de identificación, como los números de cuentas bancarias, que se utilizan en una aplicación en la que al menos algunas veces se ingresarán manualmente. Es análogo a un bit de paridad binaria que se usa para verificar errores en los datos generados por computadora. Consiste en uno o más dígitos (o letras) calculados por un algoritmo a partir de los otros dígitos (o letras) en la secuencia de entrada. [1]
Con un dígito de control, se pueden detectar errores simples en la entrada de una serie de caracteres (generalmente dígitos), como un solo dígito mal escrito o algunas permutaciones de dos dígitos sucesivos.
Diseño
Los algoritmos de verificación de dígitos generalmente están diseñados para capturar errores humanos de transcripción . En orden de complejidad, estos incluyen los siguientes: [2]
- errores de letras/dígitos, como l → 1 u O → 0
- errores de un solo dígito, como 1 → 2
- errores de transposición, como 12 → 21
- errores gemelos, como 11 → 22
- errores de transposición de salto, como 132 → 231
- Saltar errores gemelos, como 131 → 232
- errores fonéticos, como 60 → 16 ("sesenta" a "dieciséis")
Al elegir un sistema, una alta probabilidad de detectar errores se compensa con la dificultad de implementación; Los sistemas simples de dígitos de control son fáciles de entender e implementar por humanos, pero no detectan tantos errores como los complejos, que requieren programas sofisticados para implementar.
Una característica deseable es que el relleno a la izquierda con ceros no debería cambiar el dígito de control. Esto permite utilizar números de longitud variable y cambiar la longitud. Si se agrega un solo dígito de control al número original, el sistema no siempre capturará errores múltiples , como dos errores de reemplazo (12 → 34), aunque, por lo general, se detectarán errores dobles el 90 % de las veces (ambos cambios necesidad de cambiar la salida compensando cantidades).
Un método de verificación de dígitos muy simple sería tomar la suma de todos los dígitos ( suma digital ) módulo 10. Esto detectaría cualquier error de un solo dígito, ya que tal error siempre cambiaría la suma, pero no detectaría ningún error de transposición (conmutación). dos dígitos) ya que reordenar no cambia la suma.
Un método un poco más complejo es tomar la suma ponderada de los dígitos, módulo 10, con diferentes pesos para cada posición del número.
Para ilustrar esto, por ejemplo, si los pesos para un número de cuatro dígitos fueran 5, 3, 2, 7 y el número a codificar fuera 4871, entonces uno tomaría 5×4 + 3×8 + 2×7 + 7×1 = 65, es decir, 65 módulo 10, y el dígito de control sería 5, dando 48715.
Los sistemas con pesos de 1, 3, 7 o 9, siendo diferentes los pesos de los números vecinos, son ampliamente utilizados: por ejemplo, 31 31 pesos en códigos UPC , 13 13 pesos en números EAN (algoritmo GS1) y el 371 371 371 pesos utilizados en los números de tránsito de enrutamiento bancario de los Estados Unidos . Este sistema detecta todos los errores de un solo dígito y alrededor del 90% de los errores de transposición. 1, 3, 7 y 9 se usan porque son coprimoscon 10, por lo que cambiar cualquier dígito cambia el dígito de control; usar un coeficiente que es divisible por 2 o 5 perdería información (porque 5 × 0 = 5 × 2 = 5 × 4 = 5 × 6 = 5 × 8 = 0 módulo 10) y, por lo tanto, no detectaría algunos errores de un solo dígito. Usar diferentes pesos en números vecinos significa que la mayoría de las transposiciones cambian el dígito de control; sin embargo, debido a que todos los pesos difieren en un número par, esto no detecta las transposiciones de dos dígitos que difieren en 5 (0 y 5, 1 y 6, 2 y 7, 3 y 8, 4 y 9), ya que el 2 y 5 se multiplica para dar 10.
En cambio, el código ISBN-10 utiliza el módulo 11, que es primo, y todas las posiciones de los números tienen diferentes pesos 1, 2, ... 10. Por lo tanto, este sistema detecta todos los errores de sustitución y transposición de un solo dígito (incluidas las transposiciones de salto), pero en el costo del dígito de control posiblemente sea 10, representado por "X". (Una alternativa es simplemente evitar el uso de los números de serie que dan como resultado un dígito de verificación "X"). En su lugar, ISBN-13 usa el algoritmo GS1 que se usa en los números EAN.
Los algoritmos más complicados incluyen el algoritmo de Luhn (1954), que captura el 98% de los errores de transposición de un solo dígito (no detecta 90 ↔ 09) y el algoritmo de Verhoeff (1969), aún más sofisticado, que captura todos los errores de transposición y sustitución de un solo dígito. y muchos (pero no todos) errores más complejos. Similar es otro método basado en álgebra abstracta , el algoritmo de Damm(2004), que también detecta todos los errores de un solo dígito y todos los errores de transposición adyacentes. Estos tres métodos utilizan un solo dígito de control y, por lo tanto, no podrán capturar alrededor del 10 % de los errores más complejos. Para reducir esta tasa de fallas, es necesario usar más de un dígito de control (por ejemplo, el cheque módulo 97 al que se hace referencia a continuación, que usa dos dígitos de control; para el algoritmo, consulte Número de cuenta bancaria internacional ) y/o usar un gama más amplia de caracteres en el dígito de control, por ejemplo, letras y números.
Ejemplos
UPC
El dígito final de un código de producto universal es un dígito de control calculado de la siguiente manera: [3]
- Sume los dígitos en las posiciones impares desde la derecha (primero, tercero, quinto, etc., sin incluir el dígito de control) y multiplíquelos por tres.
- Sume los dígitos (hasta el dígito de control, pero sin incluirlo) en las posiciones pares (segundo, cuarto, sexto, etc.) al resultado.
- Tome el resto del resultado dividido por 10 (es decir, la operación de módulo 10). Si el resto es igual a 0, use 0 como dígito de control, y si no es 0, reste el resto de 10 para obtener el dígito de control.
Por ejemplo, el código de barras UPC-A para una caja de pañuelos es "036000241457". El último dígito es el dígito de control "7", y si los otros números son correctos, el cálculo del dígito de control debe producir 7.
- Suma los dígitos de los números impares: 0+6+0+2+1+5 = 14.
- Multiplica el resultado por 3: 14 × 3 = 42.
- Suma los dígitos de los números pares: 3+0+0+4+4 = 11.
- Suma los dos resultados: 42 + 11 = 53.
- Para calcular el dígito de control, tome el resto de (53/10), que también se conoce como (53 módulo 10), y si no es 0, reste de 10. Por lo tanto, el valor del dígito de control es 7, es decir (53/10 ) = 5 resto 3; 10 - 3 = 7.
Otro ejemplo: para calcular el dígito de control para el siguiente alimento "01010101010 x ".
- Suma los dígitos de los números impares: 0+0+0+0+0+0 = 0.
- Multiplica el resultado por 3: 0 x 3 = 0.
- Suma los dígitos de los números pares: 1+1+1+1+1=5.
- Suma los dos resultados: 0 + 5 = 5.
- Para calcular el dígito de control, tome el resto de (5/10), que también se conoce como (5 módulo 10), y si no es 0, reste de 10: es decir (5/10) = 0 resto 5; (10 - 5) = 5. Por lo tanto, el valor del dígito de control x es 5.
ISBN 10
El carácter final de un Número Internacional Normalizado de Libros de diez dígitos es un dígito de control calculado de modo que multiplicando cada dígito por su posición en el número (contando desde la derecha) y tomando la suma de estos productos módulo 11 es 0. El dígito más lejano a la derecha (que se multiplica por 1) está el dígito de control, elegido para que la suma sea correcta. Es posible que deba tener el valor 10, que se representa como la letra X. Por ejemplo, tome el ISBN 0-201-53082-1: La suma de productos es 0×10 + 2×9 + 0×8 + 1×7 + 5×6 + 3×5 + 0×4 + 8×3 + 2×2 + 1×1 = 99 ≡ 0 ( modelo 11). Entonces el ISBN es válido. Tenga en cuenta que las posiciones también se pueden contar desde la izquierda, en cuyo caso el dígito de control se multiplica por 10, para comprobar la validez: 0×1 + 2×2 + 0×3 + 1×4 + 5×5 + 3×6 + 0 ×7 + 8×8 + 2×9 + 1×10 = 143 ≡ 0 (módulo 11).
ISBN 13
ISBN 13 (en uso en enero de 2007) es igual al código EAN-13 que se encuentra debajo del código de barras de un libro. Su dígito de control se genera de la misma manera que el UPC excepto que los dígitos pares se multiplican por 3 en lugar de los dígitos impares. [4]
EAN (GLN, GTIN, números EAN administrados por GS1)
Los dígitos de control del EAN ( número de artículo europeo ) (administrado por GS1 ) se calculan sumando cada uno de los números de posición impar multiplicados por 3 y luego sumando la suma de los números de posición pares. Los números se examinan de derecha a izquierda, por lo que la primera posición impar es el último dígito del código. El dígito final del resultado se resta de 10 para calcular el dígito de control (o se deja como está si ya es cero). Una calculadora de dígitos de verificación GS1 y documentación detallada están en línea en el sitio web de GS1 . [5] Otra página de calculadora oficial muestra que el mecanismo para GTIN-13 es el mismo para el Número de ubicación global /GLN. [6]
NCDA
El algoritmo de verificación de dígitos NOID (NCDA), [7] en uso desde 2004, está diseñado para su aplicación en identificadores persistentes y funciona con cadenas de letras y dígitos de longitud variable, denominadas dígitos extendidos. Se usa ampliamente con el esquema de identificador ARK y se usa un poco con esquemas, como el sistema de manejo y el DOI . Un dígito extendido está restringido a betanuméricocaracteres, que son alfanuméricos menos vocales y la letra 'l' (ell). Esta restricción ayuda cuando se generan cadenas opacas que es poco probable que formen palabras por accidente y que no contengan ni O ni 0, ni l ni 1. Con una raíz primera de R=29, el repertorio betanumérico permite que el algoritmo garantice la detección de cadenas únicas. errores de carácter y transposición [8] para cadenas de menos de R=29 caracteres de longitud (más allá de lo cual proporciona una verificación ligeramente más débil). El algoritmo se generaliza a cualquier repertorio de caracteres con una base principal R y cadenas de menos de R caracteres de longitud.
Otros ejemplos de dígitos de control
Internacional
- El número SEDOL Internacional.
- El último dígito de un código ISSN o número IMO .
- El Número Internacional de Identificación de Valores (ISIN).
- Grupo de gestión de objetos Dígito final estándar FIGI . [9]
- El dígito final del número de registro CAS internacional .
- Modulo 10 dígitos de verificación en números de cuenta de tarjeta de crédito , calculado por el algoritmo de Luhn .
- También se utiliza en los números KID (número de identificación del cliente) noruegos utilizados en giros bancarios (transferencia de crédito),
- Utilizado en IMEI de teléfonos móviles.
- Último dígito de verificación en la serialización EAN/UPC del Número de identificación comercial global ( GTIN ). Aplica para GTIN-8, GTIN-12, GTIN-13 y GTIN-14.
- El dígito final de un número DUNS (aunque esto está programado para cambiar, como que el dígito final se elegirá libremente en nuevas asignaciones, en lugar de ser un dígito de control).
- El tercer y cuarto dígito de un Número Internacional de Cuenta Bancaria (cheque Módulo 97).
- El dígito final en un código de texto estándar internacional .
- El carácter final codificado en una tarjeta de banda magnética es una comprobación de redundancia longitudinal calculada .
En los Estados Unidos
- El décimo dígito del Identificador de proveedor nacional para la industria de atención médica de EE. UU.
- El dígito final de un código POSTNET .
- El número CUSIP de América del Norte .
- El dígito final (noveno) del número de tránsito de ruta ABA , un código bancario utilizado en los Estados Unidos.
- El noveno dígito de un número de identificación del vehículo (VIN).
- Los números de identificación de pacientes de Mayo Clinic que se usan en Arizona y Florida incluyen un dígito de control final [ cita requerida ] .
- El undécimo dígito de un número de entrada de Aduanas y Protección Fronteriza .
En Centroamérica
- El Número de Identificación Tributaria de Guatemala (NIT - Número de Identificación Tributaria) basado en el módulo 11.
En Eurasia
- El número del NHS del Reino Unido utiliza el algoritmo módulo 11.
- El número de identificación fiscal español (número de identificación fiscal, NIF), (basado en el módulo 23).
- El Dutch Burgerservicenummer (BSN) (identificador nacional) utiliza el algoritmo módulo 11.
- El noveno dígito de un número israelí Teudat Zehut (tarjeta de identidad).
- El decimotercer dígito del número maestro único de ciudadano serbio y ex yugoslavo (JMBG) . (pero no todos, por errores o por no residencia)
- Los dos últimos dígitos del número de identificación turco de 11 dígitos ( turco : TC Kimlik Numarası ).
- El noveno carácter en el número de pasaporte de ganado de la UE de 14 caracteres (ciclos del 1 al 7: consulte el Servicio de movimiento de ganado británico ).
- El noveno dígito en un Kennitala islandés (número de identificación nacional).
- Modulo 97 dígitos de verificación en números de cuenta bancaria belga y serbia . Serbia a veces también usa el módulo 11, como número de referencia.
- El noveno dígito en un número TAJ húngaro (número de seguro social).
- Para los residentes de la India , el número de identidad único llamado Aadhaar tiene un 12º dígito final que se calcula con el algoritmo de Verhoeff . [10]
- La Oficina de Propiedad Intelectual de Singapur (IPOS) ha confirmado un nuevo formato para los números de solicitud de Propiedad Intelectual registrable (PI, por ejemplo, marcas registradas , patentes , diseños registrados ). Incluirá un carácter de control calculado con el algoritmo de Damm . [11]
- El último dígito del número de identificación de ciudadano chino (segunda generación) se calcula mediante el módulo 11-2 como se especifica en el GuoBiao chino (también conocido como estándar nacional) GB11643-1999 que adopta la norma ISO 7064:1983. Se utiliza 'X' si el dígito de control calculado es 10.
- El undécimo dígito del estonio Isikukood (código de identificación personal).
En Oceanía
- El número de registro fiscal australiano (basado en el módulo 11).
- El séptimo carácter de un Número NHI de Nueva Zelanda .
- El último dígito en el número del Sistema de Monitoreo de Tráfico (TMS) de una locomotora de Nueva Zelanda .
Algoritmos
Los algoritmos notables incluyen:
- Algoritmo de Luhn (1954)
- Algoritmo de Verhoeff (1969)
- Algoritmo de Damm (2004)
Véase también
- Suma de verificación
- Expulsión de nueves , verificación de suma modular similar
- bit de control ; equivalente binario
Referencias
- ^ "¿Qué es el dígito de control? - Definición de Techopedia" . Techopedia.com . Consultado el 16 de marzo de 2022 .
- ^ Kirtland, José (2001). Números de identificación y esquemas de dígitos de control . Materiales de recursos para el aula. Asociación Matemática de América. págs. 4–6. ISBN 978-0-88385-720-5.
- ^ "Calculadora de dígitos de control GS1" . GS1 EE. UU. 2006. Archivado desde el original el 9 de mayo de 2008 . Consultado el 21 de mayo de 2008 .
- ^ "Manual de usuario de ISBN" . Agencia Internacional del ISBN. 2005 _ Consultado el 21 de mayo de 2008 .
- ^ "Calculadora de dígitos de control" . GS1. 2005 _ Consultado el 21 de mayo de 2008 .
- ^ "Calculadora de dígitos de verificación, en el sitio oficial de GS1 US" . GS1 EE.UU. Consultado el 9 de agosto de 2012 .
- ^ https://metacpan.org/pod/distribution/Noid/noid#NOID-CHECK-DIGIT-ALGORITHM
- ^ David Bressoud, Stan Wagon, "Teoría de números computacionales", 2000, Key College Publishing
- ^ http://openfigi.com
- ^ "Tarjeta de identificación única" . Gaceta Friki . Rama estudiantil de IEEE ( otoño de 2011 ): 16. Archivado desde el original el 24 de octubre de 2012.
{{cite journal}}
: Enlace externo en
( ayuda )|issue=
- ^ Dr. Chong-Yee Khoo (20 de enero de 2014). "Nuevo formato para los números de solicitud de IP de Singapur en IPOS" . Blog de patentes de Singapur . Cantab IP . Consultado el 6 de julio de 2014 .
Enlaces externos
- Números de identificación y esquemas de dígitos de control (una explicación matemática de varios esquemas de dígitos de control)
- Calculadora de dígitos de control UPC, EAN y SCC-14
- Calculadora de dígitos de control GS1