Length 3 Check Digit Codes with Grouped Tags and Disjoint Coding Applications
Larry A. Dunning
TL;DR
The paper advances length-3, check-digit codes by leveraging finite-field constructions, notably GF$(3^2)$, to create robust decimal codes that exceed Verhoeff-type protections, including phonetic and cyclic error detection. It introduces an insertion-based method to extend base-9 codes to decimal digits and develops almost-disjoint code families to approach disjoint coding across multiple sets. The work generalizes to alphabets beyond 10 (e.g., 26 and 36) via transversal insertions and product constructions, culminating in a Tag Code framework for grouping and concatenation. Practical guidance, an accompanying code generator, and explicit parameter choices demonstrate how to implement these codes in real-world catalogs, licenses, and tag systems while highlighting trade-offs between disjointness, phonetic vulnerability, and cyclic-error coverage.
Abstract
In 1969 J. Verhoeff provided the first examples of a decimal error detecting code using a single check digit to provide protection against all single, transposition, and adjacent twin errors. The three codes he presented are length 3-digit codes with 2 information digits. To date, the existence of a length 4-digit code with 3 information digits having these properties remains an open question. Existence of a 4-digit code would imply the existence of 10 disjoint 3-digit codes. Apparently, no pair of such disjoint 3-digit codes is known. Phonetic errors, where 2-digit pairs of the forms X0 and 1X are interchanged, are language dependent, but can often be eliminated. Alternate 3-digit codes are developed here which enhance the level of protection beyond Verhoeff's codes while still optionally providing protection against phonetic errors. Through almost-disjoint coding schemes, it is shown how copies of these new codes can fill in the gap between such 3 and 4-digit codes. The results are extended to other useful alphabet sizes such as 26 and 36 with stronger permutation of digits error detection, and to "tag codes" where digits are grouped.
