SlideShare une entreprise Scribd logo
1  sur  10
Télécharger pour lire hors ligne
Sessão nº8

                 Codificação de Lempel-Ziv




              CCISEL 99                                         Teoria Matemática da Comunicação           8-1
              Criptografia Computacional




Máquina para gerar sequências de símbolos


shift register                                                                                      L<>0
                                                                                                    "c"
     x   -n
                       ...          x   -p
                                                         ...    x   -k
                                                                         ...   x
                                                                               -2      x   -1

                                                                                                y    L=0
     sn                                          s   p          s   n          s   2   s
                                                                                       1




                                             p
Instruções possíveis para a máquina:
                      ( L, p, c ) se L > 0
                       (0,c)      se L = 0
• p informa a máquina onde posicionar o ponteiro
• L indica o número de clocks que a máquina deve receber com o
ponteiro posicionado
• c é um elemento do alfabeto
              CCISEL 99                                         Teoria Matemática da Comunicação           8-2
              Criptografia Computacional




                                                                                                                 1
LZ77 - Algoritmo da “janela deslizante”
                                      dicionário         lookahead buffer

saída de símbolos                                                                entrada de símbolos
                               ...     ...       ...                   ...
                      1                                  N-F   N-F+1         N


                                        "janela deslizante"
   • N é a dimensão da janela deslizante
   • N-F é a dimensão do dicionário que contem os símbolos já
   codificados
   • F é a dimensão do lookahead buffer que contem os símbolos
   por codificar
   • N e F são os parâmetros que caracterizam este algoritmo

         CCISEL 99                           Teoria Matemática da Comunicação                 8-3
         Criptografia Computacional




Algoritmo LZ77 - a codificação
• Consideremos uma fonte de símbolos pertencentes ao alfabeto X
que “alimenta” o lookahead buffer
• Pesquisar sobre os primeiros N-F símbolos (dicionário) a maior
subfrase contida na “janela deslizante” que coincide com a frase ou
subfrase contida no lookahead buffer.
• Codificar o resultado da pesquisa na forma
                                             (L, p, x)
- L é a dimensão da maior subfrase, L ∈ [0, F]
- p é a o ponteiro para a subfrase encontrada, p ∈ [1, N-F]
- x é a o primeiro símbolo do lookahead buffer que não coincide
com a subfrase encontrada, x ∈ X
• Descodificação: é simples e rápida (não requer a pesquisa).

         CCISEL 99                           Teoria Matemática da Comunicação                 8-4
         Criptografia Computacional




                                                                                                       2
Factores determinantes nas variantes do LZ77
  (compromisso entre a memória, o tempo e a eficiência de compressão)

• tamanho do dicionário; é fixo (ou não), ficando limitado
  (ou não) até que ponto da janela o ponteiro pode referenciar
   – dimensão em bits do ponteiro versus tempo e eficácia de compressão
• tipo de parsing; dentro dos limites da janela de texto
  considerada, determina qual das subfrases é referenciada
  pelo ponteiro
   – escolha da subfrase sem restrições de tempo e de memória (solução
     óptima)
   – escolha limitada a um conjunto de frases escolhidas de acordo com
     uma heurística (solução subóptima)
        • greedy parsing: mais comum e mais prático
        • non-greedy parsing: também permite bons resultados

      CCISEL 99                    Teoria Matemática da Comunicação       8-5
      Criptografia Computacional




Estratégias de parsing: um problema
• mensagem: wooloomooloo

• dicionário: loo, loom, loomooloo, moo, ooloo, oom,oomoo,
  woo, wool

• resultados possíveis do parsing da mensagem:
   – woo-loo-moo-loo

   – woo-loom-ooloo

   – woo-loomooloo

   – wool-oom-ooloo

   – wool-oomoo-loo


      CCISEL 99                    Teoria Matemática da Comunicação       8-6
      Criptografia Computacional




                                                                                3
Estrutura do codificador/descodificador LZSS
                                                    Codificador LZSS

                                      dicionário                       lookahead buffer
                                                                                                                  Fonte
                              Símbolos já codificados                              Símbolos por codificar


                                      Codif.         Pesquisa
             Códigos de símbolos
             (sequência de bits)
                                                                  Árvore auxiliar de pesquisa
                                                    Descodificador LZSS

                                                        dicionário

                                                      Símbolos já descodificados

          Símbolos por descodificar
             (sequência de bits)
                                        Descodif.
                                                                     Símbolo descodificado
                                                                                                            Destino

           • introdução da árvore auxiliar de pesquisa
               • palavras de códigos do tipo (L, p)
      • número de bits (L, p) =  log2 (F) +  log2(N-F) + 1
     CCISEL 99                                          Teoria Matemática da Comunicação                                       8-7
     Criptografia Computacional




Diagrama de blocos do codificador LZHUF


  códigos de símbolos                                                                                       símbolos por codificar
  (sequência de bits)
                                                Codif.                      Codif.
                                               Huffman                      LZSS




   • estrutura básica idêntica ao codificador LZSS
   • utiliza-se codificação de Huffman na representação dos
   ponteiros p, da dimensão das subfrases L e dos símbolos x
         - modelo adaptativo de ordem 0
         - modelo estático de ordem -1, para os bits de maior peso dos
         ponteiros (tabela com valores pré-definidos ou tabela de look up)


     CCISEL 99                                          Teoria Matemática da Comunicação                                       8-8
     Criptografia Computacional




                                                                                                                                     4
