Você está na página 1de 4

Introdução ao Código de Huffman:

O código de Huffman é um algoritmo de compressão de dados que foi desenvolvido por David
A. Huffman em 1952. É amplamente utilizado na compactação de dados, incluindo aplicativos
de compressão de arquivos, como ZIP, e em comunicação de dados, como a transmissão de
informações pela Internet.

Princípio Básico:

O princípio fundamental do código de Huffman é atribuir códigos de comprimento variável a


símbolos com base em sua frequência de ocorrência. Isso significa que os símbolos mais
comuns recebem códigos mais curtos, enquanto os símbolos menos comuns recebem códigos
mais longos. Isso resulta em uma representação mais eficiente dos dados, economizando
espaço de armazenamento ou largura de banda de transmissão.

Processo de Codificação de Huffman:

1. Cálculo da Frequência: Primeiro, você calcula a frequência de ocorrência de cada símbolo


no conjunto de dados que deseja comprimir. Isso envolve contar o número de vezes que cada
símbolo aparece nos dados.
2. Construção da Árvore de Huffman: Em seguida, você cria uma lista de nós, cada nó
representando um símbolo e sua frequência. Depois, começa a construir uma árvore binária.
Os nós de menor frequência são agrupados em um novo nó pai, cuja frequência é a soma das
frequências dos nós filhos. Esse processo é repetido até que todos os nós estejam
interconectados na árvore, e a raiz da árvore se torna a representação final dos códigos de
Huffman.
3. Atribuição de Códigos: Agora, atribuímos códigos binários aos símbolos na árvore de
Huffman. Ao percorrer a árvore da raiz às folhas, os caminhos para a esquerda representam
"0", e os caminhos para a direita representam "1". Os códigos resultantes são únicos e eficientes
em termos de comprimento.
Compressão e Descompressão:

Para comprimir os dados, você substitui cada símbolo pelo seu código de Huffman
correspondente. Na descompressão, você lê os bits comprimidos e os segue na árvore de
Huffman até encontrar o símbolo original.

Eficiência do Código de Huffman:

O código de Huffman é ótimo em termos de eficiência, uma vez que as frequências de símbolos
reais tendem a seguir distribuições que permitem economia significativa de espaço. No entanto,
para obter a máxima eficiência, é importante que as frequências sejam conhecidas com precisão
no processo de codificação e decodificação.

Aplicações:

O código de Huffman é usado em uma ampla gama de aplicativos, incluindo compactação de


arquivos, transmissão de dados em redes, codificação de áudio e vídeo, e muito mais.

Espero que estas informações detalhadas sejam úteis para o seu trabalho de pesquisa científica
sobre o código de Huffman. Se você precisar de mais informações ou detalhes específicos,
sinta-se à vontade para perguntar.

Exercício proposto

Exercício:

Suponha que você tem o seguinte conjunto de símbolos com suas respectivas frequências de
ocorrência em um conjunto de dados:

Símbolo A: 50 vezes Símbolo B: 25 vezes Símbolo C: 12 vezes Símbolo D: 8 vezes Símbolo


E: 5 vezes

1. Use o algoritmo de código de Huffman para criar uma árvore de Huffman para
representar esses símbolos com códigos de comprimento variável.
2. Determine os códigos de Huffman para cada símbolo.

3. Comprima a sequência "ABACADE" usando os códigos de Huffman que você


determinou.

4. Descomprima a sequência comprimida para garantir que os códigos de Huffman


funcionem corretamente.

Resolução:

Construção da Árvore de Huffman:

Começamos criando nós individuais para cada símbolo e sua frequência:

A (50)

B (25)

C (12)

D (8)

E (5)

Em seguida, combinamos repetidamente os dois nós com menor frequência até termos uma
única árvore:

(100)
/ \
(50) (50)
/ \ / \
A (25) (25)
/ \ / \
B (12) (13)
/ \ / \
C (8) (5)
/ \
D E
Atribuição de Códigos:
Percorrendo a árvore da raiz às folhas, atribuímos códigos:
 A: 0
 B: 10
 C: 110
 D: 1110
 E: 1111
.

Compressão:
Para a sequência "ABACADE", substituímos cada símbolo pelos códigos de Huffman
correspondentes:
 A: 0
 B: 10
 A: 0
 C: 110
 A: 0
 D: 1110
 E: 1111
A sequência comprimida é: 010011011011100011101111.
.

Descompressão:
Começando pela raiz da árvore, seguimos os códigos um por um até chegarmos a um símbolo:
 0: A
 10: B
 0: A
 110: C
 0: A
 1110: D
 1111: E
A sequência descomprimida é "ABACADE".

Você também pode gostar