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.
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.
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.
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.
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.
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.