SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
Lempel – Ziv - Welch
Pra quê
compactar???
Vamos viajar...
Primeiros passos...
• Definir o lugar;
• Juntar a grana;
.
.
.
.
.
• Arrumar as malas...
Vamos viajar...
Quantas malas você
leva quando vai
viajar????
Nem sempre dá
para levar tudo
que você imagina!!
Por quê???
Espaço que você
imagina para as
suas malas...
Realidade...
Espaço custa caro!!!
Pra quê
compactar???
É preciso otimizar o
uso do espaço da
melhor forma
possível!!
Como ter tudo o que precisamos sem ocupar muito
espaço??
Compactando!!!
Algoritmos de Compressão
› Um minuto de um vídeo HD pode
ocupar mais de 1 GB.
Como colocar duas horas de filme
em um disco blu-ray de 25 GB
apenas?
Algoritmos Lempel-Ziv-Welch (LZW)
› O algoritmo Lempel-Ziv-Welch é um dos
muitos algoritmos utilizados para comprimir
arquivos.
› É conhecido como um algoritmo sem
perdas, ou seja, durante a compressão
dados não são perdidos.
› Foi criado por Abraham Lempel, Jacob Ziv e
Terry Welch. Foi publicado por Welch em
1984 como um refinamento do algoritmo
LZ78 publicado por Lempel e Ziv, em 1978.
Algoritmo Lempel-Ziv-Welch
› Algoritmo LZW utiliza uma tabela
de strings.
› Em poucas palavras, a
compressão LZW substitui
sequências de caracteres por
códigos individuais.
› Os códigos 0-255 na tabela de
strings representam bytes
individuais do arquivo de entrada e
os códigos de 256 a 4.095 são
usados para representar as
sequências de bytes.
O que é compressão de
dados???
Compressão
› É baseada na construção de um dicionário de dados (grupo de um ou mais
caracteres) a partir do fluxo de entrada;
› Os padrões dos dados são identificados e registrados no dicionário;
› Quando é iniciado o algoritmo, verifica-se se o caractere já está inserido no
dicionário;
Pseudocódigo da Compressão
› As convenções adotadas são:
– raiz caracter individual
– string uma sequência de um ou mais caracteres
– palavra código valor associado a uma string
– dicionário tabela que relaciona palavras código e strings
– P string que representa um prefixo
– C caracter
– cW palavra código
– pW palavra código que representa um prefixo
– X <= Y string X assume o valor da string Y
– X+Y concatenação das string X e Y
– string(w) string correspondente à palavra código w
Pseudocódigo da Compressão
1. No início o dicionário contém todas as raízes possíveis e P é vazio;
2. C <= próximo caractere da sequência de entrada;
3. A string P+C existe no dicionário ?
a. se sim,
i. P <= P+C;
b. se não,
i. coloque a palavra código correspondente a P na seqüência
codificada;
ii. adicione a string P+C ao dicionário;
iii. P <= C;
4. Existem mais caracteres na seqüência de entrada ?
a. se sim,
i. volte ao passo 2;
b. se não,
ii. coloque a palavra código correspondente a P na seqüência
codificada;
iii. FIM.
Exemplo de Compressão
Exemplo de Compressão
Descompressão
› Na descompressão cada código é lido e comparado
com a tabela de códigos para fornecer a tradução.
› O primeiro passo é reconstruir a tabela de string da
mesma maneira como foi construída durante a
codificação;
› Desta forma, o decodificador baseia-se em uma
tabela, que é idêntica a utilizada pelo codificador, e
usa-a para decodificar os valores de entrada
subsequentes.
Pseudocódigo da Descompressão
Exemplo de Descompressão
Exemplo de Descompressão
Índice Dicionário
1 A
2 B
3 W
1º Passo: A tabela é
inicializada com todos os
valores possíveis de
caracteres.
Para o nosso exemplo serão
necessários apenas exibir os
caracteres que nos
interessa.
Exemplo de Descompressão
Índice Dicionário
1 A
2 B
3 W
2º Passo:
pw = string.pw =
cw = 3 string.cw = w
A string.cw consta na tabela;
Imprime string.cw.
pw = cw => pw = 3
Console:
W
Exemplo de Descompressão
Índice Dicionário
1 A
2 B
3 W
3º Passo:
pw = 3 string.pw = w
cw = 1 string.cw = a
A string.cw consta na tabela;
Imprime string.cw.
p = w p+c = wa
c = a
Adiciona p+c na tabela;
pw = cw => pw = 3
Console:
W A
Exemplo de Descompressão
Índice Dicionário
1 A
2 B
3 W
4 wa
4º Passo:
pw = 1 string.pw = a
cw = 2 string.cw = b
A string.cw consta na tabela;
Imprime string.cw.
p = a p+c = ab
c = b
pw = cw => pw = 2
Console:
W A B
Exemplo de Descompressão
Índice Dicionário
1 A
2 B
3 W
4 wa
5 ab
5º Passo:
pw = 2 string.pw = b
cw = 2 string.cw = b
A string.cw consta na tabela;
Imprime string.cw.
p = b p+c = bb
c = b
pw = cw => pw = 2
Console:
W A B B
Exemplo de Descompressão
Índice Dicionário
1 A
2 B
3 W
4 wa
5 ab
6 bb
6º Passo:
pw = 2 string.pw = b
cw = 1 string.cw = a
A string.cw consta na tabela;
Imprime string.cw.
p = b p+c = ba
c = a
pw = cw => pw = 1
Console:
W A B B A
Exemplo de Descompressão
Índice Dicionário
1 A
2 B
3 W
4 wa
5 ab
6 bb
7 ba
7º Passo:
pw = 1 string.pw = a
cw = 4 string.cw = wa
A string.cw consta na tabela;
Imprime string.cw.
p = a p+c = aw
c = w
pw = cw => pw = 4
Console:
W A B B A W A
Exemplo de Descompressão
Índice Dicionário
1 A
2 B
3 W
4 wa
5 ab
6 bb
7 ba
8 aw
8º Passo:
pw = 4 string.pw = wa
cw = 6 string.cw = bb
A string.cw consta na tabela;
Imprime string.cw.
p = wa p+c = wab
c = b
pw = cw => pw = 6
Console:
W A B B A W A B B
Exemplo de Descompressão
Índice Dicionário
1 A
2 B
3 W
4 wa
5 ab
6 bb
7 ba
8 aw
9 wab
10 bba
9º Passo:
pw = 6 string.pw = bb
cw = 1 string.cw = a
A string.cw consta na tabela;
Imprime string.cw.
p = bb p+c = bba
c = a
pw = cw => pw = 1
Console:
O algoritmo terminou!
W A B B A W A B B A
Vantagens
› É muito eficaz na compressão de
sequências que apresentam algum tipo de
repetição nos dados de entrada;
› È simples de entender;
› Rápida execução;
› Não necessita de nenhuma informação a
priori sobre os dados de entrada;
› Pode comprimir dados em apenas um
passo;
› Faz a compressão e descompressão dos
arquivos.
Desvantagens
› Não comprime bem sequências pequenas;
› Não comprime bem sequências com caracteres muito
diversos;
› Arquivos longos degradam a taxa de compressão
conforme o arquivo é lido.
› A razão para isso é simples. Uma vez que a
tabela de strings é de tamanho finito, depois
que certo número de inserções foram feitas,
strings não mais podem ser adicionadas.
Considerações Finais
› Este método de compressão sem perdas é de baixa complexidade,
pelo fato de o LZW usar como seu principal foco a criação de
dicionários com comprimento fixo. Com isso, o desempenho
proporcionado pela compressão e descompressão é rápida.
› Comparando-o com algoritmos semelhantes, anteriores ao mesmo
(LZ77 e LZ78), é um dos algoritmos mais eficaz na redução do
tamanho do fluxo de dados comprimidos, obtendo uma maior
rapidez de execução.
Referências Bibliográficas
[1] WIKIPÉDIA. Disponível em:<
http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch > Acesso em 25 de maio
de 2015.
[2] The Scientist and Engineer’s Guide to Digital Sign Processing. Data 27: Data Compression – LZW
Compression. Disponível em: < http://www.dspguide.com/ch27/5.htm > Acesso em: 28 de maio de
2015.
[3] YOUTUBE. Lempel-Ziv-Welch Compression Algoritm – Tutorial. Disponível em:
<https://www.youtube.com/watch?v=j2HSd3HCpDs> Acesso em 27 de maio de 2015.
[4] Terry Welch, "A Technique for High-Performance Data Compression", Computer, June 19
[5] Mark Nelson. Programming mostly. Disponível em: < http://marknelson.us/1989/10/01/lzw-
data-compression/ > Acesso em: 27 de maio de 2015.
[6] MITOPENCOURSEWARE.Massachusetts Institute of Technology. Unit Two: Compression, Lecture
One. Disponível em: >http://ocw.mit.edu/courses/electrical-engineering-and-computer-
science/6-050j-information-and-entropy-spring-2008/videos-homework-and-readings/unit-2-
lecture-1/ > Acesso em 28 de maio de 2015.
[7] Implementações do LZW. Disponível em: <http://rosettacode.org/wiki/LZW_compression>
Acesso em 27 de maio de 2015.