Parametrizações do algoritmo LZHUF

                                     LZHUF               “Calgary corpus”

                                 p   L    threshold    Valor médio da eficácia
                                                           de compressão

                                                             [bits/byte]
                            [bit] [bit]    [byte]

                                 6   12      2                 3,132

                                 5   12      2                 3,160

                                 4   12      1                 3,382

                                 6   11      2                 3,323

                                 5   11      1                 3,514

                                 4   11      1                 3,588

                                 6   10      1                 3,778

                                 5   10      1                 3,786

                                 4   10      1                 3,848



    CCISEL 99                                       Teoria Matemática da Comunicação    8-9
    Criptografia Computacional




Algoritmo de Zif e Lempel ‘78 - LZ78




    CCISEL 99                                    Teoria Matemática da Comunicação      8 - 10
    Criptografia Computacional




                                                                                                5
Conjuntos de ficheiros para teste - exemplo

          Nome do ficheiro         Dimensão                Nome do ficheiro   Dimensão
                                    [byte]                                     [byte]

             ETP94.ABS              186158                   ETP94.HEX         530334

           ETP94TA.ABS              186295                  ETP94TA.HEX        530708

         POSGASOL.ABS               193739                 POSGASOL.HEX        552008

          POSSHELL.ABS              181305                 POSSHELL.HEX        516781

          POSSIMPL.ABS              175260                 POSSIMPL.HEX        499533

          POSVSHEL.ABS              199779                 POSVSHEL.HEX        569275

 • Conjunto “ProgAbs” representativo                 • Conjunto “ProgHex” representativo
 de programas reais em ficheiros                     de programas reais em ficheiros
 objecto no formato absoluto, para os                objecto no formato hexadecimal, para
 terminais TP90 e TP92                               os terminais TP90 e TP92


      CCISEL 99                               Teoria Matemática da Comunicação           8 - 11
      Criptografia Computacional




Amostra dum ficheiro com programa no formato
objecto absoluto hexadecimal da Intel




   :02000002C0003C
   :10000000FAB840008ED0BC0001B851008ED8BAA812
   :10001000FFB8BCC0EFBAA6FFB8FC01EFBAA4FFB8A6
   :100020003D00EFBA8001B80000EFBA0002B8E0006E
   :10003000EF33C08EC08BF8268A0DF6D126880D26A8
   :100040008A05C6066B5CFF2AC17405C6066B5C0098
   :100050001E8EDFB900408B05F7D089053B05750D75

   :100000008BD88BC2F7E18BF08BC7F7E303F08BC182
   :05001000F7E303D6CB6D
   :04000003FFFF0000FB
   :00000001FF




      CCISEL 99                               Teoria Matemática da Comunicação           8 - 12
      Criptografia Computacional




                                                                                                  6
Amostra dum ficheiro com programa no formato
objecto absoluto da Intel
05 30 30 30 30 30 30 E4 84 1C 00 A8 C1 0B 43 4F
4E 54 41 20 41 20 43 52 45 44 49 54 41 52 20 20
20 20 20 20 20 20 A8 84 16 00 AA C1 03 20 41 43
54 49 56 41 52 20 50 4F 52 54 41 54 49 4C 20 1F
84 C8 01 D5 C0 0E 1E 0F D5 C0 7C 0F D5 C0 52 10
D5 C0 B0 10 D5 C0 44 11 D5 C0 1A 12 D5 C0 58 12
D5 C0 8A 12 D5 C0 4A 13 D5 C0 A8 13 D5 C0 FC 13
D5 C0 12 14 D5 C0 54 14 D5 C0 96 14 D5 C0 E8 14
D5 C0 58 15 D5 C0 E0 15 D5 C0 40 16 D5 C0 82 16
D5 C0 30 17 D5 C0 90 17 D5 C0 C2 17 D5 C0 7E 18
D5 C0 9A 18 D5 C0 52 19 D5 C0 62 1A D5 C0 C6 1A
D5 C0 82 1B D5 C0 2A 24 D5 C0 BE 24 D5 C0 D8 24




          CCISEL 99                                  Teoria Matemática da Comunicação        8 - 13
          Criptografia Computacional




Conjunto normalizado para testes - Calgary corpus
 Nome do ficheiro         Dimensão original [byte]    Este conjunto foi preparado na Universidade
       BIB                        111261              de Calgary (Canadá); pretende ser um
     BOOK1                        768771              conjunto de ficheiros normalizados para ser
     BOOK2                        610856              utilizado na investigação em compressão de
       GEO                        102400              dados.
     NEWS                         377109

      OBJ1                         21504              É constituído por 10 ficheiros de texto, 1
      OBJ2                        246814
                                                      ficheiro com dados de geofísica, 2 ficheiros
     PAPER1                        53161
                                                      objecto e 1 ficheiro com o bitmap duma
     PAPER2                        82199
                                                      imagem a preto e branco. Os de texto são
       PIC                        513216
                                                      constituídos por: 1 bibliografia, 1 livro de
     PROGC                         39611
                                                      ficção e outro não de ficção, 1 registo de
     PROGL                         71646
                                                      notícias, 2 artigos científicos, um programa
                                                      escrito na linguagem “C”, 1 programa escrito
     PROGP                         49379
                                                      na linguagem “Lisp”, 1 programa escrito na
     TRANS                         93695
                                                      linguagem “Pascal” e 1 transcrição duma
   Valor médio                    224402
                                                      sessão num terminal.

          CCISEL 99                                  Teoria Matemática da Comunicação        8 - 14
          Criptografia Computacional




                                                                                                      7
Comparação de métodos de compressão - exemplo
• algoritmo       de Huffman semi-adaptativo com modelo de ordem 0
(HUFF);
• algoritmo de Huffman adaptativo com modelo de ordem 0 (AHUFF);

• codificação          Aritmética semi-adaptativa com modelo de ordem 0
(ARITH);
• codificação Aritmética adaptativo com modelo de ordem 1 (ARITH1);

• variante     do algoritmo LZ77 (Sliding Window) de Lempel-Ziv
(LZSS);
• variante do algoritmo LZSS com codificação de Huffman estática                                          (e modelo
de ordem 0) da saída (LZHUF);
• variante do algoritmo LZSS com codificação Aritmética da saída (LZARI);

• variante     do algoritmo LZ78 de Lempel-Ziv (LZW12).

       CCISEL 99                                        Teoria Matemática da Comunicação                      8 - 15
       Criptografia Computacional




Programas de compressão* (didácticos)
                    Método                                    Descrição

                     HUFF       Algoritmo de Huffman com modelo semi-adaptativo de ordem 0

                    AHUFF Algoritmo de Huffman com modelo adaptativo de ordem 0

                    ARITH Codificação aritmética com modelo semi-adaptativo de ordem 0

                    ARITH1 Codificação aritmética com modelo adaptativo de ordem 1

                     LZSS       Codificação de Lempel-Ziv baseada no algoritmo LZ77, variante proposta
                                por Storer e Szymanski em 1982, com os parâmetros N = 4096 (número
                                máximo de caracteres na janela deslizante) e F = 16 (dimensão máxima da
                                subfrase)

                    LZW12 Codificação de Lempel-Ziv baseada no algoritmo LZ78, variante proposta
                                por Welch em 1984, com o parâmetro M = 4096 (número máximo de
                                frases no dicionário)

                   *implementações                       originais de Mark Nelson
       CCISEL 99                                        Teoria Matemática da Comunicação                      8 - 16
       Criptografia Computacional




                                                                                                                       8
Análise de recursos e resultados dos testes- exemplo
                                    Recursos para a         Resultados para o        Resultados para o
                                     descompressão              “ProgAbs”                “ProgHex”

               Método         Dimensão       Dimensão       Valor        Valor       Valor        Valor
                              do código      dos dados    médio da      médio do   médio da      médio do
                                                         eficácia de    tempo de    eficácia     tempo de
                                                            comp.       descomp.   de comp.      descomp.
                                   [byte]      [byte]
                                                          [bits/byte]      [s]     [bits/byte]      [s]

                HUFF                969        4365          6,92         2,00        3,87         2,17

               AHUFF               1788        4664          6,80         2,50        3,86         3,33

               ARITH               1049         682          6,89         3,33        3,83         9,17

               ARITH1               997       136262         5,28        10,50        3,26        27,33

                LZSS                302        4118          4,40         1,33        3,08         2,17

               LZW12                380       30154          7,79         1,33        3,57         2,00

               LZHUF               1225        9109          3,85         1,17        2,57         1,83

                LZARI              1538       14918          3,84         1,83        2,56         3,33



      CCISEL 99                                       Teoria Matemática da Comunicação                      8 - 17
      Criptografia Computacional




 Medidas de eficácia de compressão

• Relacionam a dimensão do texto com compressão β e a
dimensão original do texto α.

• A razão de compressão é uma medida onde se consideram
sempre blocos com 8 bit ou 1 byte do texto original, definida por

        razão de compressão = 8 × (β / α) [bit/byte]

• A percentagem removida é outra medida usada, definida por

      percentagem removida = 100 × (1 - β / α) [%]

      CCISEL 99                                       Teoria Matemática da Comunicação                      8 - 18
      Criptografia Computacional




                                                                                                                     9
Eficiência na compressão do Calgary Corpus


              8
            7,5
              7
            6,5
              6
            5,5
              5
bits/char




            4,5
              4
            3,5
              3
            2,5
              2
            1,5
              1
            0,5
              0
                  H U FF        AH U FF        AR IT H    AR IT H 1    LZSS       LZH U F   LZAR I   LZW 12
                                                               M ethod

                                                    Abs      H ex     C algary C orpus



                  CCISEL 99                                 Teoria Matemática da Comunicação                  8 - 19
                  Criptografia Computacional




Recomendações para evitar a redundância

Com vista à maximização da entropia da fonte, nas
mensagens a cifrar deve-se evitar:

• sinais de pontuação

• acentos

• mensagens do tipo “responda qual o número de
mísseis?”

• a mensagem deve ser o mais curto possível


                  CCISEL 99                                 Teoria Matemática da Comunicação                  8 - 20
                  Criptografia Computacional




                                                                                                                       10

Contenu connexe

Tendances

Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosAdriano Teixeira de Souza
 
Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos João moreira
 
Curso De Algoritmo Aula 9
Curso De Algoritmo   Aula 9Curso De Algoritmo   Aula 9
Curso De Algoritmo Aula 9Felipe Santos
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...Rogério Moraes de Carvalho
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Marcelo Barros de Almeida
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao cprofwtelles
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Ismar Silveira
 
Caderno de exercicios algoritmos-v.1.3
Caderno de exercicios   algoritmos-v.1.3Caderno de exercicios   algoritmos-v.1.3
Caderno de exercicios algoritmos-v.1.3Débora Inocêncio
 
Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Mauricio Volkweis Astiazara
 
Videoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programaçãoVideoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programaçãoaldoirjava
 
Teoria da Computação
Teoria da ComputaçãoTeoria da Computação
Teoria da ComputaçãoAlefe Variani
 

Tendances (20)

Ed1
Ed1Ed1
Ed1
 
Aes 25
Aes 25Aes 25
Aes 25
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
ITI Slides
ITI SlidesITI Slides
ITI Slides
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
 
Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos Apresentação 20130805 algoritmos
Apresentação 20130805 algoritmos
 
Curso De Algoritmo Aula 9
Curso De Algoritmo   Aula 9Curso De Algoritmo   Aula 9
Curso De Algoritmo Aula 9
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Autômatos
AutômatosAutômatos
Autômatos
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2
 
Caderno de exercicios algoritmos-v.1.3
Caderno de exercicios   algoritmos-v.1.3Caderno de exercicios   algoritmos-v.1.3
Caderno de exercicios algoritmos-v.1.3
 
Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)
 
Videoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programaçãoVideoulas de algoritmos e lógica de programação
Videoulas de algoritmos e lógica de programação
 
Teoria da Computação
Teoria da ComputaçãoTeoria da Computação
Teoria da Computação
 

En vedette

En vedette (8)

Eres feliz
Eres felizEres feliz
Eres feliz
 
Diapos
DiaposDiapos
Diapos
 
Eres feliz
Eres felizEres feliz
Eres feliz
 
A competência e a arte de empreender
A competência e a arte de empreenderA competência e a arte de empreender
A competência e a arte de empreender
 
מצגת מסע לרחובות ניו יורק
מצגת מסע לרחובות ניו יורקמצגת מסע לרחובות ניו יורק
מצגת מסע לרחובות ניו יורק
 
Tarea na3
Tarea na3Tarea na3
Tarea na3
 
Apresentação curso
Apresentação cursoApresentação curso
Apresentação curso
 
New York City
New York CityNew York City
New York City
 

Similaire à LZ77 - Algoritmo da “janela deslizante

Sessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosSessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosPedro De Almeida
 
Sessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonteSessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fontePedro De Almeida
 
Tmc sessao5 redundância e introdução à codificação de fonte
Tmc sessao5 redundância e introdução à codificação de fonteTmc sessao5 redundância e introdução à codificação de fonte
Tmc sessao5 redundância e introdução à codificação de fonteRichard Johane Manhique
 
Ganhando performance no Python com Numba em projetos não científicos
Ganhando performance no Python com Numba em projetos não científicosGanhando performance no Python com Numba em projetos não científicos
Ganhando performance no Python com Numba em projetos não científicosAlejandro Mesias Nebra Perez
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig LatinElen Arantza
 
Sessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidadeSessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidadePedro De Almeida
 
9. IA 1 - Introdução a programação em Python.pdf
9. IA 1 - Introdução a programação em Python.pdf9. IA 1 - Introdução a programação em Python.pdf
9. IA 1 - Introdução a programação em Python.pdfMilvaNnMarluZz
 
Aula 04 isc - a informação e sua representação
Aula 04   isc - a informação e sua representaçãoAula 04   isc - a informação e sua representação
Aula 04 isc - a informação e sua representaçãoFábio Andrade
 
Construindo um analisador de executáveis
Construindo um analisador de executáveisConstruindo um analisador de executáveis
Construindo um analisador de executáveisFernando Mercês
 
Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...
Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...
Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...Vale Security Conference
 
Aula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptxAula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptxLemosManuel
 
Códigos Convolucionais (sequenciais)
Códigos Convolucionais (sequenciais)Códigos Convolucionais (sequenciais)
Códigos Convolucionais (sequenciais)Mauro Tapajós
 
Fundamentos da computação software evolução e conceito
Fundamentos da computação software evolução e conceitoFundamentos da computação software evolução e conceito
Fundamentos da computação software evolução e conceitoEriclys Moreira
 
Interligados Apresentação Final
Interligados Apresentação FinalInterligados Apresentação Final
Interligados Apresentação FinalHugo Leonardo
 
