Lição
A teoria — Dígitos de Controlo: Luhn, Códigos de Barras, ISBN e os Erros que Deixam Passar
Um dígito de controlo é um algarismo extra escolhido para que o número completo cumpra uma regra: neste caso, que os algarismos, cada um multiplicado ou transformado consoante a sua posição, somem um múltiplo do módulo, 10 ou 11. Um erro que quebre a regra é detetado. Um erro que a respeite não é notado. Por isso, um dígito de controlo pode provar que um número está errado, mas nunca pode provar que está correto.
O que significa cada símbolo
dᵢ- o algarismo a i posições da direita; o dígito de controlo é d0
wᵢ- o peso da posição i: 1 e 3 alternadamente para um código de barras, i + 1 para o ISBN-10
D(d)- a duplicação de Luhn: 2d, menos 9 quando ultrapassa os 9, resultando em 0 2 4 6 8 1 3 5 7 9
S- a soma da contribuição de cada algarismo
m- o módulo, 10 para o algoritmo de Luhn e para o código de barras, 11 para o ISBN-10; o número passa quando S é um múltiplo de m
- Pressupõe
- Um erro de cada vez. Dois erros num número podem anular-se mutuamente, e as contagens da página não dizem nada sobre eles. A tabela considera que qualquer par de algarismos tem a mesma probabilidade, o que não acontece na escrita real: o único par vizinho invisível para o algoritmo de Luhn é 09 e 90, e a frequência com que ambos surgem lado a lado depende dos números.
- Falha quando
- Um dígito de controlo não garante segurança. Qualquer pessoa que conheça o sistema pode criar um número válido. É por isso que um número de cartão que passe no algoritmo de Luhn significa apenas que foi bem digitado. O ISBN-13 utiliza o sistema do código de barras porque um ISBN-13 é, em si mesmo, um número de código de barras, sob os prefixos 978 e 979 que a GS1 disponibilizou.
Problema resolvido na íntegra
-
Recuperar um algarismo manchado de um ISBN-10 4 passos
Um ISBN-10 é lido como 0-11-000?22-9, com o sétimo algarismo manchado. Encontre-o e explique por que razão existe exatamente uma resposta. Prima ISBN-10 para verificar o resultado.
Abrir este problema na ferramenta
-
Os pesos vão de 10 até 1 a contar da esquerda, pelo que o sétimo algarismo manchado tem o peso 4. Some os outros nove algarismos multiplicados pelos respetivos pesos.
-
A soma total tem de ser um múltiplo de 11, por isso 4 vezes o algarismo em falta tem de compensar a diferença.
-
Em mod 11 é possível dividir, porque 11 é um número primo: 4 × 3 = 12 é 1 unidade superior a 11. Desta forma, multiplicar por 3 reverte a multiplicação por 4.
-
Reescreva o 2 e a soma apresentada na página será 44, exatamente quatro onzes.
Resposta
O algarismo é 2, e o ISBN é 0-11-000222-9. É o único algarismo possível. A multiplicação por 4 envia os onze valores de 0 a 10 para onze restos diferentes em mod 11, logo há exatamente um que recai sobre o 8. Esta é a mesma propriedade que permite ao sistema detetar qualquer algarismo errado nesta posição, vista na outra perspetiva: um peso que torne visível qualquer erro, torna também qualquer mancha recuperável. Um sistema mod 10 com um peso de 2 nesse lugar daria duas hipóteses ou nenhuma, e falharia qualquer algarismo errado nessa posição que estivesse a uma distância de cinco do algarismo certo.
-
Referências (3)
- The Luhn check digit as the IMEI standard defines it, step by step, with the worked example the page's IMEI preset reproduces (26053179311383, sum 53, check digit 7): 3GPP TS 23.003, "Numbering, addressing and identification", Annex B (normative): IMEI Check Digit computation. Published as ETSI TS 123 003 V18.7.0 (2024-09).
- The ISBN-13 check digit, the 1-3 weighting that barcodes use, with the manual's own example 978-0-11-000222-4: International ISBN Agency, ISBN Users' Manual, International Edition, sixth edition. London, 2012. Appendix 1, "Check digit calculation".
- ISBN-10's mod 11, the barcode's blind pairs 05, 16, 27, 38, 49 and Luhn's 09 and 90, the frequencies of real mistakes from Verhoeff's study, Gumm's theorem that no even-modulus scheme catches every swap, and Verhoeff's dihedral scheme with its tables: J. A. Gallian, "Error detection methods." ACM Computing Surveys 28(3), 1996, pp. 504-517. DOI 10.1145/243439.243457