Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Codificaçao de Huffman: teoria e algoritmos, Provas de Direito

Este documento aborda os codigos de huffman, uma técnica de compressão de dados sem perdas. Aprenda sobre a representação de codigos binários, a construção da árvore de huffman e a atribuição de códigos de prefixo. O algoritmo de huffman é otimo para minimizar o comprimento médio do código, o que é essencial para a compressão eficiente de dados. Além disso, é apresentada a noção de codigos de huffman canônicos, que são uma representação ligeiramente diferente do código de huffman original, mais eficiente para decodificação em sistemas de grande volume de texto.

O que você vai aprender

  • Qual é o processo de construção da árvore de Huffman e a atribuição de códigos de prefixo?
  • Como funciona a representação de codigos binários em árvores binárias ordenadas?
  • O que são codigos de Huffman canônicos e como são construídos?

Tipologia: Provas

2022

Compartilhado em 07/11/2022

A_Santos
A_Santos 🇧🇷

4.4

(111)

214 documentos

1 / 8

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
4
odigos de Huffman
4.1
´
Arvores de odigo
Numa ´arvore qualquer, os os que ao em filhos ao chamados de folhas
e os demais os ao chamados de os internos.
Se um o de uma ´arvore ´e filho de outro, ent˜ao a um arco ligando os
dois os. Um caminho Pligando dois os da ´arvore ´e dado por uma seq¨encia
de arcos conexos. O tamanho de P´e calculado pelo umero de arcos do seu
caminho.
Oıvel de um o em uma ´arvore ´e igual ao tamanho do caminho que
conecta a raiz da ´arvore a esse o.
Aaltura de uma ´arvore ´e dada pelo n´ıvel do o de maior ıvel da ´arvore.
Assim, as ´arvores da figura 4.1 em alturas iguais a 2, 3 e 4, respectivamente.
´
Arvore bin´aria ´e aquela cujos os em, no aximo, dois filhos. Se al´em
disso, a ordem dos filhos de cada o tamb´em ´e levada em conta, ent˜ao temos
uma ´arvore bin´aria ordenada.
Os odigos de prefixo ao usualmente representados por ´arvores bin´arias
ordenadas. As ´arvores da figura 4.1 ao ´arvores bin´arias ordenadas.
Existe uma rela¸ao de um para um entre odigo de prefixo com npalavras
de odigo e ´arvores bin´arias ordenadas com nfolhas. Todo odigo de prefixo C
pode ser representado por uma ´arvore bin´aria ordenada e esta ´arvore ´unica
para esse odigo. Cada folha da ´arvore est´a associada a uma palavra de odigo
cide C. Esta palavra de odigo ´e determinada pelo caminho na ´arvore que a
conecta `a raiz da mesma. A regra geral para formar os bits de uma palavra de
odigo ´e, partindo da raiz, percorrer o caminho at´e a folha correspondente, de
tal modo que, cada arco percorrido para a direita equivale, por exemplo, a um
bit ’1’ na palavra de odigo e cada arco percorrido para a esquerda equivale a
um bit ’0’.
A figura 4.1 mostra as ´arvores bin´arias que representam os odigos de
prefixo 1, 4 e 5 da tabela 2.2. Os odigos 2 e 3 ao em representa¸oes em
´arvores bin´arias com palavras de odigo nas folhas.
PUC-Rio - Certificação Digital Nº 0115626/CA
pf3
pf4
pf5
pf8

Pré-visualização parcial do texto

Baixe Codificaçao de Huffman: teoria e algoritmos e outras Provas em PDF para Direito, somente na Docsity!

C´odigos de Huffman

Arvores de c´´ odigo

Numa ´arvore qualquer, os n´os que n˜ao tˆem filhos s˜ao chamados de folhas e os demais n´os s˜ao chamados de n´os internos. Se um n´o de uma ´arvore ´e filho de outro, ent˜ao h´a um arco ligando os dois n´os. Um caminho P ligando dois n´os da ´arvore ´e dado por uma seq¨uˆencia de arcos conexos. O tamanho de P ´e calculado pelo n´umero de arcos do seu caminho. O n´ıvel de um n´o em uma ´arvore ´e igual ao tamanho do caminho que conecta a raiz da ´arvore a esse n´o. A altura de uma ´arvore ´e dada pelo n´ıvel do n´o de maior n´ıvel da ´arvore. Assim, as ´arvores da figura 4.1 tˆem alturas iguais a 2, 3 e 4, respectivamente. Arvore bin´^ ´ aria ´e aquela cujos n´os tˆem, no m´aximo, dois filhos. Se al´em disso, a ordem dos filhos de cada n´o tamb´em ´e levada em conta, ent˜ao temos uma ´arvore bin´aria ordenada. Os c´odigos de prefixo s˜ao usualmente representados por ´arvores bin´arias ordenadas. As ´arvores da figura 4.1 s˜ao ´arvores bin´arias ordenadas. Existe uma rela¸c˜ao de um para um entre c´odigo de prefixo com n palavras de c´odigo e ´arvores bin´arias ordenadas com n folhas. Todo c´odigo de prefixo C pode ser representado por uma ´arvore bin´aria ordenada e esta ´arvore ´e ´unica para esse c´odigo. Cada folha da ´arvore est´a associada a uma palavra de c´odigo ci de C. Esta palavra de c´odigo ´e determinada pelo caminho na ´arvore que a conecta `a raiz da mesma. Aregra geral para formar os bits de uma palavra de c´odigo ´e, partindo da raiz, percorrer o caminho at´e a folha correspondente, de tal modo que, cada arco percorrido para a direita equivale, por exemplo, a um bit ’1’ na palavra de c´odigo e cada arco percorrido para a esquerda equivale a um bit ’0’. Afigura 4.1 mostra as ´arvores bin´arias que representam os c´odigos de prefixo 1, 4 e 5 da tabela 2.2. Os c´odigos 2 e 3 n˜ao tˆem representa¸c˜oes em ´arvores bin´arias com palavras de c´odigo nas folhas.