Weitere ähnliche Inhalte

Was ist angesagt?

Design Thinking - Metodologia para Inovação
Design Thinking - Metodologia para InovaçãoDesign Thinking - Metodologia para Inovação
Design Thinking - Metodologia para InovaçãoPaulo Oliveira
 
Modelo - Termo de abertura de projeto
 Modelo  - Termo de abertura de projeto   Modelo  - Termo de abertura de projeto
Modelo - Termo de abertura de projeto Aragon Vieira
 
Aula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem CAula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem Cprofjr
 
Banco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosBanco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosNatanael Simões
 
Aula 02 - JavaScript: Arrays
Aula 02 - JavaScript: ArraysAula 02 - JavaScript: Arrays
Aula 02 - JavaScript: ArraysJessyka Lage
 
Estratégia de Negócios
Estratégia de NegóciosEstratégia de Negócios
Estratégia de NegóciosWagner Gonsalez
 
Gerenciamento de projetos apostila completa
Gerenciamento de projetos   apostila completaGerenciamento de projetos   apostila completa
Gerenciamento de projetos apostila completaPaulo Junior
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
Pesquisa de Campo e a Entrevista Semi-Estruturada
Pesquisa de Campo e a Entrevista Semi-EstruturadaPesquisa de Campo e a Entrevista Semi-Estruturada
Pesquisa de Campo e a Entrevista Semi-EstruturadaEdu Agni
 

