Damm algorithm: Difference between revisions

Content deleted Content added
m remove urls from ref
ce
Line 2:
 
== Strengths and weaknesses ==
=== Strengths ===
The Damm algorithm is similar to the [[Verhoeff algorithm]]. It too will detect ''all'' occurrences of the two most frequently appearing types of [[transcription error]]s, namely altering onea single digit, andor transposing two adjacent digits (including the transposition of the trailing check digit and the preceding digit).<ref name="fenwick2014" /><ref name="Salomon2005" /> But theThe Damm algorithm has the benefit that it makeshas does donot withouthave the dedicatedly constructed [[permutation]]s and its position -specific [[Exponentiation#In abstract algebra|powers]] being inherent inof the [[Verhoeff algorithm|Verhoeff scheme]]. Furthermore, aA table of [[Inverse element|inverses]] can also be dispensed with providedwhen all main diagonal entries of the operation table are zero.
 
The Damm algorithm doesgenerates not suffer from exceeding the number ofonly 10 possible values, resulting inavoiding the need for using a non-digit character (such as the [[X]] in the [[ISBN#ISBN-10 check digit calculation|10-digit ISBN]] [[Check digit#ISBN_10|check digit]] scheme).
 
Prepending leading zeros does not affect the check digit (a weakness for variable-length codes).<ref name="fenwick2014" />
 
There are totally anti-symmetric quasigroups that detect all phonetic errors associated with the English language ({{nowrap|13 ↔ 30}}, {{nowrap|14 ↔ 40}}, ..., {{nowrap|19 ↔ 90}}). The table used in the illustrating example is based on an instance of such kind.
 
=== Weaknesses ===
For all checksum algorithms, including the Damm algorithm, prepending leading zeroes does not affect the check digit,<ref name="fenwick2014" /> so 1, 01, 001, etc. produce the same check digit. Consequently variable-length codes should not be verified together.
 
For all checksum algorithms including the Damm algorithm, prepending leading zeroes does not affect the check digit,<ref name="fenwick2014" /> so 1, 01, 001, etc. produce the same check digit. Consequently variable-length codes should not be verified together.
 
== Design ==
 
Its essential part is a [[quasigroup]] of [[Order (group theory)|order]] 10 (i.e. having a {{nowrap|10 × 10}} [[Latin square]] as the body of its [[Cayley table|operation table]]) with the special feature of being [[Quasigroup#Total antisymmetry|weakly totally anti-symmetric]].<ref name="dhmd" /><ref name="damm2007" /><ref group="lower-roman" name="BIS2003" /><ref group="lower-roman" name="Chen2009" /><ref group="lower-roman" name="Mileva2009" /> Damm revealed several methods to create totally anti-symmetric quasigroups of order 10 and gave some examples in his doctoral dissertation.<ref name="dhmd" /><ref group="lower-roman" name="BIS2003" /> With this, Damm also disproved an old conjecture that totally anti-symmetric quasigroups of order 10 do not exist.<ref name="damm2003" />
 
Line 22 ⟶ 20:
# {{math|1=(''c'' ∗ ''x'') ∗ ''y'' = (''c'' ∗ ''y'') ∗ ''x'' ⇒ ''x'' = ''y''}}
# {{math|1=''x'' ∗ ''y'' = ''y'' ∗ ''x'' ⇒ ''x'' = ''y''}},
 
and it is called weak totally anti-symmetric if only the first implication holds. Damm proved that the existence of a totally anti-symmetric quasigroup of order {{math|''n''}} is equivalent to the existence of a weak totally anti-symmetric quasigroup of order {{math|''n''}}. For the Damm algorithm with the check equation
{{math|1=(...((0 ∗ ''x<sub>m</sub>'') ∗ ''x''<sub>''m''−1</sub>) ∗ ...) ∗ ''x''<sub>0</sub> = 0}}