sábado, abril 08, 2006

O misterio do Nº de BI

Este Post é mais ou menos redundante, porque a única pessoa que eu tenho a certeza que o vai ler e comentar (pelo menos a que, aposto, vai ser mais rápida a comentar), foi precisamente quem me mandou a parte mais fundamental do mail que vou passar a transcrever!

Basicamente, esta é a minha humilde contribuição para o avanço e evolução da espécie humana... para acabar com o obscurantismo, com a ignorância e, finalmente, para combater um mito urbano no qual, até há umas horas, também eu acreditava!!... bem, mais ou menos, porque nunca me pareceu muito convincente a explicação!

O Mistério do algarismo suplementar no Nº de BI!!!!

Tomo a liberdade de transcrever um texto que me enviaram por e-mail, para servir de introdução à problemática! Aqui vai:



"Jorge Buescu

Com grande probabilidade o leitor terá já assistido, no meio de um jantar com amigos, à seguinte discussão. A certa altura alguém se pronuncia sobre o algarismo suplementar que os Bilhetes de Identidade passaram a ter de há uns anos para cá mais ou menos nos seguintes termos: "O algarismo suplementar que se segue ao número do BI indica o número de pessoas em Portugal que têm um nome exactamente igual ao do portador do BI".

Quando confrontado com o absurdo de tal afirmação (por exemplo, o algarismo suplementar do meu BI é 9 e eu posso comprovar que sou a única pessoa no Mundo, não apenas em Portugal, com o nome de Jorge Buescu; e que pensar dos casos em que o algarismo é 0?), talvez o interlocutor diga algo do género "Mas eu fui informado por fonte seguríssima de que é assim". Ou talvez prefira mudar de assunto. Uma coisa é certa: não vai mudar de opinião, e na próxima vez em que se falar do assunto lá estará a repetir a mesma afirmação, que depois será eventualmente repetida por novos crentes acríticos e assim sucessivamente. Assistimos assim à geração e propagação oral de uma lenda urbana genuinamente portuguesa, com certeza.

Afinal de contas, o que representa o misterioso algarismo suplementar que se segue ao número do nosso BI? Em primeiro lugar, ele não representa o número de pessoas com o mesmo nome, ou o número de multas de estacionamento que o portador apanhou, ou qualquer outra pueril e disparatada hipótese deste tipo. O algarismo suplementar é (ou seria, se as autoridades portuguesas não tivessem cometido um patético erro matemático!) apenas um algarismo de controle que detecta se o número do BI está correctamente escrito ou não.

Esta história começa nos anos 50, com o nascimento simultâneo, por um lado, da Teoria de Códigos, baseada na Teoria da Informação de Shannon (1948), e por outro da cada vez maior necessidade de tratamento e transmissão em massa de dados de identificação numéricos. Suponha o leitor que é, por exemplo, caixa num supermercado na era pré-leitores ópticos, ou que trabalha numa agência de viagens onde tem de emitir centenas de bilhetes de avião por dia, ou que trabalha numa livraria onde tem de expedir por correio centenas de livros encomendados por dia. Em qualquer destes casos será obrigado a digitar, para cada item em questão (pacote de manteiga, bilhete de avião ou livro) um longo número, talvez com 10 algarismos, que identifica o produto em questão. E tem de o fazer depressa, para que os outros clientes na bicha não se impacientem.

Os seres humanos lidam claramente mal com problemas deste tipo. Escrever diariamente centenas de números com 10 algarismos, sem qualquer padrão aparente, leva inevitavelmente (uma interrupção, uma piada do colega do lado…) a que o operador mais tarde ou mais cedo se engane a escrever um dos números. E as consequências podem ser bastantes desagradáveis: cobrar 20 contos por um pacote de manteiga, emitir um bilhete de avião para a Sibéria em vez de para o Rio, expedir o livro errado. Os custos para corrigir estes erros a posteriori podem, evidentemente, ser muito elevados.

Coloca-se então o seguinte problema: quando se lida sistematicamente com grandes quantidades de números compridos, em que mais tarde ou mais cedo se verificarão erros, há que identificar quais são os erros mais frequentes e encontrar uma forma automática de detectar, assim que o número é escrito, se ele integra erros ou não.

A resposta à primeira pergunta é do domínio da Estatística; sabe-se hoje que mais de 90% dos erros ocorridos na transmissão de dados numéricos são de dois tipos: erros singulares (alteração de um único algarismo, o que levaria por exemplo 2357 a ser escrito como 2358) ou transposições (troca de pares de algarismos adjacentes, como na passagem de 2357 a 2375).

