SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
Complexidade de Algoritmos
Huffman

 Denilson Grosa
 Fernando Kaway
 Helder Cesar



                                                                1
                             Complexidade de Algoritmos - Huffman
Algoritmo de Huffman?

 Compressão de dados;
 Técnicas estatísticas;
 Conceitos básicos de Estrutura de Dados:
  Lista com Prioridade;
  Árvore Binária.




                                                                          2
                                       Complexidade de Algoritmos - Huffman
Algoritmo de Huffman?

 Algumas aplicações:
  JPEG;
  MP3;
  Zip.

 Variações:
  Codificação n-ária de Huffman;
  Codificação Adaptativa de Huffman;




                                                                          3
                                       Complexidade de Algoritmos - Huffman
JPEG

 Compressão:




Bloco   Transformada                         Codificador        Codificador
                            Quantizador
8x8px       DCT                                R.L.E.           Estatístico




                                                                 Tabela de
                       Fator de Compressão                      Codificação
                                                                                 Imagem
                                                                               Comprimida


                            Tabela de
                           Quantização



                                                                                          4
                                                       Complexidade de Algoritmos - Huffman
JPEG

Descompressão:
    Imagem
  Comprimida




   Decodif.     Decodif.                         Transformada          Bloco
                              Desquantizador
  Estatístico    R.L.E.                          DCT Inversa           8x8px




   Tabela de
                           Fator de Compressão
  Codificação



                                Tabela de
                               Quantização



                                                                                      5
                                                   Complexidade de Algoritmos - Huffman
Exemplo de Codificação

 Vamos codificar a mensagem:
              “CASA PAPEL HOTEL PASTEL”
 Tabela de frequências:
                     Letra   Frequencia


                      C          1
                      A          4
                      S          2
                      P          3
                      E          3
                      L          3
                      H          1
                      O          1
                      T          2
                    Espaço       3




                                                                             6
                                          Complexidade de Algoritmos - Huffman
Exemplo de Codificação

 Texto original: “CASA_PAPEL_HOTEL_PASTEL”
 Texto codificado:
 “000000010010000110010011000100110100010110010110
   01111000010001011001001100010010100001000101”
                     Letra   Código


                      C       0000
                      A       0001

   23*4 = 92bits      S       0010
                      P       0011
                      E       0100
                      L       0101
                      H       0110
                      O       0111
                      T       1000
                    Espaço    1001

                                                                         7
                                      Complexidade de Algoritmos - Huffman
Exemplo de Codificação

 Lista com prioridade:
  C      A        S        P   E   L   H        O         T        Esp
  1      4        2        3   3   3   1        1         2         3


       Maior prioridade.


 Lista com prioridade ordenada:

  C      H        O        S   T   P   E        L       Esp         A
  1      1        1        2   2   3   3        3         3         4




                                                                              8
                                           Complexidade de Algoritmos - Huffman
Exemplo de Codificação

 Construção da árvore:
   C         H   O   S   T   P   E         L       Esp         A
   1         1   1   2   2   3   3         3         3         4




       C+H       O   S   T   P   E         L       Esp         A
        2        1   2   2   3   3         3         3         4



   C         H




                                                                        9
                                     Complexidade de Algoritmos - Huffman
Exemplo de Codificação

  O   S          T       C+H       P   E           L         Esp       A
  1   2          2        2        3    3          3          3        4



                     C         H



  T        C+H       P         E   L   Esp              O+S            A
  2         2        3         3   3    3                3             4



       C         H                                  O         S




                                                                               10
                                             Complexidade de Algoritmos - Huffman
Exemplo de Codificação

  P          E   L         Esp       O+S       A                T+C+H
  3          3   3           3        3        4                    4



                                 O         S                    T       2



                                                                    C       H

       P+E           L+Esp           O+S       A                T+C+H
        6              6              3        4                    4



   P         E   L         ''    O         S                    T       2



                                                                    C       H
                                                                                     11
                                                   Complexidade de Algoritmos - Huffman
Exemplo de Codificação

      O+S           A   T+C+H                 P+E                            L+' '
       3            4       4                  6                              6



  O         S           T         2       P           E                  L           ''


                            C         H

       T+C+H                P+E               L+' '                      O+S+A
            4                6                 6                              7



       T        2       P         E       L           ''                 3                A


            C       H                                                O        S
                                                                                             12
                                                           Complexidade de Algoritmos - Huffman
Exemplo de Codificação

          L+' '                O+S+A                   T+C+H+P+E
           6                       7                        10



      L           ''       3           A          4                      6


                       O       S           T            2            P        E



                                                   C        H




                                                                                 13
                                               Complexidade de Algoritmos - Huffman