Nota de aula seguranca da informacao - criptografia
Nota de aula   seguranca da informacao - criptografiaNota de aula   seguranca da informacao - criptografia
Nota de aula seguranca da informacao - criptografiafelipetsi
 

Similaire à LZ77 - Algoritmo da “janela deslizante (20)

Sessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosSessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticos
 
Sessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonteSessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonte
 
Tmc sessao5 redundância e introdução à codificação de fonte
Tmc sessao5 redundância e introdução à codificação de fonteTmc sessao5 redundância e introdução à codificação de fonte
Tmc sessao5 redundância e introdução à codificação de fonte
 
Aula VHDL
Aula VHDLAula VHDL
Aula VHDL
 
Ganhando performance no Python com Numba em projetos não científicos
Ganhando performance no Python com Numba em projetos não científicosGanhando performance no Python com Numba em projetos não científicos
Ganhando performance no Python com Numba em projetos não científicos
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig Latin
 
Estruturas de dados aulas - bloco 1
Estruturas de dados   aulas - bloco 1Estruturas de dados   aulas - bloco 1
Estruturas de dados aulas - bloco 1
 
Sessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidadeSessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidade
 
Arquitetura 6
Arquitetura 6Arquitetura 6
Arquitetura 6
 
9. IA 1 - Introdução a programação em Python.pdf
9. IA 1 - Introdução a programação em Python.pdf9. IA 1 - Introdução a programação em Python.pdf
9. IA 1 - Introdução a programação em Python.pdf
 
Linguagem_C.pdf
Linguagem_C.pdfLinguagem_C.pdf
Linguagem_C.pdf
 
Aula 04 isc - a informação e sua representação
Aula 04   isc - a informação e sua representaçãoAula 04   isc - a informação e sua representação
Aula 04 isc - a informação e sua representação
 
