stringtranslate.com

Algoritmo de Damm

En la detección de errores , el algoritmo Damm es un algoritmo de dígito de control que detecta todos los errores de un solo dígito y todos los errores de transposición adyacentes . Fue presentado por H. Michael Damm en 2004, [1] como parte de su tesis doctoral titulada Cuasigrupos totalmente antisimétricos.

Fortalezas y debilidades

Fortalezas

El algoritmo Damm es similar al algoritmo Verhoeff . También detectará todas las ocurrencias de los dos tipos de errores de transcripción que aparecen con más frecuencia , es decir, la alteración de un solo dígito o la transposición de dos dígitos adyacentes (incluida la transposición del dígito de control final y el dígito anterior). [1] [2] El algoritmo Damm tiene la ventaja de que no tiene las permutaciones construidas especialmente y sus potencias específicas de posición del esquema Verhoeff . También se puede prescindir de una tabla de inversas cuando todas las entradas de la diagonal principal de la tabla de operaciones son cero.

El algoritmo Damm genera sólo 10 valores posibles, evitando la necesidad de un carácter que no sea un dígito (como la X en el esquema de dígitos de control del ISBN de 10 dígitos ).

Anteponer ceros a la izquierda no afecta al dígito de control (una debilidad de los códigos de longitud variable). [1]

Existen cuasigrupos totalmente antisimétricos que detectan todos los errores fonéticos asociados al idioma inglés ( 13 ↔ 30 , 14 ↔ 40 , ..., 19 ↔ 90 ). La tabla utilizada en el ejemplo ilustrativo se basa en una instancia de este tipo.

Debilidades

En todos los algoritmos de suma de comprobación, incluido el algoritmo Damm, la adición de ceros a la izquierda no afecta al dígito de comprobación, [1] por lo que 1, 01, 001, etc. producen el mismo dígito de comprobación. En consecuencia, los códigos de longitud variable no se deben verificar juntos.

Diseño

Su parte esencial es un cuasigrupo de orden 10 (es decir que tiene un cuadrado latino de 10 × 10 como cuerpo de su tabla de operaciones ) con la característica especial de ser débilmente totalmente antisimétrico . [3] [4] [i] [ii] [iii] Damm reveló varios métodos para crear cuasigrupos totalmente antisimétricos de orden 10 y dio algunos ejemplos en su tesis doctoral. [3] [i] Con esto, Damm también refutó una antigua conjetura de que los cuasigrupos totalmente antisimétricos de orden 10 no existen. [5]

Un cuasigrupo ( Q , ∗) se llama totalmente antisimétrico si para todo c , x , yQ , se cumplen las siguientes implicaciones: [4]

  1. ( cx ) ∗ y = ( cy ) ∗ xx = y
  2. xy = yxx = y ,

y se llama débil totalmente antisimétrico si sólo se cumple la primera implicación. Damm demostró que la existencia de un cuasigrupo totalmente antisimétrico de orden n es equivalente a la existencia de un cuasigrupo totalmente antisimétrico débil de orden n . Para el algoritmo de Damm con la ecuación de comprobación (...((0 ∗ x m ) ∗ x m −1 ) ∗ ...) ∗ x 0 = 0 , se necesita un cuasigrupo totalmente antisimétrico débil con la propiedad xx = 0 . Un cuasigrupo de este tipo se puede construir a partir de cualquier cuasigrupo totalmente antisimétrico reordenando las columnas de tal forma que todos los ceros queden en la diagonal. Y, por otra parte, a partir de cualquier cuasigrupo totalmente antisimétrico débil se puede construir un cuasigrupo totalmente antisimétrico reordenando las columnas de tal forma que la primera fila esté en orden natural. [3]

Algoritmo

La validez de una secuencia de dígitos que contiene un dígito de control se define sobre un cuasigrupo. Se puede obtener una tabla de cuasigrupos lista para usar de la tesis de Damm (páginas 98, 106, 111). [3] Es útil que cada entrada de la diagonal principal sea 0 , [1] porque simplifica el cálculo del dígito de control.