Was ist angesagt? (20)

Design Thinking - Metodologia para Inovação
Design Thinking - Metodologia para InovaçãoDesign Thinking - Metodologia para Inovação
Design Thinking - Metodologia para Inovação
 
Modelo - Termo de abertura de projeto
 Modelo  - Termo de abertura de projeto   Modelo  - Termo de abertura de projeto
Modelo - Termo de abertura de projeto
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Aula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem CAula sobre matrizes - Linguagem C
Aula sobre matrizes - Linguagem C
 
Banco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosBanco de Dados - Tipos de Dados
Banco de Dados - Tipos de Dados
 
Aula - Metodologias Ágeis
Aula - Metodologias ÁgeisAula - Metodologias Ágeis
Aula - Metodologias Ágeis
 
Aula 02 - JavaScript: Arrays
Aula 02 - JavaScript: ArraysAula 02 - JavaScript: Arrays
Aula 02 - JavaScript: Arrays
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
Estratégia de Negócios
Estratégia de NegóciosEstratégia de Negócios
Estratégia de Negócios
 
Gerenciamento de projetos apostila completa
Gerenciamento de projetos   apostila completaGerenciamento de projetos   apostila completa
Gerenciamento de projetos apostila completa
 
Ordenação
OrdenaçãoOrdenação
Ordenação
 