O segundo passo é conceber um algoritmo que detecte, com eficiência 100%, a presença ou ausência destes erros. Se o conseguirmos teremos um mecanismo de detecção de erros com eficiência superior a 90%.

E é aqui que entra a Teoria de Códigos. Existem muitos algoritmos de detecção de erros, com aplicação tecnológica num número infindável de indústrias, assente na ideia básica de aritmética modular, proveniente da Teoria de Números. A ideia é a seguinte: ao número básico em questão acrescenta-se um algarismo suplementar, o algarismo (ou dígito) de controle. Realizando uma operação adequada (e vamos já descrever o que se deve entender por isto) sobre o número original, devemos obter o algarismo de controle. Se isso não acontecer, é porque ocorreu algum erro na escrita do número original.

A ideia de implementar sistemas de identificação com dígitos detectores de erros encontra aplicações quase infindáveis na indústria. É utilizada hoje nos cartões de crédito, nos cheques, na Via Verde, na correspondência postal, nos códigos de barras (UPC-EAN), nos livros (ISBN), nas publicações periódicas (ISSN), etc. Estes sistemas funcionam com variações de pormenor; para dar do seu funcionamento vamos tomar um exemplo: o ISBN (International Standard Book Number), utilizado na identificação de livros.

O ISBN é um número, que em geral aparece nas costas do livro, constituído por 10 algarismos que identificam o livro. Por exemplo, o livro de Hill A first course in coding theory tem o ISBN 0-19-853803-0; o livro de Kato et al. Number Theory I tem o ISBN 0-8218-0863-X (os traços são meramente convencionais). A maneira como o código ISBN funciona é simples: se o número ISBN for

x1x2x3x4x5x6x7x8x9x10,

onde cada xi representa um algarismo, os 9 primeiros algarismos identificam o livro; o 10º algarismo, o dígito de controle, é escolhido por forma a que a soma

x1+2x2+3x3+ … +10x10

seja divisível por 11 (tecnicamente, seja congruente com 0 (mod 11)). O leitor pode convencer-se facilmente de que, se alterar qualquer um dos algarismos (erro singular) ou se trocar dois quaisquer deles (transposição), o resultado já não será divisível por 11. Ou seja, o dígito de controle do ISBN detecta, com eficiência 100%, estes erros!

Apenas duas questões técnicas. Primeiro, porquê exigir que a soma acima seja divisível por 11 e não, por exemplo, por 10? A resposta está na Teoria de Números: estes algoritmos modulares só funcionam se o módulo for um número primo. Ora o nosso sistema de numeração tem base 10; o primo mais próximo de 10 é precisamente 11, o primeiro para o qual o sistema pode funcionar. Esta é também a resposta à segunda questão: o que significa o dígito de controle X? Como o dígito de controle é o complemento para 11 da soma ponderada dos 9 primeiros algarismos, ele pode tomar o valor 10. Para cobrir esta possibilidade introduz-se o caracter X, que tem a valor 10.

Regressemos então ao mistério do BI. Sendo o algarismo suplementar um dígito de controle para detecção de erros, torna-se necessário saber qual o algoritmo utilizado pelo Ministério da Justiça para efectuar esta detecção.

E aqui entra o herói desta história, o Prof. Jorge Picado, da Universidade de Coimbra. A sua curiosidade por esta questão levou-o a pedir os números de BI de algumas dezenas de colegas seus. Introduziu-os num pequeno programa em Pascal que fazia a busca dos vários algortimos num sábado de manhã e foi para casa.

Ao chegar ao seu gabinete, na segunda-feira de manhã, qual não foi o seu espanto ao verificar que… não existia nenhum algoritmo que funcionasse!

Intrigado com este surpreendente resultado, o Prof. Picado teve então uma ideia luminosa. Constatando que o dígito de controle do seu BI era 0, retirou o seu número de BI da lista e pôs o programa a correr. Bingo: em 5 minutos, tinha a resposta. O algoritmo de detecção de erros do Ministério da Justiça é igual ao do ISBN, com ligeiras adaptações: o dígito de controle tem peso 1, o dígito mais à direita do número de BI tem peso 2, o seguinte peso 3, etc. Faça o leitor a experiência com o seu próprio número de BI. Se fizer esta soma o resultado terá de ser múltiplo de 11.