Validar un número contra el dígito de control incluido

  1. Configure un dígito provisional e inicialícelo en 0 .
  2. Procesar el número dígito por dígito: utilizar el dígito del número como índice de columna y el dígito intermedio como índice de fila, tomar la entrada de la tabla y reemplazar el dígito intermedio con ella.
  3. El número es válido si y sólo si el dígito intermedio resultante tiene el valor de 0. [1]

Calcular el dígito de control

Requisito: Las entradas diagonales principales de la tabla son 0 .

  1. Configure un dígito provisional e inicialícelo en 0 .
  2. Procesar el número dígito por dígito: utilizar el dígito del número como índice de columna y el dígito intermedio como índice de fila, tomar la entrada de la tabla y reemplazar el dígito intermedio con ella.
  3. El dígito provisional resultante proporciona el dígito de control y se agregará como dígito final al número. [1]

Ejemplo

Se utilizará la siguiente tabla de operaciones. [1] Se puede obtener a partir del cuasigrupo totalmente antisimétrico xy en la tesis doctoral de Damm, página 111 [3] reorganizando las filas y cambiando las entradas con la permutación φ = (1 2 9 5 4 8 6 7 3) y definiendo xy = φ −1 ( φ ( x ) ∗ y ) .

Supongamos que elegimos el número (secuencia de dígitos) 572 .

Calcular el dígito de control

El dígito intermedio resultante es 4. Este es el dígito de control calculado. Lo agregamos al número y obtenemos 5724 .

Validar un número contra el dígito de control incluido

El dígito provisional resultante es 0 , por lo tanto el número es válido .

Ilustración gráfica

Este es el ejemplo anterior que muestra el detalle del algoritmo que genera el dígito de control (flecha azul discontinua) y verifica el número 572 con el dígito de control.

Referencias

  1. ^ abcdefgh Fenwick, Peter (2014). "Sumas de comprobación y control de errores". En Fenwick, Peter (ed.). Introducción a la representación de datos informáticos . Bentham Science Publishers. págs. 191–218. doi :10.2174/9781608058822114010013. ISBN 978-1-60805-883-9.
  2. ^ Para conocer los tipos de errores comunes y sus frecuencias, consulte Salomon, David (2005). Coding for Data and Computer Communications. Springer Science+Business Media, Inc., pág. 36. ISBN 978-0387-21245-6.
  3. ^ abcde Damm, H. Michael (2004). Total anti-symmetrische Quasigruppen (PDF) (Dr. rer. nat.) (en alemán). Universidad Philipps de Marburg. urn:nbn:de:hebis:04-z2004-05162.
  4. ^ ab Damm, H. Michael (2007). "Cuasigrupos totalmente antisimétricos para todos los órdenes n ≠ 2, 6". Matemáticas discretas . 307 (6): 715–729. doi : 10.1016/j.disc.2006.05.033 . ISSN  0012-365X.
  5. ^ Damm, H. Michael (2003). "Sobre la existencia de cuasigrupos totalmente antisimétricos de orden 4 k  + 2". Computing . 70 (4): 349–357. doi :10.1007/s00607-003-0017-3. ISSN  0010-485X. S2CID  31659430.
  1. ^ ab Beliavscaia, Galina; Izbaş, Vladimir; Şcerbacov, Victor (2003). "Sistemas de caracteres de verificación sobre cuasigrupos y bucles" (PDF) . Cuasigrupos y sistemas relacionados . 10 (1): 1–28. ISSN  1561-2848.Vea la página 23.
  2. ^ Chen Jiannan (2009). "La NP-completitud de los cuadrados latinos antisimétricos parciales completados" (PDF) . Actas del Taller internacional de 2009 sobre seguridad de la información y aplicaciones (IWISA 2009). Academy Publisher. págs. 322–324. ISBN 978-952-5726-06-0.Véase la página 324.
  3. ^ Mileva, A.; Dimitrova, V. (2009). "Cuasigrupos construidos a partir de aplicaciones completas de un grupo (Z2n,⊕)" (PDF) . Contribuciones, Sec. Math. Tech. Sci., MANU/MASA . XXX (1–2): 75–93. ISSN  0351-3246.Vea la página 78.

Enlaces externos