Exemplo de Codificação

           T+C+H+P+E                    L+' '+A+O+S
               10                                13



       4                6           6                          7



   T       2        P       E   L       ''                3         A



       C       H                                      O       S




                                                                               14
                                             Complexidade de Algoritmos - Huffman
Exemplo de Codificação

                            T+C+H+P+E+L+' '+A+O+S
                                     23



                   10                                        13


       4                     6                 6                           7



   T       2            P        E         L        ''                3         A



       C       H                                                  O       S




                                                                                           15
                                                         Complexidade de Algoritmos - Huffman
Exemplo de Codificação

 Atribuição de código:
                                                          23
                                              0                        1                                             Letra   Código

                             10                                                     13
                                                                                                                      C       0010
                     0            1
                                                                                0                1                    A       111
                                                                                                                      S       1101
         4                                    6                        6                                 7
                                                                                                                      P       010
     0       1                            0       1                0       1                         0       1        E       011
                                                                                                                      L       100
 T               2                    P               E        L               ''                3               A    H       0011

             0       1                                                                       0       1                O       1100
                                                                                                                      T       000
         C               H                                                               O               S           Esp.     101




                                                                                                                               16
                                                                                             Complexidade de Algoritmos - Huffman
Exemplo de Codificação

 Comparando o “antes” e o “depois”:
 Texto original: “CASA_PAPEL_HOTEL_PASTEL”

 Texto codificado (antes):    Texto codificado (depois):

“00000001001000011001001     “001011111011111010101110
100010011010001011001011     100111001010011110000001
001111000010001011001001     110010101011111010000111
100010010100001000101”       00”

     Tam. Total: 92bits          Tam. Total: 74bits!!!!
               Taxa de Compressão ~ 20%
                                                                      17
                                    Complexidade de Algoritmos - Huffman
Decodificação



                        Letra   Código



Texto codificado:        C       0010
                         A       111
“001011111011111
010101110100111
                         S       1101
                                              Texto decodificado:
001010011110000
001110010101011
                    +    P
                         E
                         L
                                 010
                                 011
                                 100
                                         =    “CASA_PAPEL_H
                                              OTEL_PASTEL”
                         H       0011
11101000011100”          O       1100
                         T       000
                        Esp.     101




                                                                           18
                                         Complexidade de Algoritmos - Huffman
Fontes Consultadas

 Goodrich, M. T.; Tamassia, R.; Projeto de Algoritmos, Bookman, 2002;
 Huffman, D. A.; Method for the Construction of Minimum-
 Redundancy Codes, In: Proceedings of the Institute of Radio
 Engineers, Vol. 40, Nr. 9 (September 1952) , p. 1098-1101.
 http://www.cprogramming.com/tutorial/computersciencetheory/huffman.html
 http://algs4.cs.princeton.edu/55compression/Huffman.java.html
 http://www.ics.uci.edu/~dan/pubs/DC-Sec3.html
 http://en.wikipedia.org/wiki/Huffman_coding




                                                                                   19
                                                 Complexidade de Algoritmos - Huffman

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

1. cumprimentos
1. cumprimentos1. cumprimentos
1. cumprimentos
 
Cartilha de libras
Cartilha de librasCartilha de libras
Cartilha de libras
 
Manual de portugol
Manual de portugolManual de portugol
Manual de portugol
 
NP Completude - Loiane
NP Completude - LoianeNP Completude - Loiane
NP Completude - Loiane
 
Tecnologias De InformaçãO E ComunicaçãO
Tecnologias De InformaçãO E ComunicaçãOTecnologias De InformaçãO E ComunicaçãO
Tecnologias De InformaçãO E ComunicaçãO
 
História das tecnologias educacionais.
História das tecnologias educacionais.História das tecnologias educacionais.
História das tecnologias educacionais.
 
Algoritmos e Programação
Algoritmos e ProgramaçãoAlgoritmos e Programação
Algoritmos e Programação
 
Teclado
TecladoTeclado
Teclado
 
Educação infantil surdez
Educação infantil   surdezEducação infantil   surdez
Educação infantil surdez
 
Introdução a Informática Básica
Introdução a Informática BásicaIntrodução a Informática Básica
Introdução a Informática Básica
 
Informatica basica
Informatica basicaInformatica basica
Informatica basica
 
Normas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de SoftwareNormas e Padrões para a Qualidade de Software
Normas e Padrões para a Qualidade de Software
 
Apendicite aguda
Apendicite agudaApendicite aguda
Apendicite aguda
 
Abdome agudo na criança
Abdome agudo na criançaAbdome agudo na criança
Abdome agudo na criança
 
Aula: Tipos de Interface
Aula: Tipos de InterfaceAula: Tipos de Interface
Aula: Tipos de Interface
 