Nesta altura, cerca de 1/11 dos leitores da Ingenium, e cerca de 50% daqueles cujo dígito de controle é 0, estarão a pensar que estou a enganá-los. É que, afinal, fizeram as contas e obtiveram um número que não é divisível por 11. Pelo contrário: é um múltiplo de 11 mais 1! E, afinal, porque é que o Prof. Picado teve de retirar o seu número de BI da lista para descobrir o algoritmo de detecção?

A resposta a estas perguntas é apenas uma, e completamente patética. Como se disse acima, no ISBN (e no BI) o dígito de controle tem de estar entre 0 e 10, para que se possa assegurar resto 0 ao dividir por 11. É essa a razão de ser do caracter alfanumérico X, que vale 10, no dígito de controle do ISBN.

Ora, muito provavelmente alguma mente burocrática da Direcção-Geral dos Registos e Notariado deve ter achado muito desagradável que alguém visse um "X" escrito à frente do seu número de BI, enquanto que outras pessoas tinham apenas um algarismo. Talvez pudesse ser considerado politicamente incorrecto… e a pessoa pudesse pensar que isso teria um significado estranho… talvez cadastro? Ficha no SIS?

Para abreviar: alguém no Ministério da Justiça, na sua reconfortante ignorância matemática sobre códigos, teve a brilhante ideia de substituir o dígito de controle X, quando ocorresse, por 0. Ou seja, quando 0 ocorre como dígito de controle, pode ter na realidade dois valores: 0 ou 10! Ou seja, em metade dos casos em que ocorre o 0 (como no caso do Prof. Picado), esse dígito está errado. Ou seja, o próprio Arquivo de Identificação emite um BI cujo número, se controlado pelo seu algoritmo, estaria errado.

A ignorância pode custar muito caro. Neste caso, custou a inoperância do sistema de detecção de erros que se pretendia implementar! E repare-se que teria sido muito fácil não cometer esta barbaridade: bastava, por exemplo, adoptar como dígito de controle sempre uma letra, digamos as 11 primeiras letras do alfabeto, A a L…

E haveria outras soluções matematicamente correctas, mas mais profundas. O Prof. Picado mostra como, a partir da Teoria de Grupos elementar, usando o grupo diedral D5, se podem construir sistemas de detecção de erros (diferentes dos sistemas modulares, e mesmo melhores do que eles) que permitem usar apenas os algarismos 0 a 9, e com eficiência 100%. Em Novembro passado, o Prof. Picado escreveu para o Ministério da Justiça (responsável pela emissão dos BI) expondo a situação e a sua solução. Até hoje ainda não obteve resposta.

Há pouco tempo, o Prof. Picado foi renovar o seu BI. Na página de instruções do impresso, o ponto 2 afirma "se já tem BI, indique o respectivo nº, incluindo o dígito mais à direita (chamado dígito de controlo e que serve para verificar se a ordem dos algarismos está correcta)". Quando entregou os documentos, disse com toda a razão à funcionária que o atendeu, "Olhe que isto no meu caso não é verdade". A funcionária não disse nada, dirigiu-lhe um olhar estranho, e limitou-se a aceitar os papéis e a atender o mais rapidamente possível aquele utente tão especial…"



End of quote!
Dou um segundo aos leitores para recuperarem o fôlego...
Espero não vir a ser processado por infringir leis de direito de autor, mas acho que a minha modesta tentativa de tentar tornar acessível esta informação ao maior número possível de pessoas justifica o risco!!

Enfim, como devo confessar que me deu um enorme trabalho perceber a parte da explicação matemética (aliás, a teoria explicativa continua a ser um mistério para mim), foquei a minha atenção apenas no processo através do qual cada um pode fazer o "controlo" do seu próprio Nº de BI, e passo agora a explicá-lo numa versão hiper-simplificada... para leigos (ainda hesitei sobre se deveria escrever "para burros" porque não quero ofender ninguém... mas como eu próprio me incluo no lote dos que precisam desta explicação, talvez já não seja tão ofensiva a referência aos asnos... esses animais tão queridos... e Inteligentes!).

A operação aritmética é a seguinte:
(peguem numa máquina de calcular, é mais simples!)

(Algarismo de controlo x 1)
+
(Último algarismo do Nº de BI x 2) ... atenção - têm de somar o resultado da operação "último algarismo x 2"... se somarem o último algarismo ao Nº de controlo e DEPOIS multiplicarem por 2 DÁ ERRADO!!!
+
(segundo algarismo do BI, a contar da direita, x 3)
+
(terceiro alg., a contar da direita, x 4)
+
etc etc etc

