SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
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.

Mais conteúdo relacionado

Mais procurados

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
Ulrich Schiel
 
Regressão Linear Simples
Regressão Linear SimplesRegressão Linear Simples
Regressão Linear Simples
monica_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-conjuntos
Ulrich Schiel
 
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
 
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
Jair Almeida
 

Mais procurados (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
 

Semelhante a LZW - Compressão e Descompressão

Sapo sessions linux power tools
Sapo sessions linux power toolsSapo sessions linux power tools
Sapo sessions linux power tools
Armando Reis
 
Introdução a programação
Introdução a programaçãoIntrodução a programação
Introdução a programação
Gustavo Nazário
 
Aula 9 propriedadedas linguagensregulares
Aula 9   propriedadedas linguagensregularesAula 9   propriedadedas linguagensregulares
Aula 9 propriedadedas linguagensregulares
wab030
 
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
Duane Bertoldo
 

Semelhante a 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
 

Mais de Mayara Mônica

Queues and Hook Functions
Queues and Hook FunctionsQueues and Hook Functions
Queues and Hook Functions
Mayara Mônica
 

Mais de 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
 

Último

Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 
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
marlene54545
 
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
TailsonSantos1
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 

Último (20)

Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
Araribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medioAraribá slides 9ano.pdf para os alunos do medio
Araribá slides 9ano.pdf para os alunos do medio
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
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
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
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
 
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
 
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
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.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
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
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
 
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUAO PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
O PLANETA TERRA E SEU SATÉLITE NATURAL - LUA
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 

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.