Construindo um analisador de executáveis
Construindo um analisador de executáveisConstruindo um analisador de executáveis
Construindo um analisador de executáveis
 
Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...
Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...
Vale Security Conference - 2011 - 11 - Fernando Mercês [Octane Labs] [Coding ...
 
Aula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptxAula 11- Algoritmos e Programação.pptx
Aula 11- Algoritmos e Programação.pptx
 
Códigos Convolucionais (sequenciais)
Códigos Convolucionais (sequenciais)Códigos Convolucionais (sequenciais)
Códigos Convolucionais (sequenciais)
 
Fundamentos da computação software evolução e conceito
Fundamentos da computação software evolução e conceitoFundamentos da computação software evolução e conceito
Fundamentos da computação software evolução e conceito
 
Interligados Apresentação Final
Interligados Apresentação FinalInterligados Apresentação Final
Interligados Apresentação Final
 
Nota de aula seguranca da informacao - criptografia
Nota de aula   seguranca da informacao - criptografiaNota de aula   seguranca da informacao - criptografia
Nota de aula seguranca da informacao - criptografia
 
Arq orgcom (1)
Arq orgcom (1)Arq orgcom (1)
Arq orgcom (1)
 

Plus de Pedro De Almeida

Java memory model primary ref. - faq
Java memory model   primary ref. - faqJava memory model   primary ref. - faq
Java memory model primary ref. - faqPedro De Almeida
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsPedro De Almeida
 
XSD Incomplete Overview Draft
XSD Incomplete Overview DraftXSD Incomplete Overview Draft
XSD Incomplete Overview DraftPedro De Almeida
 
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1Pedro De Almeida
 
Validation of a credit card number
Validation of a credit card numberValidation of a credit card number
Validation of a credit card numberPedro De Almeida
 
Sessão 10 Códigos Cíclicos
Sessão 10 Códigos CíclicosSessão 10 Códigos Cíclicos
Sessão 10 Códigos CíclicosPedro De Almeida
 
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canalSessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canalPedro De Almeida
 
Sessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocosSessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocosPedro De Almeida
 
Sessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e EntropiasSessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e EntropiasPedro De Almeida
 
Cripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de SegurançaCripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de SegurançaPedro De Almeida
 
Avaliação económica de projectos
Avaliação económica de projectosAvaliação económica de projectos
Avaliação económica de projectosPedro De Almeida
 
Workflows, diagramas e classes de Analise. Sistemas de Informação
Workflows, diagramas e classes de Analise. Sistemas de InformaçãoWorkflows, diagramas e classes de Analise. Sistemas de Informação
Workflows, diagramas e classes de Analise. Sistemas de InformaçãoPedro De Almeida
 
Economia: Elementos Básicos, Oferta e Procura
Economia: Elementos Básicos, Oferta e ProcuraEconomia: Elementos Básicos, Oferta e Procura
Economia: Elementos Básicos, Oferta e ProcuraPedro De Almeida
 
Economia mercados governo questões
Economia mercados governo questõesEconomia mercados governo questões
Economia mercados governo questõesPedro De Almeida
 

Plus de Pedro De Almeida (20)

APM Model in .NET - PT-pt
APM Model in .NET - PT-ptAPM Model in .NET - PT-pt
APM Model in .NET - PT-pt
 
Java memory model primary ref. - faq
Java memory model   primary ref. - faqJava memory model   primary ref. - faq
Java memory model primary ref. - faq
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
 
IP Multicast Routing
IP Multicast RoutingIP Multicast Routing
IP Multicast Routing
 
XSD Incomplete Overview Draft
XSD Incomplete Overview DraftXSD Incomplete Overview Draft
XSD Incomplete Overview Draft
 
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
 
Validation of a credit card number
Validation of a credit card numberValidation of a credit card number
Validation of a credit card number
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Ficheiros em JAVA
Ficheiros em JAVAFicheiros em JAVA
Ficheiros em JAVA
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
 
Sessão 10 Códigos Cíclicos
Sessão 10 Códigos CíclicosSessão 10 Códigos Cíclicos
Sessão 10 Códigos Cíclicos
 
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canalSessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
 
Sessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocosSessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocos
 
Sessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e EntropiasSessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e Entropias
 
Cripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de SegurançaCripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de Segurança
 
Basic java tutorial
Basic java tutorialBasic java tutorial
Basic java tutorial
 
Avaliação económica de projectos
Avaliação económica de projectosAvaliação económica de projectos
Avaliação económica de projectos
 
Workflows, diagramas e classes de Analise. Sistemas de Informação
Workflows, diagramas e classes de Analise. Sistemas de InformaçãoWorkflows, diagramas e classes de Analise. Sistemas de Informação
Workflows, diagramas e classes de Analise. Sistemas de Informação
 
Economia: Elementos Básicos, Oferta e Procura
Economia: Elementos Básicos, Oferta e ProcuraEconomia: Elementos Básicos, Oferta e Procura
Economia: Elementos Básicos, Oferta e Procura
 
Economia mercados governo questões
Economia mercados governo questõesEconomia mercados governo questões
Economia mercados governo questões
 

LZ77 - Algoritmo da “janela deslizante

  • 1. Sessão nº8 Codificação de Lempel-Ziv CCISEL 99 Teoria Matemática da Comunicação 8-1 Criptografia Computacional Máquina para gerar sequências de símbolos shift register L<>0 "c" x -n ... x -p ... x -k ... x -2 x -1 y L=0 sn s p s n s 2 s 1 p Instruções possíveis para a máquina: ( L, p, c ) se L > 0 (0,c) se L = 0 • p informa a máquina onde posicionar o ponteiro • L indica o número de clocks que a máquina deve receber com o ponteiro posicionado • c é um elemento do alfabeto CCISEL 99 Teoria Matemática da Comunicação 8-2 Criptografia Computacional 1
  • 2. LZ77 - Algoritmo da “janela deslizante” dicionário lookahead buffer saída de símbolos entrada de símbolos ... ... ... ... 1 N-F N-F+1 N "janela deslizante" • N é a dimensão da janela deslizante • N-F é a dimensão do dicionário que contem os símbolos já codificados • F é a dimensão do lookahead buffer que contem os símbolos por codificar • N e F são os parâmetros que caracterizam este algoritmo CCISEL 99 Teoria Matemática da Comunicação 8-3 Criptografia Computacional Algoritmo LZ77 - a codificação • Consideremos uma fonte de símbolos pertencentes ao alfabeto X que “alimenta” o lookahead buffer • Pesquisar sobre os primeiros N-F símbolos (dicionário) a maior subfrase contida na “janela deslizante” que coincide com a frase ou subfrase contida no lookahead buffer. • Codificar o resultado da pesquisa na forma (L, p, x) - L é a dimensão da maior subfrase, L ∈ [0, F] - p é a o ponteiro para a subfrase encontrada, p ∈ [1, N-F] - x é a o primeiro símbolo do lookahead buffer que não coincide com a subfrase encontrada, x ∈ X • Descodificação: é simples e rápida (não requer a pesquisa). CCISEL 99 Teoria Matemática da Comunicação 8-4 Criptografia Computacional 2
  • 3. Factores determinantes nas variantes do LZ77 (compromisso entre a memória, o tempo e a eficiência de compressão) • tamanho do dicionário; é fixo (ou não), ficando limitado (ou não) até que ponto da janela o ponteiro pode referenciar – dimensão em bits do ponteiro versus tempo e eficácia de compressão • tipo de parsing; dentro dos limites da janela de texto considerada, determina qual das subfrases é referenciada pelo ponteiro – escolha da subfrase sem restrições de tempo e de memória (solução óptima) – escolha limitada a um conjunto de frases escolhidas de acordo com uma heurística (solução subóptima) • greedy parsing: mais comum e mais prático • non-greedy parsing: também permite bons resultados CCISEL 99 Teoria Matemática da Comunicação 8-5 Criptografia Computacional Estratégias de parsing: um problema • mensagem: wooloomooloo • dicionário: loo, loom, loomooloo, moo, ooloo, oom,oomoo, woo, wool • resultados possíveis do parsing da mensagem: – woo-loo-moo-loo – woo-loom-ooloo – woo-loomooloo – wool-oom-ooloo – wool-oomoo-loo CCISEL 99 Teoria Matemática da Comunicação 8-6 Criptografia Computacional 3
  • 4. Estrutura do codificador/descodificador LZSS Codificador LZSS dicionário lookahead buffer Fonte Símbolos já codificados Símbolos por codificar Codif. Pesquisa Códigos de símbolos (sequência de bits) Árvore auxiliar de pesquisa Descodificador LZSS dicionário Símbolos já descodificados Símbolos por descodificar (sequência de bits) Descodif. Símbolo descodificado Destino • introdução da árvore auxiliar de pesquisa • palavras de códigos do tipo (L, p) • número de bits (L, p) =  log2 (F) +  log2(N-F) + 1 CCISEL 99 Teoria Matemática da Comunicação 8-7 Criptografia Computacional Diagrama de blocos do codificador LZHUF códigos de símbolos símbolos por codificar (sequência de bits) Codif. Codif. Huffman LZSS • estrutura básica idêntica ao codificador LZSS • utiliza-se codificação de Huffman na representação dos ponteiros p, da dimensão das subfrases L e dos símbolos x - modelo adaptativo de ordem 0 - modelo estático de ordem -1, para os bits de maior peso dos ponteiros (tabela com valores pré-definidos ou tabela de look up) CCISEL 99 Teoria Matemática da Comunicação 8-8 Criptografia Computacional 4
  • 5. Parametrizações do algoritmo LZHUF LZHUF “Calgary corpus” p L threshold Valor médio da eficácia de compressão [bits/byte] [bit] [bit] [byte] 6 12 2 3,132 5 12 2 3,160 4 12 1 3,382 6 11 2 3,323 5 11 1 3,514 4 11 1 3,588 6 10 1 3,778 5 10 1 3,786 4 10 1 3,848 CCISEL 99 Teoria Matemática da Comunicação 8-9 Criptografia Computacional Algoritmo de Zif e Lempel ‘78 - LZ78 CCISEL 99 Teoria Matemática da Comunicação 8 - 10 Criptografia Computacional 5
  • 6. Conjuntos de ficheiros para teste - exemplo Nome do ficheiro Dimensão Nome do ficheiro Dimensão [byte] [byte] ETP94.ABS 186158 ETP94.HEX 530334 ETP94TA.ABS 186295 ETP94TA.HEX 530708 POSGASOL.ABS 193739 POSGASOL.HEX 552008 POSSHELL.ABS 181305 POSSHELL.HEX 516781 POSSIMPL.ABS 175260 POSSIMPL.HEX 499533 POSVSHEL.ABS 199779 POSVSHEL.HEX 569275 • Conjunto “ProgAbs” representativo • Conjunto “ProgHex” representativo de programas reais em ficheiros de programas reais em ficheiros objecto no formato absoluto, para os objecto no formato hexadecimal, para terminais TP90 e TP92 os terminais TP90 e TP92 CCISEL 99 Teoria Matemática da Comunicação 8 - 11 Criptografia Computacional Amostra dum ficheiro com programa no formato objecto absoluto hexadecimal da Intel :02000002C0003C :10000000FAB840008ED0BC0001B851008ED8BAA812 :10001000FFB8BCC0EFBAA6FFB8FC01EFBAA4FFB8A6 :100020003D00EFBA8001B80000EFBA0002B8E0006E :10003000EF33C08EC08BF8268A0DF6D126880D26A8 :100040008A05C6066B5CFF2AC17405C6066B5C0098 :100050001E8EDFB900408B05F7D089053B05750D75 :100000008BD88BC2F7E18BF08BC7F7E303F08BC182 :05001000F7E303D6CB6D :04000003FFFF0000FB :00000001FF CCISEL 99 Teoria Matemática da Comunicação 8 - 12 Criptografia Computacional 6
  • 7. Amostra dum ficheiro com programa no formato objecto absoluto da Intel 05 30 30 30 30 30 30 E4 84 1C 00 A8 C1 0B 43 4F 4E 54 41 20 41 20 43 52 45 44 49 54 41 52 20 20 20 20 20 20 20 20 A8 84 16 00 AA C1 03 20 41 43 54 49 56 41 52 20 50 4F 52 54 41 54 49 4C 20 1F 84 C8 01 D5 C0 0E 1E 0F D5 C0 7C 0F D5 C0 52 10 D5 C0 B0 10 D5 C0 44 11 D5 C0 1A 12 D5 C0 58 12 D5 C0 8A 12 D5 C0 4A 13 D5 C0 A8 13 D5 C0 FC 13 D5 C0 12 14 D5 C0 54 14 D5 C0 96 14 D5 C0 E8 14 D5 C0 58 15 D5 C0 E0 15 D5 C0 40 16 D5 C0 82 16 D5 C0 30 17 D5 C0 90 17 D5 C0 C2 17 D5 C0 7E 18 D5 C0 9A 18 D5 C0 52 19 D5 C0 62 1A D5 C0 C6 1A D5 C0 82 1B D5 C0 2A 24 D5 C0 BE 24 D5 C0 D8 24 CCISEL 99 Teoria Matemática da Comunicação 8 - 13 Criptografia Computacional Conjunto normalizado para testes - Calgary corpus Nome do ficheiro Dimensão original [byte] Este conjunto foi preparado na Universidade BIB 111261 de Calgary (Canadá); pretende ser um BOOK1 768771 conjunto de ficheiros normalizados para ser BOOK2 610856 utilizado na investigação em compressão de GEO 102400 dados. NEWS 377109 OBJ1 21504 É constituído por 10 ficheiros de texto, 1 OBJ2 246814 ficheiro com dados de geofísica, 2 ficheiros PAPER1 53161 objecto e 1 ficheiro com o bitmap duma PAPER2 82199 imagem a preto e branco. Os de texto são PIC 513216 constituídos por: 1 bibliografia, 1 livro de PROGC 39611 ficção e outro não de ficção, 1 registo de PROGL 71646 notícias, 2 artigos científicos, um programa escrito na linguagem “C”, 1 programa escrito PROGP 49379 na linguagem “Lisp”, 1 programa escrito na TRANS 93695 linguagem “Pascal” e 1 transcrição duma Valor médio 224402 sessão num terminal. CCISEL 99 Teoria Matemática da Comunicação 8 - 14 Criptografia Computacional 7
  • 8. Comparação de métodos de compressão - exemplo • algoritmo de Huffman semi-adaptativo com modelo de ordem 0 (HUFF); • algoritmo de Huffman adaptativo com modelo de ordem 0 (AHUFF); • codificação Aritmética semi-adaptativa com modelo de ordem 0 (ARITH); • codificação Aritmética adaptativo com modelo de ordem 1 (ARITH1); • variante do algoritmo LZ77 (Sliding Window) de Lempel-Ziv (LZSS); • variante do algoritmo LZSS com codificação de Huffman estática (e modelo de ordem 0) da saída (LZHUF); • variante do algoritmo LZSS com codificação Aritmética da saída (LZARI); • variante do algoritmo LZ78 de Lempel-Ziv (LZW12). CCISEL 99 Teoria Matemática da Comunicação 8 - 15 Criptografia Computacional Programas de compressão* (didácticos) Método Descrição HUFF Algoritmo de Huffman com modelo semi-adaptativo de ordem 0 AHUFF Algoritmo de Huffman com modelo adaptativo de ordem 0 ARITH Codificação aritmética com modelo semi-adaptativo de ordem 0 ARITH1 Codificação aritmética com modelo adaptativo de ordem 1 LZSS Codificação de Lempel-Ziv baseada no algoritmo LZ77, variante proposta por Storer e Szymanski em 1982, com os parâmetros N = 4096 (número máximo de caracteres na janela deslizante) e F = 16 (dimensão máxima da subfrase) LZW12 Codificação de Lempel-Ziv baseada no algoritmo LZ78, variante proposta por Welch em 1984, com o parâmetro M = 4096 (número máximo de frases no dicionário) *implementações originais de Mark Nelson CCISEL 99 Teoria Matemática da Comunicação 8 - 16 Criptografia Computacional 8
  • 9. Análise de recursos e resultados dos testes- exemplo Recursos para a Resultados para o Resultados para o descompressão “ProgAbs” “ProgHex” Método Dimensão Dimensão Valor Valor Valor Valor do código dos dados médio da médio do médio da médio do eficácia de tempo de eficácia tempo de comp. descomp. de comp. descomp. [byte] [byte] [bits/byte] [s] [bits/byte] [s] HUFF 969 4365 6,92 2,00 3,87 2,17 AHUFF 1788 4664 6,80 2,50 3,86 3,33 ARITH 1049 682 6,89 3,33 3,83 9,17 ARITH1 997 136262 5,28 10,50 3,26 27,33 LZSS 302 4118 4,40 1,33 3,08 2,17 LZW12 380 30154 7,79 1,33 3,57 2,00 LZHUF 1225 9109 3,85 1,17 2,57 1,83 LZARI 1538 14918 3,84 1,83 2,56 3,33 CCISEL 99 Teoria Matemática da Comunicação 8 - 17 Criptografia Computacional Medidas de eficácia de compressão • Relacionam a dimensão do texto com compressão β e a dimensão original do texto α. • A razão de compressão é uma medida onde se consideram sempre blocos com 8 bit ou 1 byte do texto original, definida por razão de compressão = 8 × (β / α) [bit/byte] • A percentagem removida é outra medida usada, definida por percentagem removida = 100 × (1 - β / α) [%] CCISEL 99 Teoria Matemática da Comunicação 8 - 18 Criptografia Computacional 9
  • 10. Eficiência na compressão do Calgary Corpus 8 7,5 7 6,5 6 5,5 5 bits/char 4,5 4 3,5 3 2,5 2 1,5 1 0,5 0 H U FF AH U FF AR IT H AR IT H 1 LZSS LZH U F LZAR I LZW 12 M ethod Abs H ex C algary C orpus CCISEL 99 Teoria Matemática da Comunicação 8 - 19 Criptografia Computacional Recomendações para evitar a redundância Com vista à maximização da entropia da fonte, nas mensagens a cifrar deve-se evitar: • sinais de pontuação • acentos • mensagens do tipo “responda qual o número de mísseis?” • a mensagem deve ser o mais curto possível CCISEL 99 Teoria Matemática da Comunicação 8 - 20 Criptografia Computacional 10