Instalação e Manutenção: Introdução a Arquitetura de Computadores
Instalação e Manutenção: Introdução a Arquitetura de ComputadoresInstalação e Manutenção: Introdução a Arquitetura de Computadores
Instalação e Manutenção: Introdução a Arquitetura de Computadores
 
Tumores Cutâneos
Tumores CutâneosTumores Cutâneos
Tumores Cutâneos
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Cancer estomago, coloretal
Cancer estomago, coloretalCancer estomago, coloretal
Cancer estomago, coloretal
 
Introdução a computação
Introdução a computaçãoIntrodução a computação
Introdução a computação
 

Destaque

Trabalho Estrutura De Dados Algoritmos De CompactaçãO
Trabalho Estrutura De Dados   Algoritmos De CompactaçãOTrabalho Estrutura De Dados   Algoritmos De CompactaçãO
Trabalho Estrutura De Dados Algoritmos De CompactaçãOMateus Ramos Pereira
 
Compactação e Compressão de Dados
Compactação e Compressão de DadosCompactação e Compressão de Dados
Compactação e Compressão de DadosDaniel Rossi
 
Técnicas de compressão de dados
Técnicas de compressão de dadosTécnicas de compressão de dados
Técnicas de compressão de dadosSergio10INF
 
compressao de dados
compressao de dadoscompressao de dados
compressao de dadosmidleofmidle
 
Radiotelegrafia código morse
Radiotelegrafia   código morseRadiotelegrafia   código morse
Radiotelegrafia código morseFmoreira4
 
Método de compressão de Huffman
Método de compressão de Huffman Método de compressão de Huffman
Método de compressão de Huffman UFPA
 
Compressão de dados
Compressão de dadosCompressão de dados
Compressão de dadosmidleofmidle
 
Algoritimo de Huffman
Algoritimo de HuffmanAlgoritimo de Huffman
Algoritimo de HuffmanLucas Santos
 

Destaque (10)

Trabalho Estrutura De Dados Algoritmos De CompactaçãO
Trabalho Estrutura De Dados   Algoritmos De CompactaçãOTrabalho Estrutura De Dados   Algoritmos De CompactaçãO
Trabalho Estrutura De Dados Algoritmos De CompactaçãO
 
Compactação e Compressão de Dados
Compactação e Compressão de DadosCompactação e Compressão de Dados
Compactação e Compressão de Dados
 
Técnicas de compressão de dados
Técnicas de compressão de dadosTécnicas de compressão de dados
Técnicas de compressão de dados
 
compressao de dados
compressao de dadoscompressao de dados
compressao de dados
 
Radiotelegrafia código morse
Radiotelegrafia   código morseRadiotelegrafia   código morse
Radiotelegrafia código morse
 
Método de compressão de Huffman
Método de compressão de Huffman Método de compressão de Huffman
Método de compressão de Huffman
 
Compressão de dados
Compressão de dadosCompressão de dados
Compressão de dados
 
Código de Huffman
Código de HuffmanCódigo de Huffman
Código de Huffman
 
Algoritimo de Huffman
Algoritimo de HuffmanAlgoritimo de Huffman
Algoritimo de Huffman
 
ITI Slides
ITI SlidesITI Slides
ITI Slides
 

