Dammアルゴリズム
Dammアルゴリズムは、誤り検出の一種であるチェックディジットのアルゴリズムであり、全ての1桁入力誤りと全ての隣り合う2桁の入れ替え誤りを検出することができる。2004年にH. Michael Dammによって発表された。
利点と欠点
Dammアルゴリズムは、Verhoeffアルゴリズムと同様に、最も頻繁に起こる2種類の誤り、すなわち1桁の入力誤りと、（末尾に付け足されたチェックディジットとその直前の数字の入れ値替えを含む）隣り合う2桁の入れ違えの、2種類の誤りを検出できる。しかしDammアルゴリズムは、Verhoeffアルゴリズムと異なり、実行に際し、専用に構成された置換表と位置に応じた冪乗表を必要としない。さらに、逆元の表も演算表の主対角成分が0の時は必要ない。
Dammアルゴリズムは10種を超えるチェックディジットを出力しないため、（ISBN10のチェックディジットにおける'X'のような）数字以外の文字をチェックディジットとして用意する必要がない。
チェック対象の数字列の先頭に0をいくつ付け加えても、チェックディジットには影響しない。
英語の聞き取り間違いによる入力間違い (13←→30, 14←→40, …, 19←→90) を全て検出できる全反対称準群 (totally anti-symmetric quasigroups) が存在する。後述の例においてはそのような性質を満たす表のうちの1つを用いている。
このように、類似のチェックディジットアルゴリズムが利用される場面においてより優れた特徴があるにも関わらず、Dammアルゴリズムは広く知られてはおらず、また利用例もほとんどない。
アルゴリズム
チェックディジットを含む数字列の正当性は準群の上で定義される。Dammの博士論文（98, 106, 111ページ）に、利用可能な準群の表が用意されている。チェックディジットの計算を簡潔にするため、主対角線に位置する要素が0であると良い。
図解
以下は上記のチェックディジット（青い破線）を計算する方法の詳細と、数字列 572 にチェックディジットを加えた数列の正当性検査を図解したものである。