Figura 4.1: Representa¸c˜ao de c´odigos bin´arios por ´arvores bin´arias.

Uma ´arvore ´e estritamente bin´aria quando todos os seus n´os internos tˆem exatamente dois filhos. As ´arvores representativas dos c´odigos 1 e 4 da figura 4.1 s˜ao estritamente bin´arias enquanto que aquela que representa o c´odigo 5 n˜ao. Toda ´arvore estritamente bin´aria com n n´os internos tem n + 1 folhas. Um c´odigo livre de prefixo associado a uma ´arvore estritamente bin´aria ´e dito um c´odigo minimal ou completo. Todo c´odigo ´otimo ´e minimal. Seja um texto T = t 1 .t 2 ...tm , obtido de uma fonte independente e codificado por C = c 1 .c 2 ....cm. Supondo que cada palavra de c´odigo ci seja suficiente para carregar a quantidade de informa¸c˜ao contida no seu s´ımbolo correspondente em T , a entropia fornece um limite inferior para o comprimento m´edio das palavras de um c´odigo utilizado para a codifica¸c˜ao de T. Pode-se entender esse limite inferior do comprimento m´edio como o n´umero esperado de bits por s´ımbolo em um c´odigo C.

C´odigos de Huffman

Uma das melhores t´ecnicas de compress˜ao conhecidas ´e devida a Huffman (7). Para uma dada distribui¸c˜ao de probabilidades gera um c´odigo ´otimo, livre de prefixo e de redundˆancia m´ınima, al´em de produzir uma sequˆencia de bits aleat´orios. Utiliza c´odigos de tamanho vari´avel para representar os s´ımbolos do texto, que podem ser caracteres ou cadeias de caracteres (digramas, trigramas, n-gramas ou palavras). Aid´eia b´asica do algoritmo ´e atribuir c´odigos de bits menores para os s´ımbolos mais freq¨uentes no texto, e c´odigos mais longos para os mais raros. O algoritmo de Huffman original baseia-se no m´etodo guloso e constr´oi um c´odigo ´otimo com esfor¸co computacional O(n.logn). Existem novas vers˜oes que constroem o c´odigo de Huffman com esfor¸co computacional O(n), mas

Figura 4.3: (b) Passo 2.

Figura 4.4: (c) Passo 3.

Figura 4.5: (d) Passo 4.

Figura 4.6: (e) Passo 5 - Arvore de Huffman final.´

Figura 4.7: Navega¸c˜ao na ´arvore de Huffman.

Tabela 4.2: C´odigos de Huffman por s´ımbolo. S´ımbolo C´odigo de Hufffman 0 00 1 10 2 110 3 1110 4 0111 5 0110 6 11111 7 0100 8 0101 9 11110