no final, dará um número qualquer, que têm de dividir por 11! (e de preferência não demorar demasiado tempo a questionar "mas, dividir por 11 porquê??")... depois de dividir por 11 o resultado será um Nº QUALQUER... INTEIRO!!!
Ou seja, se for um Nº inteiro, o controlo está feito e o Nº é correcto (meaning: não se enganaram a escrever o vosso número de BI)
Se o resultado for qualquer coisa vírgula qualquer coisa, significa, das duas uma: ou se enganaram a fazer as contas, ou o algarismo de controlo é 0 quando na verdade deveria ser 10 (que não existe), ou X (como nos códigos ISBN!!)
Esclarecidos?

Acho que, basicamente, para 10/11 da população (todos aqules cujo número de controlo é entre 1 e 9 mais os que têm 0 e cujas contas batem certo) isto serve, na prática, para, depois de fazer esta operação uma vez, podermos ir todos dormir descansados e, eventualmente, fazer como eu - espalhar o conhecimento da verdade sobre este assunto tão relevante para o nosso dia-a-dia. Para os restantes 1/11, esta informação é uma pequena tragédia que vai abalar o vosso mundo e nunca mais vos deixará ser os mesmos... é que a partir de agora sabem que são uns proscritos da sociedade e que as autoridades escreveram um 0 no vosso BI, onde deviam ter escrito um X... ou um 10 (o X vale dez... aliás podem fazer de novo as contas com 10 como algarismo de controlo e vão ver que bate certo)!!!
Mas, neste engano, há aspectos positivos para todos vós, ALEGREM-SE!!!
Para já significa que não são um 0!! (à direita, mas mesmo assim não é bom ser-se um 0... as minhas desculpas àqueles cujo algarismo é MESMO 0!) e depois significa que, uma vez que o vosso número correcto de BI, com o algarismo de controlo errado é... INCONTROLÁVEL!!! Logo, mantendo o 0, podem dar-se ao trabalho de fazer as contas de modo a que, com pequenas alterações de alguns algarismos ao vosso número actual de BI, a operação bata certo... pensem só nas possibilidades de ter um Nº de BI novinho em folha!!! Que em princípio é CORRECTO!!

Bom, uma vez que me estou a desviar para o campo da ilegalidade e isso não é muito compatível com as minhas intenções de propagar o conhecimento e a verdade, acho que é melhor terminar por aqui, até porque quem quer que seja que se tenha dado ao trabalho de ler isto até ao fim, merece um prémio!!!
Enfim, espero que esta informação tenha sido útil, se tiverem dúvidas, perguntem!
Um apelo final: Comentem!! e, sobretudo, espalhem a palavra!!!
Quero acabar com o mito de que existem por aí mais 8 Jxxx xxnxxx xxdxxxxxx xxxxs... É MENTIRA!!!
Abraços!!

7 comentários:

a disse...

lol! Eu mereço um prémio por ter lido até ao fim?
...acho que eu não conto, devo ser a única que não conta para esse prémio. Mas não faz mal, o meu número de BI está correcto, não posso ter um novo!

beijinhos

Anónimo disse...

BI: 11308311

Nº de controlo: 4

eheh

Z disse...

Caro(a) 11308311(4):
Se se deu (deste) ao trabalho de vir até aqui e comentar, calculo que tenha(s) feito a experiência! Em qualquer caso eu fi-la por si (ti)... DÁ CERTO... dá um número inteiro!! É um novo passatempo e é engraçado!
hehehe
obrigado!

Unknown disse...

Já agora, existe algum programa que faça de imediato este controlo (escrevendo o nr de BI e em seguida analise o digito de controle)? É que estou num trabalho que me dava um jeito ENORME saber estas coisas. Se alguém souber d alguma coisa P.F. digam. Respondam para freerider05@gmail.com

Abraço e obg!

Anónimo disse...

eu gostava de saber o meu nº de ja que o perdi
tenho cartao de utente e tudo mais como posso saber?????

Um pai que não sabe o que faz disse...

parabéns, eu pelo menos fiquei esclarecido... e sim, tenho o meu número correcto, porque me dá um número inteiro como resposta.

Questão: qual a fonte que utilizou para saber de certeza que a fórmula de cálculo é igual à do ISBN? Ou fica mais um pequeno mito urbano? :)

Tomás disse...

curti largo, parabéns e obrigado por me teres esclarecido!