Há uns 15 anos atrás o estado português acrescentou um algarismo extra ao número de Bilhete de Identidade de todos os cidadãos. Nunca foi explicado exactamente para que servia, e rapidamente surgiu um mito urbano em como indicava o número de pessoas com o mesmo nome. Isso rapidamente descobri que não passava mesmo de um mito, devido a amiga de origem chinesa, com nome chinês, e que tinha um valor elevado (5 ou 6) nesse algarismo extra.
Alguns documentos oficiais davam uma pista ao pedirem para se escrever o número de BI incluindo o “algarismo de controle”. Mas controle de quê? Finalmente este fim-de-semana vi a resposta a este mistério antigo, muito bem explicada, no blog do Nuno Manuel Costa. Tudo graças ao Prof. Jorge Picado da Universidade de Coimbra que deslindou finalmente este mistério!
Podem colocar de lado as teorias da conspiração. Basicamente não passa de um mecanismo de detecção de erros, semelhante até a vários usados em informática para detectar erros na transmissão e armazenamento de dados. Actualmente usa-se estes algarismos de controle nos cartões de crédito, cheques, Via Verde, na correspondência postal, nos códigos de barras (UPC-EAN), nos livros (ISBN), etc. Em todos os casos o algarismo de controlo é escolhido para dar ao número uma certa coerência segundo um algoritmo escolhido para o efeito. O objectivo é permitir uma detecção imediata quando alguém comete um erro ao inserir um destes números num qualquer sistema informático.
O mecanismo do ISBN (International Standard Book Number) é simples e extremamente semelhante ao usado nos nossos BI. É um número de 10 algarismos do tipo 0-19-853803-0. Os primeiros 9 identificam o livro, e o último é o digito de controle.
Se representarmos o número ISBN como x1x2x3x4x5x6x7x8x9x10, em que x representa um algarismo, então o algarismo de controle (o 10º e último) é escolhido de modo a que o resultado da soma x1+2x2+3x3+ +10x10 seja divisível por 11 (dê um número inteiro). Qualquer erro (ou quase) que se faça ao transcrever um ISBN é facilmente detectável pois esta soma não será divisível por 11 (número primo mais próximo de 10).
Nos nossos BI o mecanismo é apenas ligeiramente diferente. A ordem dos algarismos é invertida assim: x10x9x8x7x6x5x4x3x2x1. Isto porque o número de identidade português têm um número de algarismos variável! A soma tem de ser feita a começar com o algarismo de controle na posição x1, seguindo-se dos algarismos do número de identidade propriamente dito, da direita para a esquerda, pois os BIs mais antigos não têm tantos algarismos! O resto é igual. O resultado da soma tem de dar um valor inteiro ao dividir por onze.
Um problema deste algoritmo é que o valor do digito de controlo pode ir de 0 a 10, e 10 não é um algarismo… são dois! No ISBN resolveram substituindo o 10 por X. No caso dos nossos BIs não usaram essa solução. Talvez algum burocrata tenha achado desagradável ter um X a seguir ao número do BI. Imagine-se as teorias de conspiração nessa altura… Seria uma pessoa “marcada”? Teria cadastro?
Assim, nos nossos BI, optaram por usar um algarismo de controle entre 0 a 9. Quando aparece um zero este pode na realidade significar zero (0) ou dez (10). Ao copiarem mal o sistema do ISBN, retiraram alguma eficácia ao sistema na detecção de erros, e que seria evitável usando por exemplo letras de A a L.
Se o leitor quiser confirmar se isto tudo bate certo com o seu próprio número de BI… nas palavras imortais do ex-Primeiro Ministro António Guterres: “É só fazer as contas.” Para facilitar criei uma folha de cálculo no Google Docs (vamos lá ver se ninguém abusa…) e uma folha de Excel para quem preferir (tinham um pequeno erro que já foi corrigido). Se o seu número tiver 0 como algarismo de controlo, não se esqueça de fazer a verificação com 0 e com 10.
ACTUALIZAÇÃO: O Prof. Picado dá um exemplo do problema do 0 significar 0 ou 10 numa apresentação que fez.
Estes dois números variam apenas num algarismo, podendo facilmente resultar de uma transcrição incorrecta do outro, e ambos têm o algarismo de controlo 0. Um dá certo fazendo os cálculos com zero, e o outro com dez. Neste caso o mecanismo de controlo de erros falha.
Eu questionava-me quanto à probabilidade real disto ocorrer, mas a questão é de facto bastante mais grave do que eu pensava. A fragilidade deste sistema quando o algarismo de controlo é 0 ou 10 é de facto grande. Veja-se o número de identidade do Prof. Picado (6235003 [0]). Dá certo com dez. Mas todas os números em baixo, gerados a partir de alterações singulares (em um só algarismo), são dadas como correctas com zero:
6535003
6215003
6237003
6235803
6235073
6235008
Só o primeiro algarismo do BI do Prof. Picado não pode assumir outro valor. Para os restantes algarismos há um valor “alternativo” que “engana” a detecção de erros. São 6 erros de transcrição daquele número que são dados como correctos. Isto em 63 possíveis erros singulares, excluindo erros no próprio digito de controlo. Se todos forem igualmente prováveis de ocorrerem, isto dá uma percentagem de 9,5% erros não detectados.
O meu próprio número de BI tem um 0 como algarismo de controlo, com significado 10. Em TODOS os oito algarismos há uma erro passível de ser feito e que não é detectado. Ou seja, entre 72 possíveis erros singulares, 8 (11,11%) não são detectados pelo sistema.
Vejamos o número 123456789, que dá certo com algarismo de controlo 10. Todas as variantes em baixo, resultantes de alterações singulares, são dadas como correctas com controlo 0:
223456789
183456789
127456789
123756789
123436789
123458789
123456489
123456749
123456783
Mais uma vez, em 81 erros singulares possíveis, 9 (11,11%) não seriam detectados.
Parece que quem teve esta ideia “genial” do zero valer zero ou dez, não pensou lá muito bem nas consequências…
Fonte: Texto de Jorge Buescu n’O Melhor e o Pior (originalmente publicado na Ingenium, Revista da Ordem dos Engenheiros, Maio de 2000)