Racha Cuca


Um belo dia, você, que é radio-astrônomo e não tem nada melhor para fazer, está escutando as estrelas. Após alguns ruídos estranhos, você recebe a seguinte mensagem (em hexadecimal, que os E.T.s também conhecem computador):

B3...........6E...........34...........94...........4C...........44...........64...........D8...........55

C2...........43...........44...........62...........1E...........8C...........04...........32...........B1

72...........D3...........15...........A1...........41...........05...........58...........53...........02

8D...........9D...........0F...........D0...........C9...........B3...........28...........54

Assustado, você verifica para onde está apontada a sua antena e vê que ela está na direção de veja (ou Canopus, tanto faz).

De alguma maneira, chega-lhe o conhecimento de que serão válidos os primeiros 278 bits de mensagem, sendo o resto bits de preenchimento, ou “bit-stuffing”, como os veganos os chamam.

Depois de quebrar a cabeça, você chega à conclusão que os veganos usuram os códigos de Huffman, já que existe um teorema (a matemática é universal) que prova ser este método o que garante o mínimo espaço ocupado por uma mensagem, ou seja ele é o universalmente mais econômico.

PS: Para saber sobre Huffman, leia o capítulo correspondente do livro de James Martin sobre bando de dados, ou de Gilbert Held sobre compressão de dados.

Para decodificar a mensagem, você precisa saber qual a freqüência relativa das letras em veja. Não se sabe como, você consegue uma amostra representativa. Ei-la

Neste bloco de 300 caracteres (o branco, por comodidade é um ^) existem 24 brancos, 23 letras “A”, 22 letras “O”,... 1 letra “Z”. Não há empates.

Saiba ainda que os veganos usam as seguintes convenções:

a) durante a construção da árvore, a maior freqüência fica à esquerda.

b) se houver empate entre uma folha e um nó intermediário, este fica à esquerda

c- o ramo esquerdo vale 0, e o direito vale 1

Você tem tudo o que precisa, então, mãos à obra:

1 – Converta a mensagem recebida para binário.

2 – A partir do bloco de 300 caracteres, crie a tabela de freqüências.

3 – Ordene-a em critérios ascendente.

4 – Construa a árvore: comece pelas 2 menores freqüências, juntando-as em um único nó, que será incluído na tabela, com a freqüência de seus filhos somada. Não esqueça de riscar na tabela o que for sendo usado. DICA 1: a árvore terá 24 folhas e 23 nós parciais. DICA 2: Para conferir a árvore, ante de começar aqui vão alguns códigos: A = 0010, X= 00000000, B= 01000 e C é 1011.

5 – Percorra a árvore, guiando-se pela mensagem. Cada vez que chegar a uma folha, escreva o caráter encontrado, e retorne à raiz.

Ao final, veremos que em Vega, William Shakespeare é apreciado, pois na mensagem temos o nome de uma tragédia do bardo inglês, seguido de 3 branco , e seguido por uma frase extraída dessa tragédia.

No próximo número teremos a árvore, o modo de construção da árvore e a resposta.