Gerenciamento do Escopo em Projetos
Gerenciamento do Escopo em ProjetosGerenciamento do Escopo em Projetos
Gerenciamento do Escopo em Projetos
 
Guia do usuário - ProjectLibre 1.5
Guia do usuário - ProjectLibre 1.5Guia do usuário - ProjectLibre 1.5
Guia do usuário - ProjectLibre 1.5
 
Aula 4
Aula 4Aula 4
Aula 4
 
Tela de Modelo de Negócio - Definições e Exemplos
Tela de Modelo de Negócio - Definições e ExemplosTela de Modelo de Negócio - Definições e Exemplos
Tela de Modelo de Negócio - Definições e Exemplos
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Pesquisa de Campo e a Entrevista Semi-Estruturada
Pesquisa de Campo e a Entrevista Semi-EstruturadaPesquisa de Campo e a Entrevista Semi-Estruturada
Pesquisa de Campo e a Entrevista Semi-Estruturada
 
Demonstrações
DemonstraçõesDemonstrações
Demonstrações
 
Gestão de Projetos
Gestão de ProjetosGestão de Projetos
Gestão de Projetos
 
Introdução à Pesquisa de Mercado
Introdução à Pesquisa de MercadoIntrodução à Pesquisa de Mercado
Introdução à Pesquisa de Mercado
 

Ähnlich wie LZW - Compressão e Descompressão

Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power toolsArmando Reis
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPMarcos Castro
 
Aula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdfAula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdfvictorlopes714651
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programaçãoGustavo Nazário
 
Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7Pessoal
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 
Processar fluxos de textos usando filtros
Processar fluxos de textos usando filtrosProcessar fluxos de textos usando filtros
Processar fluxos de textos usando filtrosSoftD Abreu
 
Linguagem Prolog - Antonio Rufino
Linguagem Prolog - Antonio RufinoLinguagem Prolog - Antonio Rufino
Linguagem Prolog - Antonio RufinoAntonio Rufino
 
Manual comandos
Manual comandosManual comandos
Manual comandosPaulo Rijo
 
Aula 9 propriedadedas linguagensregulares
Aula 9   propriedadedas linguagensregularesAula 9   propriedadedas linguagensregulares
Aula 9 propriedadedas linguagensregulareswab030
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonguestac3de
 
Aula 6 1 linguagem pascal-parte_1
Aula 6   1 linguagem pascal-parte_1Aula 6   1 linguagem pascal-parte_1
Aula 6 1 linguagem pascal-parte_1Duane Bertoldo
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webAlvaro Oliveira
 
Java Comunicação Serial
Java Comunicação SerialJava Comunicação Serial
Java Comunicação SerialAndrei Bastos
 

Ähnlich wie LZW - Compressão e Descompressão (20)

Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power tools
 
Pipeline
PipelinePipeline
Pipeline
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
Algoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMPAlgoritmo de Knuth-Morris-Pratt - KMP
Algoritmo de Knuth-Morris-Pratt - KMP
 
Aula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdfAula 14 - Entrada e Saida em linguagem C.pdf
Aula 14 - Entrada e Saida em linguagem C.pdf
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
 
Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Processar fluxos de textos usando filtros
Processar fluxos de textos usando filtrosProcessar fluxos de textos usando filtros
Processar fluxos de textos usando filtros
 
Msdos vol2
Msdos vol2Msdos vol2
Msdos vol2
 
Apostila clic2
Apostila clic2Apostila clic2
Apostila clic2
 
Linguagem Prolog - Antonio Rufino
Linguagem Prolog - Antonio RufinoLinguagem Prolog - Antonio Rufino
Linguagem Prolog - Antonio Rufino
 
Manual comandos
Manual comandosManual comandos
Manual comandos
 
