/ Códigos / Huffman: exemplos, aplicação

Códigos de Huffman: exemplos, aplicações

No momento, poucas pessoas pensam sobrecomo funciona a compactação de arquivos. Em comparação com o passado, o uso de um computador pessoal tornou-se muito mais fácil. E quase todas as pessoas que trabalham com o sistema de arquivos usam arquivos. Mas poucas pessoas pensam em como funcionam e qual é o princípio da compactação de arquivos. A primeira versão deste processo foi os códigos Huffman, e eles ainda são usados ​​em vários arquivadores populares. Muitos usuários nem sequer pensam em como é fácil compactar um arquivo e de acordo com qual esquema ele funciona. Neste artigo, veremos como ocorre a compactação, quais nuances ajudam a acelerar e simplificar o processo de codificação e também descobrir qual é o princípio da criação de uma árvore de codificação.

História do Algoritmo

O primeiro algoritmo a conduzir eficazmenteA codificação da informação eletrônica tornou-se o código proposto por Huffman já em meados do século XX, a saber, em 1952. Que ele é atualmente o principal elemento básico da maioria dos programas projetados para compactar informações. Atualmente, uma das fontes mais populares usando esse código é ZIP, ARJ, RAR e muitos outros arquivos.

Códigos Huffman
Além disso, este algoritmo Huffman é usado paracomprimir imagens JPEG e outros objetos gráficos. Bem, todos os aparelhos de fax modernos também usam a codificação inventada em 1952. Apesar do fato de que muito tempo se passou desde a criação do código, até hoje é usado nas mais novas conchas e nos equipamentos dos tipos antigo e moderno.

O princípio da codificação eficiente

O algoritmo de Huffman é baseado em um esquemapermite substituir os códigos de caracteres mais comuns e mais prováveis ​​do sistema binário. E aqueles que são menos comuns são substituídos por códigos mais longos. A transição para códigos longos de Huffman ocorre somente depois que o sistema usa todos os valores mínimos. Essa técnica permite minimizar o tamanho do código para cada caractere da mensagem original como um todo.

Algoritmo de Huffman
O ponto importante é que no começoAs probabilidades de codificação do aparecimento de letras já devem ser conhecidas. É deles que a mensagem final será composta. Com base nesses dados, a árvore de códigos Huffman está sendo construída, com base na qual o processo de codificação de letras no arquivo será executado.

Exemplo de código de Huffman

Para ilustrar o algoritmo, leveversão gráfica da construção da árvore de códigos. Para utilizar este método efetivamente, vale esclarecer a definição de alguns valores necessários para o conceito deste método. O conjunto de arcos e nós que são direcionados de nó para nó é chamado de gráfico. A árvore em si é um gráfico com um conjunto de propriedades específicas:

  • cada nó não pode conter mais do que um dos arcos;
  • um dos nós deve ser a raiz da árvore, isto é, nenhum arco deve entrar de forma alguma;
  • Se você começar a mover da raiz ao longo de arcos, esse processo deve permitir que você caia completamente em qualquer um dos nós.

exemplo de código huffman
Há também uma coisa dessas incluída nos códigosHuffman gosta de uma folha de uma árvore. É um nó do qual nenhum arco deve se estender. Se dois nós estão conectados por um arco, então um deles é um pai, o outro filho, dependendo de qual nó o arco vai e para o qual ele entra. Se dois nós tiverem o mesmo nó pai, eles serão chamados de nós fraternos. Se, além das folhas, os nós saírem em vários arcos, então essa árvore é chamada de binária. Tal é a árvore de Huffman. Uma característica dos nós dessa construção é que o peso de cada pai é igual à soma do peso de todos os seus filhos principais.

Algoritmo de construção de árvores Huffman

Construir um código Huffman é feito de letrasalfabeto de entrada. Uma lista desses nós que estão livres na futura árvore de códigos é formada. O peso de cada nó nesta lista deve ser o mesmo que a probabilidade de ocorrência da letra da mensagem correspondente a este nó. Neste caso, entre vários nós livres da árvore futura, o que pesa menos é selecionado. Além disso, se os indicadores mínimos são observados em vários nós, então você pode escolher livremente qualquer um dos pares.

construindo um código huffman
Depois disso, a criação do paium nó que deve pesar tanto quanto a soma desse par de nós. Depois disso, o pai é enviado para a lista com nós livres e os filhos são removidos. Neste caso, os arcos recebem os indicadores correspondentes, uns e zeros. Esse processo é repetido exatamente o tempo necessário para deixar apenas um nó. Então os dígitos binários são escritos na direção de cima para baixo.

Melhor eficiência de compactação

Para melhorar a eficiência de compressão, você precisatempo para construir uma árvore de código para usar todos os dados relativos à probabilidade de letras em um arquivo específico anexado a uma árvore, e evitar que eles sejam espalhados por um grande número de documentos de texto. Se você passar por esse arquivo, poderá calcular imediatamente as estatísticas de quantas vezes as letras do objeto a ser compactado são encontradas.

Acelerando o processo de compactação

Para acelerar o algoritmo, a definição de letrasdeve ser realizado não de acordo com a probabilidade de ocorrência de uma determinada letra, mas pela freqüência de sua ocorrência. Devido a isso, o algoritmo se torna mais fácil e o trabalho com ele é bastante acelerado. Também evita operações relacionadas a vírgulas e divisões flutuantes.

código dinâmico de huffman
Além disso, trabalhando neste modo, dinâmicoO código de Huffman, ou melhor, o próprio algoritmo, não está sujeito a nenhuma alteração. Isto é principalmente devido ao fato de que as probabilidades são diretamente proporcionais às freqüências. Vale a pena prestar atenção especial ao fato de que o peso final do arquivo ou o chamado nó raiz será igual à soma do número de letras no objeto a ser processado.

Conclusão

Códigos de Huffman - simples e de longa dataum algoritmo que ainda é usado por muitos programas e empresas conhecidos. Sua simplicidade e clareza permitem obter resultados efetivos de compactação de arquivos de qualquer tamanho e reduzir significativamente o espaço em disco que ocupam. Em outras palavras, o algoritmo de Huffman é um esquema muito estudado e bem desenvolvido, cuja relevância não diminui até hoje.

Codificação Huffman
E graças à capacidade de reduzir o tamanho dos arquivos,sua transmissão através da rede ou de outras formas se torna mais fácil, mais rápida e mais conveniente. Trabalhando com o algoritmo, é possível compactar absolutamente qualquer informação sem prejudicar sua estrutura e qualidade, mas com o efeito máximo de reduzir o peso do arquivo. Em outras palavras, a codificação Huffman tem sido e continua sendo o método mais popular e atual para compactar o tamanho do arquivo.

Leia mais: