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?

Matemática Discreta - Parte V relações
Matemática Discreta - Parte V relaçõesMatemática Discreta - Parte V relações
Matemática Discreta - Parte V relaçõesUlrich Schiel
 
Implicação Lógica
Implicação LógicaImplicação Lógica
Implicação LógicaHugo Souza
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosdiogocbj
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenaçãoJonas Mendonça
 
Regressão Linear Simples
Regressão Linear SimplesRegressão Linear Simples
Regressão Linear Simplesmonica_lima
 
Matemática Discreta - Parte IV teoria dos-conjuntos
Matemática Discreta - Parte IV teoria dos-conjuntosMatemática Discreta - Parte IV teoria dos-conjuntos
Matemática Discreta - Parte IV teoria dos-conjuntosUlrich Schiel
 
Econometria modelos de_regressao_linear
Econometria modelos de_regressao_linearEconometria modelos de_regressao_linear
Econometria modelos de_regressao_linearJoevan Santos
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Ricardo Terra
 
Inequações do 2°grau
Inequações do 2°grauInequações do 2°grau
Inequações do 2°grauLSKY
 
Aula 3 elementos basicos e noçoes de trafego
Aula 3   elementos basicos e noçoes de trafegoAula 3   elementos basicos e noçoes de trafego
Aula 3 elementos basicos e noçoes de trafegoJair Almeida
 
Banco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaBanco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaJuliano Padilha
 
Exercícios de relacionamento 2012
Exercícios de relacionamento 2012Exercícios de relacionamento 2012
Exercícios de relacionamento 2012Vitor Leal Diniz
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidosGleydson Sousa
 

Was ist angesagt? (20)

Matemática Discreta - Parte V relações
Matemática Discreta - Parte V relaçõesMatemática Discreta - Parte V relações
Matemática Discreta - Parte V relações
 
Implicação Lógica
Implicação LógicaImplicação Lógica
Implicação Lógica
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dados
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
Aula Grafos
Aula GrafosAula Grafos
Aula Grafos
 
Zero de função
Zero de funçãoZero de função
Zero de função
 
Algoritmo Shell Sort
Algoritmo Shell SortAlgoritmo Shell Sort
Algoritmo Shell Sort
 
Regressão Linear Simples
Regressão Linear SimplesRegressão Linear Simples
Regressão Linear Simples
 
Matemática Discreta - Parte IV teoria dos-conjuntos
Matemática Discreta - Parte IV teoria dos-conjuntosMatemática Discreta - Parte IV teoria dos-conjuntos
Matemática Discreta - Parte IV teoria dos-conjuntos
 
Econometria modelos de_regressao_linear
Econometria modelos de_regressao_linearEconometria modelos de_regressao_linear
Econometria modelos de_regressao_linear
 
Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)Apostila Linguagens Formais e Autômatos (LFA)
Apostila Linguagens Formais e Autômatos (LFA)
 
Inequações do 2°grau
Inequações do 2°grauInequações do 2°grau
Inequações do 2°grau
 
Representação de dados
Representação de dadosRepresentação de dados
Representação de dados
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos de busca
Algoritmos de buscaAlgoritmos de busca
Algoritmos de busca
 
Aula 3 elementos basicos e noçoes de trafego
Aula 3   elementos basicos e noçoes de trafegoAula 3   elementos basicos e noçoes de trafego
Aula 3 elementos basicos e noçoes de trafego
 
Banco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaBanco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de Concorrência
 
Endereçamento de memória
Endereçamento de memóriaEndereçamento de memória
Endereçamento de memória
 
Exercícios de relacionamento 2012
Exercícios de relacionamento 2012Exercícios de relacionamento 2012
Exercícios de relacionamento 2012
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 

Ä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

SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffNarlaAquino
 
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdfProjeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdfHELENO FAVACHO
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfamarianegodoi
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdfmarlene54545
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptjricardo76
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasSocorro Machado
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptxJssicaCassiano2
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTailsonSantos1
 
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAssuser2ad38b
 
Aula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptxAula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptxandrenespoli3
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxLuizHenriquedeAlmeid6
 

Kürzlich hochgeladen (20)

SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffffSSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
SSE_BQ_Matematica_4A_SR.pdfffffffffffffffffffffffffffffffffff
 
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdfProjeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
Projeto de Extensão - DESENVOLVIMENTO BACK-END.pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
 
Aula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptxAula 03 - Filogenia14+4134684516498481.pptx
Aula 03 - Filogenia14+4134684516498481.pptx
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 

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.