Aula 9 propriedadedas linguagensregulares
Aula 9   propriedadedas linguagensregularesAula 9   propriedadedas linguagensregulares
Aula 9 propriedadedas linguagensregulares
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Python for zombies (very basic level)
Python for zombies (very basic level)Python for zombies (very basic level)
Python for zombies (very basic level)
 
Aula 6 1 linguagem pascal-parte_1
Aula 6   1 linguagem pascal-parte_1Aula 6   1 linguagem pascal-parte_1
Aula 6 1 linguagem pascal-parte_1
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações web
 
Java Comunicação Serial
Java Comunicação SerialJava Comunicação Serial
Java Comunicação Serial
 

Mehr von Mayara Mônica

Pronouns and Verb To Be
Pronouns and Verb To BePronouns and Verb To Be
Pronouns and Verb To BeMayara Mônica
 
Aprendendo o Alfabeto em Inglês
Aprendendo o Alfabeto em InglêsAprendendo o Alfabeto em Inglês
Aprendendo o Alfabeto em InglêsMayara Mônica
 
Saúde e Nutrição - Fibras Alimentares
Saúde e Nutrição - Fibras AlimentaresSaúde e Nutrição - Fibras Alimentares
Saúde e Nutrição - Fibras AlimentaresMayara Mônica
 
Biofísica do Sistema Respiratório
Biofísica do Sistema RespiratórioBiofísica do Sistema Respiratório
Biofísica do Sistema RespiratórioMayara Mônica
 
Órgãos em Microchips
Órgãos em MicrochipsÓrgãos em Microchips
Órgãos em MicrochipsMayara Mônica
 
Escolas da Psicologia e Bases Biológicas do Comportamento
Escolas da Psicologia e Bases Biológicas do ComportamentoEscolas da Psicologia e Bases Biológicas do Comportamento
Escolas da Psicologia e Bases Biológicas do ComportamentoMayara Mônica
 
Bioquímica Articular, Articulações e Pele
Bioquímica Articular, Articulações e PeleBioquímica Articular, Articulações e Pele
Bioquímica Articular, Articulações e PeleMayara Mônica
 
Cartilha Educativa sobre Bioética
Cartilha Educativa sobre BioéticaCartilha Educativa sobre Bioética
Cartilha Educativa sobre BioéticaMayara Mônica
 
Estudo Sobre o Músculo Liso
Estudo Sobre o Músculo LisoEstudo Sobre o Músculo Liso
Estudo Sobre o Músculo LisoMayara Mônica
 
Questionário Sobre Teste de Software
Questionário Sobre Teste de SoftwareQuestionário Sobre Teste de Software
Questionário Sobre Teste de SoftwareMayara Mônica
 
Questions About Software Testing
Questions About Software TestingQuestions About Software Testing
Questions About Software TestingMayara Mônica
 
Modelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário EletrônicoModelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário EletrônicoMayara Mônica
 
Queues and Hook Functions
Queues and Hook FunctionsQueues and Hook Functions
Queues and Hook FunctionsMayara Mônica
 

Mehr von Mayara Mônica (20)

Pronouns and Verb To Be
Pronouns and Verb To BePronouns and Verb To Be
Pronouns and Verb To Be
 
Aprendendo o Alfabeto em Inglês
Aprendendo o Alfabeto em InglêsAprendendo o Alfabeto em Inglês
Aprendendo o Alfabeto em Inglês
 
Saúde e Nutrição - Fibras Alimentares
Saúde e Nutrição - Fibras AlimentaresSaúde e Nutrição - Fibras Alimentares
Saúde e Nutrição - Fibras Alimentares
 
Biofísica do Sistema Respiratório
Biofísica do Sistema RespiratórioBiofísica do Sistema Respiratório
Biofísica do Sistema Respiratório
 
Tecnologias na Saúde
Tecnologias na SaúdeTecnologias na Saúde
Tecnologias na Saúde
 
Órgãos em Microchips
Órgãos em MicrochipsÓrgãos em Microchips
Órgãos em Microchips
 
