Estrutura de Dados III Revisão Método de Huffman Estrutura de Dados III Revisão
O que é ? É um método de compressão que usa as probabilidades (frequências) de ocorrência dos símbolos no conjunto de dados a ser comprimido para determinar códigos de tamanho variável para cada símbolo. Foi desenvolvido em 1952 por David A. Huffman que era, na época, estudante de doutorado no MIT. Foi publicado no artigo "A Method for the Construction of Minimum-Redundancy Codes".
Codificação ASCII American Standard Code for Information Interchange é um padrão de codificação de caracteres usado por muitas linguagens de programação. Cada caracter é codificado com o mesmo número de bits por caracter (e.x., 8 bits). Desta maneira, há 256 (28) possíveis combinações para representar os caracteres em ASCII. Os caracteres mais comuns, como os alfanuméricos, pontuação e caracteres de controle usam apenas 7 bits. 128 (27) caracteres diferentes podem ser codificados com 7 bits. A codificação de Huffman compacta os dados usando um número menor de bits para codificar caracteres que ocorrem mais frequentemente de maneira que nem todos os caracteres precisem ser codificados com 8 bits
VAMOS A UM EXEMPLO ? PARALELEPÍPEDO
TEXTO: PARALELEPÍPEDO CODIFICAÇÃO ASCII SÍMBOLO ASCII BINÁRIO P 80 0101 0000 A 65 0100 0001 R 82 0101 0010 L 76 0100 1100 E 69 0100 0101 I 73 0100 1001 D 68 0100 0100 O 79 TAMANHO, EM BITS, OCUPADO PELA PALAVRA: 112
TEXTO: PARALELEPÍPEDO CÓDIGOS DE TAMANHO FIXO SÍMBOLO CODE BINÁRIO P 000 A 1 001 R 2 010 L 3 011 E 4 100 I 5 101 D 6 110 O 7 111 TAMANHO DO TEXTO COMPRIMIDO USANDO CÓDIGOS DE 3 BITS: 42 (37,5%)
TEXTO: PARALELEPÍPEDO CODIFICAÇÃO DE HUFFMAN SÍMBOLO BINÁRIO P 10 A 010 R 0010 L 011 E 11 I 0011 D 0000 O 0001 TAMANHO DO TEXTO COMPRIMIDO COM HUFFMAN: 40 (35,7%)
Como derivar os códigos de Huffman ????
TRABALHO PRÁTICO Implementar o método de Huffman em C Equipes de no máximo 4 Entrega: 11/08/2014 Deve ser entregue: Fontes comentados, Readme.txt (como compilar, usar e etc), script (sh ou bat) para criar o executável. Execução por linha de comando Envio por e-mail para carlos.mar@carlos.mar.pro.br Devem ser gerados dois executáveis: encodeHuffman e decodeHuffman. O primeiro recebe como entrada um arquivo texto e gera como saída um arquivo compactado. O segundo faz a operação inversa > encondeHuffman meutexto.txt meutexto.huff > decodeHuffman meutexto.huff meutexto.txt