Title: UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC - Programa de P
1UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
- Algoritmos para compressão de URLs no Twitter
Orientador Fabrício Benevenuto
Departamento de Computação UFOP 14 de julho de
2011
Seminário 2011
2UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
- Introdução
- Metodologia
- Análise de complexidade
- Experimentos
- Conclusão
Seminário 2011
3UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Motivação
- Quantidade de informações gerada pelo uso da
tecnologia - Bancos de dados locais
- Banco de dados on-line (Cloud Computing)
- Google (2003) . Mais de 3,5 bilhões de páginas
em seu BD - A Web (bilhões de páginas). Cada bilhão ocupa 10
terabytes de texto corrido - Um terabyte . Suficiente para armazenar o texto
de um milhão de livros.
- O armazenamento e o acesso a tal quantidade de
texto é um grande desafio
Seminário 2011
4UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Formulação do problema
Dado um alfabeto Cn(c) e um PCASCII
Conjunto de Dados (texto) O problema consiste em
representar o conjunto de dados originais em
menos espaço.
Solução Compressão de Dados.
Substituir os símbolos do conjunto de dados
original por outros que possam ser representados
usando um número menor de bits ou bytes.
Seminário 2011
5UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Justificativa
- Menos espaço de armazenamento
- Menos tempo para
- Ser lido do disco
- Transmitido
- Pesquisado.
- Custo computacional em 20 anos (Patterson e
Hennessy(1995)). - Tempo de acesso a discos praticamente
constante - Velocidade de processamento aumentou 2 mil
vezes.
Seminário 2011
6UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Considerações
- Velocidade de compressão e de descompressão.
- Exemplo banco de dados textuais
- Pesquisar diretamente no texto comprimido, em
vez de descomprimir o texto. - Exemplo Casamento de cadeias.
Seminário 2011
7UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Objetivos
Apresentar os métodos de compressão de Huffman
(1952) Apresentar o algoritmo de
Huffman Analisar a complexidade do algoritmo.
Seminário 2011
8UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Metodologia
- Huffman binário
- Caractere
- Usando palavras.
O método usa as probabilidades de ocorrência dos
símbolos para determinar palavras de código
binário, de tamanho variável, para representar
cada símbolo.
Seminário 2011
9UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Huffman binário usando caracteres (1952)
- Considera caracteres como símbolos
- Usa uma tabela com o cálculo das frequências de
ocorrência dos caracteres
- Razão de compressão de 20 a 90. Dependendo das
características dos dados.
- Exemplo
- Antes da compressão 100 bytes
- Após a compressão 30 bytes
- Razão de compressão 30.
Seminário 2011
10UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Huffman binário usando caracteres (1952)
- Representa de modo ótimo cada caractere
- Atribui códigos mais curtos a símbolos com
frequências altas - Códigos mais longos a símbolos com frequências
curtas
- Os códigos são cadeias binárias que representam
cada caractere - Código único, de tamanho variável, para cada
símbolo diferente do texto.
Seminário 2011
11UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Há outros métodos de representar os caracteres,
por exemplo, usando um código binário de
comprimento fixo. ASCII 2 8 bits
3
O texto abc, possui (35 18 23)1000 76.000
caracteres ou 608.000 bits.
Representar o alfabeto Cabc com 3 bits,
O texto abc, possui (35 18 23 )1000 76.000
caracteres ou 228.000 bits.
Uma economia de 62,5
Seminário 2011
12UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Huffman binário usando caracteres
O texto abc, possui (35 1 232 183)1000
76.000 caracteres ou 135.000 bits.
8 bits 76.000 caracteres ou 608.000 bits. 3
bits 76.000 caracteres ou 228.000
bits. Huffman 76.000 caracteres ou 135.000
bits.
Uma economia de 62,5
Uma economia de 77,8
Seminário 2011
13UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Custo da árvore
C alfabeto c caracteres do alfabeto f(c)
frequência do caractere c no alfabeto C dt(c)
profundidade de folha ou comprimento da palavra
de código em bits.
Seminário 2011
14UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
A construção da árvore de Huffman
- Utiliza uma abordagem gulosa
- Um conjunto de n folhas representam os
caracteres que formam o vocabulário do arquivo e
suas respectivas frequências.
- A cada etapa, de forma gulosa, as duas árvores
com frequências menores frequências são
combinadas em uma única árvore e a soma de suas
frequências é associada ao nó raiz.
- Ao final das n-1 etapas, temos a árvore de
codificação ótima para o arquivo em questão
Seminário 2011
15UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
A construção da árvore de Huffman
- As palavras de código binário são identificados
pelos rótulos das arestas que compõem o caminho
da raiz até a folha que representa o caractere.
- Seguindo o método de Huffman, as arestas da
esquerda são rotuladas com o bit 0 e as arestas
da direita com o bit 1
- E para ser um código ótimo, a árvore dever estar
sempre cheia, ou seja, cada nó que não é uma
folha deve ter dois filhos.
Seminário 2011
16UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
A construção da árvore de Huffman
- Frequências f(c) a35, b18, c23, d9
a)
d
b
c
a
9
18
23
35
d)
c)
1
0
85
A
a
35
35
1
50
0
b)
50
c
a
c
c
23
35
23
27
1
27
23
0
27
d
b
d
b
d
b
9
18
9
18
9
18
Seminário 2011
17UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Compressão e Descompressão
Por exemplo, um arquivo de 4 caracteres abcd
obtemos as codificações Código fixo (3
bits) 000.001.010.011 com 12 bits Código de
Huffman 0.111.10.110 com 9 bits O símbolo (
. ) denota a concatenação.
d
b
c
a
d
b
c
a
Seminário 2011
18UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
O Algoritmo de Huffman
Seminário 2011
19UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Huffman usando palavras
(Moura (1999) Moura, Navarro, Ziviani e
Baeza-Yates, 2000 Ziviani, Moura, Navarro e
Baeza-Yates, 2000)
Seminário 2011
20UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Huffman usando palavras
Seminário 2011
21UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
O Algoritmo de Huffman usando palavras
Atribuído a Moffat e Katajainen (1995) e descrito
em Moffat e Turpin (2002), e em 2 Calcula os
comprimentos dos códigos em vez dos códigos
propriamente ditos A compressão atingida é a
mesma, independentemente dos códigos utilizados
Além disso é possível gerar a palavra de
código binário, de uma palavra, a partir dos
comprimentos dos códigos obtidos. O mesmo é
válido para os algoritmos de codificação e
decodificação.
Seminário 2011
22UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
O Algoritmo de Huffman usando palavras
O algoritmo divide-se em três fases distintas
1- Construção da árvore de Huffman 2-
Calculadas as profundidades dos nós internos da
árvore 3- Calculadas as profundidades dos
nós folhas da árvore, a partir da profundidade
dos nós internos. As profundidades dos nós
folhas são utilizados para a obtenção do código
de Huffman para cada palavra.
Métodos de Huffman baseados em caracteres
comprimem o texto para aproximadamente 60,
enquanto métodos de Huffman baseado em palavras
comprimem o texto para valores pouco acima de
25. 2
Seminário 2011
23UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Análise de Complexidade
Algoritmo de Huffman usando caractere
Fila de prioridades Q O(lgn)
Inicialização de Q O(n)
O loop (executado exatamente n-1) O(nlgn)
Desse modo, o tempo de execução total do
algoritmo de Huffman, em um conjunto de n
caracteres é O(nlgn). 3
Seminário 2011
24UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Análise de Complexidade
Algoritmo de Huffman usando palavras
O algoritmo, para o Método de Huffman usando
palavras, calcula os comprimentos dos códigos a
partir do vetor A contendo as frequências das
palavras, em ordem não crescente, a um custo O(n)
em tempo e espaço.
Prioridades Q O(n)
Inicialização de Q O(n)
Comprimentos dos códigos O(n) O(n) cO(n)
A árvore de Huffman não é usada na prática!
Seminário 2011
25UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Experimentos
Seminário 2011
26UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Conclusão
O método de compressão de Huffman é uma boa
opção Vantagem do Huffman Usando palavras
Melhor taxa de compressão e ordem de
complexidade. A construção da árvore de
Huffman é um passo importante para a compreensão
das diferentes soluções propostas. Os
experimentos realizados, embora simples,
demonstram a utilidade e a vantagem de se
comprimir dados com o objetivo de ganhar espaço
em disco. Este trabalho está diretamente
relacionado com o tema da dissertação Contribuiçã
o da disciplina de Projeto e Analise de
Algoritmos em uma aplicação real.
Seminário 2011
27UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Trabalhos futuros
Embora não explorados neste artigo, outros
métodos de compressão como os da família de
Ziv-Lempel, podem ser pesquisados e
implementados. Implementação do método de
Huffman usando palavras Experimentos
demonstrando a pesquisa direta no texto
comprimido e acesso direto a qualquer parte do
texto comprimido.
Seminário 2011
28UNIVERSIDADE FEDERAL DE OURO PRETO PPGCC -
Programa de Pós-Graduação em Ciência da
Computação Disciplina de Projeto e Análise de
Algoritmos
Introdução Metodologia Análise de
complexidade Experimentos Conclusão
Bibliografia
1 Wikipedia, Compressão de dados, 2011,
http//pt.wikipedia.org/wiki/Algoritmodecompressao
, Acesso em 06/06/2011. 2 N. Ziviani, Projeto
de Algoritmos com Implementações em Pascal e C,
3rd ed. Cengage Learning, 2011, iSBN
978-85-221-1050-6. 3 T. H. Cormen, C. E.
Leiserson, R. L. Rivest, and C. Stein,
Introduction to Algorithms, 3rd ed. The MIT
Press, 2009, iSBN-13 978-0-262-53305-8. 4 D.
Antoniades, I. Polakis, G. Kontaxis, E.
Athanasopoulos, S. Ioannidis, E. Markatos, and T.
Karagiannis, we.b The web of short urls, in
Intl Conference on World Wide Web., 2011, pp.
715724. 5 F. Benevenuto, G. Magno, T.
Rodrigues, and V. Almeida, Detecting spammers on
twitter, in Annual Collaboration, Electronic
messaging, Anti-Abuse and Spam Conference (CEAS),
Redmond, Washington, USA. July, 2010, pp.
19. 6 C. Grier, K. Thomas, V. Paxson, and M.
Zhang, _at_spam The underground on 140 characters
or less, in ACM conference on Computer and
communications security (CCS), 2010, pp. 2737.
Seminário 2011