Escolas da Psicologia e Bases Biológicas do Comportamento
Escolas da Psicologia e Bases Biológicas do ComportamentoEscolas da Psicologia e Bases Biológicas do Comportamento
Escolas da Psicologia e Bases Biológicas do Comportamento
 
Psicologia na Saúde
Psicologia na SaúdePsicologia na Saúde
Psicologia na Saúde
 
Movimento Body Art
Movimento Body ArtMovimento Body Art
Movimento Body Art
 
Bioquímica Articular, Articulações e Pele
Bioquímica Articular, Articulações e PeleBioquímica Articular, Articulações e Pele
Bioquímica Articular, Articulações e Pele
 
Cartilha Educativa sobre Bioética
Cartilha Educativa sobre BioéticaCartilha Educativa sobre Bioética
Cartilha Educativa sobre Bioética
 
Estudo Sobre o Músculo Liso
Estudo Sobre o Músculo LisoEstudo Sobre o Músculo Liso
Estudo Sobre o Músculo Liso
 
Tipologia Textual
Tipologia TextualTipologia Textual
Tipologia Textual
 
Comando Traceroute
Comando TracerouteComando Traceroute
Comando Traceroute
 
MaDKit
MaDKitMaDKit
MaDKit
 
UPPAAL
UPPAALUPPAAL
UPPAAL
 
Questionário Sobre Teste de Software
Questionário Sobre Teste de SoftwareQuestionário Sobre Teste de Software
Questionário Sobre Teste de Software
 
Questions About Software Testing
Questions About Software TestingQuestions About Software Testing
Questions About Software Testing
 
Modelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário EletrônicoModelo de Interface para um Prontuário Eletrônico
Modelo de Interface para um Prontuário Eletrônico
 
Queues and Hook Functions
Queues and Hook FunctionsQueues and Hook Functions
Queues and Hook Functions
 

Kürzlich hochgeladen

CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinhaMary Alvarenga
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxLuizHenriquedeAlmeid6
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaJúlio Sandes
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADOcarolinacespedes23
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.keislayyovera123
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxleandropereira983288
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 

Kürzlich hochgeladen (20)

Em tempo de Quaresma .
Em tempo de Quaresma                            .Em tempo de Quaresma                            .
Em tempo de Quaresma .
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
Bullying - Texto e cruzadinha
Bullying        -     Texto e cruzadinhaBullying        -     Texto e cruzadinha
Bullying - Texto e cruzadinha
 
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptxSlides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
Slides Lição 03, Central Gospel, O Arrebatamento, 1Tr24.pptx
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma AntigaANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
ANTIGUIDADE CLÁSSICA - Grécia e Roma Antiga
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
activIDADES CUENTO  lobo esta  CUENTO CUARTO GRADOactivIDADES CUENTO  lobo esta  CUENTO CUARTO GRADO
activIDADES CUENTO lobo esta CUENTO CUARTO GRADO
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.
 
Pedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptxPedologia- Geografia - Geologia - aula_01.pptx
Pedologia- Geografia - Geologia - aula_01.pptx
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 