Para achar o c´odigo de cada s´ımbolo, basta navegar na ´arvore de Huffman da raiz at´e a folha, concatenando os valores encontrados para cada n´o da ´arvore: bit 0 (zero) ao navegar na sub´arvore da esquerda, e bit 1 (um) ao navegar na sub´arvore da direita, conforme a figura 4.7. Atabela 4.2 lista os c´odigos de Huffman resultantes da concatena¸c˜ao dos bits pela navega¸c˜ao na ´arvore. Observando a tabela 4.2 notamos que os c´odigos mais curtos, 00 e 10, s˜ao atribu´ıdos aos s´ımbolos mais frequentes, enquanto os c´odigos mais longos s˜ao atribu´ıdos aos s´ımbolos relativamente mais raros. Dependendo do processo de constru¸c˜ao da ´arvore de Huffman e da atribui¸c˜ao dos bits 0 e 1, podemos obter c´odigos diferentes dos listados na tabela 4.2. Entretanto, isto n˜ao afeta a entropia do c´odigo. O algoritmo de Huffman produz um c´odigo de comprimento m´edio

C´odigos de Huffman canˆonicos

Existe uma representa¸c˜ao ligeiramente diferente do c´odigo de Huffman que ´e muito eficiente para a decodifica¸c˜ao, mesmo que os modelos sejam extremamente grandes, o que pode acontecer em sistemas de recupera¸c˜ao de informa¸c˜ao com grande volume de texto. Esta representa¸c˜ao ´e chamada de c´odigo de Huffman canˆonico. Resulta nos mesmos tamanhos do c´odigo de Huffman, mas necessita de uma representa¸c˜ao particular para os c´odigos. Um c´odigo canˆonico ´e estruturado para permitir uma decodifica¸c˜ao extremamente r´apida, necessitando apenas de alguns bits por s´ımbolo do alfabeto. O c´odigo ´e chamado de canˆonico porque muito do n˜ao determinismo dos c´odigos de Huffman convencionais ´e evitado. Por exemplo, na constru¸c˜ao normal da ´arvore de Huffman, foi assumida a conven¸c˜ao de usar o bit 0 para indicar o ramo esquerdo e o bit 1 para indicar o direito (codifica¸c˜ao 0-left), mas uma escolha diferente conduz a diferentes c´odigos, mas igualmente v´alidos.

4.3. Constru¸c˜ao de c´odigos de Huffman canˆonicos

Os c´odigos de Huffman canˆonicos s˜ao gerados atrav´es de um algoritmo que leva em considera¸c˜ao apenas o tamanho do c´odigo de Huffman para o s´ımbolo, ou seja, a altura do s´ımbolo na ´arvore. Na tabela 4.3, temos os c´odigos de Huffman Canˆonico para a codifica¸c˜ao de Huffman original da tabela 4.2. Aconstru¸c˜ao da ´arvore de Huffman canˆonica ´e detalhada por Moffat et al. (22). Visualmente, a ´arvore canˆonica ´e a mesma ´arvore de Huffman, onde todos os n´os est˜ao deslocados para a esquerda (ou direita) dentro de cada n´ıvel da ´arvore. Afigura 4.8 representa a ´arvore canˆonica correspondente aos c´odigos de Huffman Canˆonicos da tabela 4.. Para construir a ´arvore, basta conhecer o tamanho do c´odigo de Huffman para cada s´ımbolo, e a partir da´ı posicionam-se as folhas nos n´ıveis adequa- dos, da esquerda para a direita, ordenados ascendentemente pela freq¨uˆencia. Depois, completa-se a ´arvore criando os n´os internos. O algoritmo de Huffman tradicional pode ser utilizado para determinar os tamanhos dos c´odigos. O pro- cesso de constru¸c˜ao dos c´odigos de Huffman Canˆonicos ´e r´apido e econˆomico. N˜ao ´e necess´aria a constru¸c˜ao de uma ´arvore realmente, o algoritmo utiliza apenas o comprimento do c´odigo de Huffman para derivar o c´odigo Canˆonico, e a grande vantagem ´e um ganho substancial no processo de decodifica¸c˜ao.

Tabela 4.3: C´odigos de Huffman canˆonico.

S´ımbolo Huffman Tamanho do c´odigo Huffman can^onico 0 00 2 10 1 10 2 11 2 110 3 011 3 1110 4 0101 4 0111 4 0100 5 0110 4 0011 6 11111 5 00001 7 0100 4 0001 8 1101 4 0010 9 11110 5 00000

Figura 4.8: Arvore de Huffman canˆ´ onica.