Damm algoritme

Damm-algoritmen er en algoritme  til beregning af et kontrolciffer til fejldetektion . Det blev først foreslået i 2004 af M. Damm.

Sådan virker det

Damm foreslog at bruge en binær operation kendt som Damm-kvasigruppen [1] .

d(j, k) k
j 0 en 2 3 fire 5 6 7 otte 9
0 0 3 en 7 5 9 otte 6 fire 2
en 7 0 9 2 en 5 fire otte 6 3
2 fire 2 0 6 otte 7 en 3 5 9
3 en 7 5 0 9 otte 3 fire 2 6
fire 6 en 2 3 0 fire 5 9 7 otte
5 3 6 7 fire 2 0 9 5 otte en
6 5 otte 6 9 7 2 0 en 3 fire
7 otte 9 fire 5 3 6 2 0 en 7
otte 9 fire 3 otte 6 en 7 2 0 5
9 2 5 otte en fire 3 6 7 9 0

Resultatet af operationen d(j, k) er nemmest at bestemme ud fra tabellen, hvor det er placeret i skæringspunktet mellem den j-te række og den k-te kolonne i tabellen. Operationen valgt af Damm er ikke kommutativ , det vil sige, at betingelsen ikke er opfyldt for den for alle og .

Ved sekventiel udførelse af operationen d(j, k), hvor j er resultatet af den forrige iteration (0 for den første iteration), og k er det næste ciffer i tallet, kan du få en kontrolcifferberegningsalgoritme, der er bedre ( i gennemsnit for de mest almindelige fejl) end almindelig addition modulo 10.

Damms algoritme giver dig mulighed for at opdage to almindelige fejl ved indtastning af tal: at erstatte et ciffer med et andet og permutere to tilstødende cifre.

Eksempel

Lad os antage, at ciffersekvensen 572 transmitteres .

Tjek cifferberegning

behandlet ciffer → kolonneindeks 5 7 2
gammelt mellemciffer → rækkeindeks 0 9 7
tabelindtastning → nyt mellemciffer 9 7 fire

Endelig mellemfigur 4 . Det er en kontrolsum. Tilføjes det til nummeret, får vi 5724 .

Kontrol af et tal mod et kontrolciffer

behandlet ciffer → kolonneindeks 5 7 2 fire
gammelt mellemciffer → rækkeindeks 0 9 7 fire
tabelindtastning → nyt mellemciffer 9 7 fire 0

Det resulterende mellemciffer er 0 , så den overførte ciffersekvens er gyldig .

Noter

  1. Dmitry Maksimov. Koder, der genkender en fejl  // Videnskab og liv . - 2018. - Nr. 1 . - S. 90-95 .

Links