LZW - Compressão e Descompressão

  • 1. Lempel – Ziv - Welch
  • 3. Vamos viajar... Primeiros passos... • Definir o lugar; • Juntar a grana; . . . . . • Arrumar as malas...
  • 4. Vamos viajar... Quantas malas você leva quando vai viajar????
  • 5. Nem sempre dá para levar tudo que você imagina!!
  • 7. Espaço que você imagina para as suas malas...
  • 10. É preciso otimizar o uso do espaço da melhor forma possível!!
  • 11. Como ter tudo o que precisamos sem ocupar muito espaço??
  • 13. Algoritmos de Compressão › Um minuto de um vídeo HD pode ocupar mais de 1 GB. Como colocar duas horas de filme em um disco blu-ray de 25 GB apenas?
  • 14. Algoritmos Lempel-Ziv-Welch (LZW) › O algoritmo Lempel-Ziv-Welch é um dos muitos algoritmos utilizados para comprimir arquivos. › É conhecido como um algoritmo sem perdas, ou seja, durante a compressão dados não são perdidos. › Foi criado por Abraham Lempel, Jacob Ziv e Terry Welch. Foi publicado por Welch em 1984 como um refinamento do algoritmo LZ78 publicado por Lempel e Ziv, em 1978.
  • 15. Algoritmo Lempel-Ziv-Welch › Algoritmo LZW utiliza uma tabela de strings. › Em poucas palavras, a compressão LZW substitui sequências de caracteres por códigos individuais. › Os códigos 0-255 na tabela de strings representam bytes individuais do arquivo de entrada e os códigos de 256 a 4.095 são usados para representar as sequências de bytes.
  • 16. O que é compressão de dados???
  • 17. Compressão › É baseada na construção de um dicionário de dados (grupo de um ou mais caracteres) a partir do fluxo de entrada; › Os padrões dos dados são identificados e registrados no dicionário; › Quando é iniciado o algoritmo, verifica-se se o caractere já está inserido no dicionário;
  • 18. Pseudocódigo da Compressão › As convenções adotadas são: – raiz caracter individual – string uma sequência de um ou mais caracteres – palavra código valor associado a uma string – dicionário tabela que relaciona palavras código e strings – P string que representa um prefixo – C caracter – cW palavra código – pW palavra código que representa um prefixo – X <= Y string X assume o valor da string Y – X+Y concatenação das string X e Y – string(w) string correspondente à palavra código w
  • 19. Pseudocódigo da Compressão 1. No início o dicionário contém todas as raízes possíveis e P é vazio; 2. C <= próximo caractere da sequência de entrada; 3. A string P+C existe no dicionário ? a. se sim, i. P <= P+C; b. se não, i. coloque a palavra código correspondente a P na seqüência codificada; ii. adicione a string P+C ao dicionário; iii. P <= C; 4. Existem mais caracteres na seqüência de entrada ? a. se sim, i. volte ao passo 2; b. se não, ii. coloque a palavra código correspondente a P na seqüência codificada; iii. FIM.
  • 22. Descompressão › Na descompressão cada código é lido e comparado com a tabela de códigos para fornecer a tradução. › O primeiro passo é reconstruir a tabela de string da mesma maneira como foi construída durante a codificação; › Desta forma, o decodificador baseia-se em uma tabela, que é idêntica a utilizada pelo codificador, e usa-a para decodificar os valores de entrada subsequentes.
  • 25. Exemplo de Descompressão Índice Dicionário 1 A 2 B 3 W 1º Passo: A tabela é inicializada com todos os valores possíveis de caracteres. Para o nosso exemplo serão necessários apenas exibir os caracteres que nos interessa.
  • 26. Exemplo de Descompressão Índice Dicionário 1 A 2 B 3 W 2º Passo: pw = string.pw = cw = 3 string.cw = w A string.cw consta na tabela; Imprime string.cw. pw = cw => pw = 3 Console: W
  • 27. Exemplo de Descompressão Índice Dicionário 1 A 2 B 3 W 3º Passo: pw = 3 string.pw = w cw = 1 string.cw = a A string.cw consta na tabela; Imprime string.cw. p = w p+c = wa c = a Adiciona p+c na tabela; pw = cw => pw = 3 Console: W A
  • 28. Exemplo de Descompressão Índice Dicionário 1 A 2 B 3 W 4 wa 4º Passo: pw = 1 string.pw = a cw = 2 string.cw = b A string.cw consta na tabela; Imprime string.cw. p = a p+c = ab c = b pw = cw => pw = 2 Console: W A B
  • 29. Exemplo de Descompressão Índice Dicionário 1 A 2 B 3 W 4 wa 5 ab 5º Passo: pw = 2 string.pw = b cw = 2 string.cw = b A string.cw consta na tabela; Imprime string.cw. p = b p+c = bb c = b pw = cw => pw = 2 Console: W A B B
  • 30. Exemplo de Descompressão Índice Dicionário 1 A 2 B 3 W 4 wa 5 ab 6 bb 6º Passo: pw = 2 string.pw = b cw = 1 string.cw = a A string.cw consta na tabela; Imprime string.cw. p = b p+c = ba c = a pw = cw => pw = 1 Console: W A B B A
  • 31. Exemplo de Descompressão Índice Dicionário 1 A 2 B 3 W 4 wa 5 ab 6 bb 7 ba 7º Passo: pw = 1 string.pw = a cw = 4 string.cw = wa A string.cw consta na tabela; Imprime string.cw. p = a p+c = aw c = w pw = cw => pw = 4 Console: W A B B A W A
  • 32. Exemplo de Descompressão Índice Dicionário 1 A 2 B 3 W 4 wa 5 ab 6 bb 7 ba 8 aw 8º Passo: pw = 4 string.pw = wa cw = 6 string.cw = bb A string.cw consta na tabela; Imprime string.cw. p = wa p+c = wab c = b pw = cw => pw = 6 Console: W A B B A W A B B
  • 33. Exemplo de Descompressão Índice Dicionário 1 A 2 B 3 W 4 wa 5 ab 6 bb 7 ba 8 aw 9 wab 10 bba 9º Passo: pw = 6 string.pw = bb cw = 1 string.cw = a A string.cw consta na tabela; Imprime string.cw. p = bb p+c = bba c = a pw = cw => pw = 1 Console: O algoritmo terminou! W A B B A W A B B A
  • 34. Vantagens › É muito eficaz na compressão de sequências que apresentam algum tipo de repetição nos dados de entrada; › È simples de entender; › Rápida execução; › Não necessita de nenhuma informação a priori sobre os dados de entrada; › Pode comprimir dados em apenas um passo; › Faz a compressão e descompressão dos arquivos.
  • 35. Desvantagens › Não comprime bem sequências pequenas; › Não comprime bem sequências com caracteres muito diversos; › Arquivos longos degradam a taxa de compressão conforme o arquivo é lido. › A razão para isso é simples. Uma vez que a tabela de strings é de tamanho finito, depois que certo número de inserções foram feitas, strings não mais podem ser adicionadas.
  • 36. Considerações Finais › Este método de compressão sem perdas é de baixa complexidade, pelo fato de o LZW usar como seu principal foco a criação de dicionários com comprimento fixo. Com isso, o desempenho proporcionado pela compressão e descompressão é rápida. › Comparando-o com algoritmos semelhantes, anteriores ao mesmo (LZ77 e LZ78), é um dos algoritmos mais eficaz na redução do tamanho do fluxo de dados comprimidos, obtendo uma maior rapidez de execução.
  • 37. Referências Bibliográficas [1] WIKIPÉDIA. Disponível em:< http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch > Acesso em 25 de maio de 2015. [2] The Scientist and Engineer’s Guide to Digital Sign Processing. Data 27: Data Compression – LZW Compression. Disponível em: < http://www.dspguide.com/ch27/5.htm > Acesso em: 28 de maio de 2015. [3] YOUTUBE. Lempel-Ziv-Welch Compression Algoritm – Tutorial. Disponível em: <https://www.youtube.com/watch?v=j2HSd3HCpDs> Acesso em 27 de maio de 2015. [4] Terry Welch, "A Technique for High-Performance Data Compression", Computer, June 19 [5] Mark Nelson. Programming mostly. Disponível em: < http://marknelson.us/1989/10/01/lzw- data-compression/ > Acesso em: 27 de maio de 2015. [6] MITOPENCOURSEWARE.Massachusetts Institute of Technology. Unit Two: Compression, Lecture One. Disponível em: >http://ocw.mit.edu/courses/electrical-engineering-and-computer- science/6-050j-information-and-entropy-spring-2008/videos-homework-and-readings/unit-2- lecture-1/ > Acesso em 28 de maio de 2015. [7] Implementações do LZW. Disponível em: <http://rosettacode.org/wiki/LZW_compression> Acesso em 27 de maio de 2015.