CodHuff23

  • 1. Complexidade de Algoritmos Huffman Denilson Grosa Fernando Kaway Helder Cesar 1 Complexidade de Algoritmos - Huffman
  • 2. Algoritmo de Huffman? Compressão de dados; Técnicas estatísticas; Conceitos básicos de Estrutura de Dados: Lista com Prioridade; Árvore Binária. 2 Complexidade de Algoritmos - Huffman
  • 3. Algoritmo de Huffman? Algumas aplicações: JPEG; MP3; Zip. Variações: Codificação n-ária de Huffman; Codificação Adaptativa de Huffman; 3 Complexidade de Algoritmos - Huffman
  • 4. JPEG Compressão: Bloco Transformada Codificador Codificador Quantizador 8x8px DCT R.L.E. Estatístico Tabela de Fator de Compressão Codificação Imagem Comprimida Tabela de Quantização 4 Complexidade de Algoritmos - Huffman
  • 5. JPEG Descompressão: Imagem Comprimida Decodif. Decodif. Transformada Bloco Desquantizador Estatístico R.L.E. DCT Inversa 8x8px Tabela de Fator de Compressão Codificação Tabela de Quantização 5 Complexidade de Algoritmos - Huffman
  • 6. Exemplo de Codificação Vamos codificar a mensagem: “CASA PAPEL HOTEL PASTEL” Tabela de frequências: Letra Frequencia C 1 A 4 S 2 P 3 E 3 L 3 H 1 O 1 T 2 Espaço 3 6 Complexidade de Algoritmos - Huffman
  • 7. Exemplo de Codificação Texto original: “CASA_PAPEL_HOTEL_PASTEL” Texto codificado: “000000010010000110010011000100110100010110010110 01111000010001011001001100010010100001000101” Letra Código C 0000 A 0001 23*4 = 92bits S 0010 P 0011 E 0100 L 0101 H 0110 O 0111 T 1000 Espaço 1001 7 Complexidade de Algoritmos - Huffman
  • 8. Exemplo de Codificação Lista com prioridade: C A S P E L H O T Esp 1 4 2 3 3 3 1 1 2 3 Maior prioridade. Lista com prioridade ordenada: C H O S T P E L Esp A 1 1 1 2 2 3 3 3 3 4 8 Complexidade de Algoritmos - Huffman
  • 9. Exemplo de Codificação Construção da árvore: C H O S T P E L Esp A 1 1 1 2 2 3 3 3 3 4 C+H O S T P E L Esp A 2 1 2 2 3 3 3 3 4 C H 9 Complexidade de Algoritmos - Huffman
  • 10. Exemplo de Codificação O S T C+H P E L Esp A 1 2 2 2 3 3 3 3 4 C H T C+H P E L Esp O+S A 2 2 3 3 3 3 3 4 C H O S 10 Complexidade de Algoritmos - Huffman
  • 11. Exemplo de Codificação P E L Esp O+S A T+C+H 3 3 3 3 3 4 4 O S T 2 C H P+E L+Esp O+S A T+C+H 6 6 3 4 4 P E L '' O S T 2 C H 11 Complexidade de Algoritmos - Huffman
  • 12. Exemplo de Codificação O+S A T+C+H P+E L+' ' 3 4 4 6 6 O S T 2 P E L '' C H T+C+H P+E L+' ' O+S+A 4 6 6 7 T 2 P E L '' 3 A C H O S 12 Complexidade de Algoritmos - Huffman
  • 13. Exemplo de Codificação L+' ' O+S+A T+C+H+P+E 6 7 10 L '' 3 A 4 6 O S T 2 P E C H 13 Complexidade de Algoritmos - Huffman
  • 14. Exemplo de Codificação T+C+H+P+E L+' '+A+O+S 10 13 4 6 6 7 T 2 P E L '' 3 A C H O S 14 Complexidade de Algoritmos - Huffman
  • 15. Exemplo de Codificação T+C+H+P+E+L+' '+A+O+S 23 10 13 4 6 6 7 T 2 P E L '' 3 A C H O S 15 Complexidade de Algoritmos - Huffman
  • 16. Exemplo de Codificação Atribuição de código: 23 0 1 Letra Código 10 13 C 0010 0 1 0 1 A 111 S 1101 4 6 6 7 P 010 0 1 0 1 0 1 0 1 E 011 L 100 T 2 P E L '' 3 A H 0011 0 1 0 1 O 1100 T 000 C H O S Esp. 101 16 Complexidade de Algoritmos - Huffman
  • 17. Exemplo de Codificação Comparando o “antes” e o “depois”: Texto original: “CASA_PAPEL_HOTEL_PASTEL” Texto codificado (antes): Texto codificado (depois): “00000001001000011001001 “001011111011111010101110 100010011010001011001011 100111001010011110000001 001111000010001011001001 110010101011111010000111 100010010100001000101” 00” Tam. Total: 92bits Tam. Total: 74bits!!!! Taxa de Compressão ~ 20% 17 Complexidade de Algoritmos - Huffman
  • 18. Decodificação Letra Código Texto codificado: C 0010 A 111 “001011111011111 010101110100111 S 1101 Texto decodificado: 001010011110000 001110010101011 + P E L 010 011 100 = “CASA_PAPEL_H OTEL_PASTEL” H 0011 11101000011100” O 1100 T 000 Esp. 101 18 Complexidade de Algoritmos - Huffman
  • 19. Fontes Consultadas Goodrich, M. T.; Tamassia, R.; Projeto de Algoritmos, Bookman, 2002; Huffman, D. A.; Method for the Construction of Minimum- Redundancy Codes, In: Proceedings of the Institute of Radio Engineers, Vol. 40, Nr. 9 (September 1952) , p. 1098-1101. http://www.cprogramming.com/tutorial/computersciencetheory/huffman.html http://algs4.cs.princeton.edu/55compression/Huffman.java.html http://www.ics.uci.edu/~dan/pubs/DC-Sec3.html http://en.wikipedia.org/wiki/Huffman_coding 19 Complexidade de Algoritmos - Huffman