A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Algoritmos para compressão de URLs no Twitter

Apresentações semelhantes


Apresentação em tema: "Algoritmos para compressão de URLs no Twitter"— Transcrição da apresentação:

1 Algoritmos para compressão de URLs no Twitter
UNIVERSIDADE 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 Ronan Loschi R. Ferreira Orientador: Fabrício Benevenuto Departamento de Computação UFOP 14 de julho de 2011 Ronan Loschi R. Ferreira Seminário 2011

2 Ronan Loschi R. Ferreira
UNIVERSIDADE 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 Estrutura: Introdução Metodologia Análise de complexidade Experimentos Conclusão Ronan Loschi R. Ferreira Seminário 2011

3 Ronan Loschi R. Ferreira
UNIVERSIDADE 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 Ronan Loschi R. Ferreira Seminário 2011

4 Ronan Loschi R. Ferreira
UNIVERSIDADE 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 C={n(c)} e um PC=ASCII = 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. Ronan Loschi R. Ferreira Seminário 2011

5 Ronan Loschi R. Ferreira
UNIVERSIDADE 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. Ronan Loschi R. Ferreira Seminário 2011

6 Ronan Loschi R. Ferreira
UNIVERSIDADE 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. Ronan Loschi R. Ferreira Seminário 2011

7 Ronan Loschi R. Ferreira
UNIVERSIDADE 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. Ronan Loschi R. Ferreira Seminário 2011

8 Ronan Loschi R. Ferreira
UNIVERSIDADE 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. Ronan Loschi R. Ferreira Seminário 2011

9 Ronan Loschi R. Ferreira
UNIVERSIDADE 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%. Ronan Loschi R. Ferreira Seminário 2011

10 Ronan Loschi R. Ferreira
UNIVERSIDADE 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. Ronan Loschi R. Ferreira Seminário 2011

11 Ronan Loschi R. Ferreira
UNIVERSIDADE 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 ( )*1000 = caracteres ou bits. Representar o alfabeto C={abc} com 3 bits,: O texto abc, possui ( )*1000 = caracteres ou bits. Uma economia de 62,5% Ronan Loschi R. Ferreira Seminário 2011

12 Ronan Loschi R. Ferreira
UNIVERSIDADE 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+ 23*2 + 18*3)*1000 = caracteres ou bits. 8 bits = caracteres ou bits. 3 bits = caracteres ou bits. Huffman = caracteres ou bits. Uma economia de 62,5% Uma economia de 77,8% Ronan Loschi R. Ferreira Seminário 2011

13 Ronan Loschi R. Ferreira
UNIVERSIDADE 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. Ronan Loschi R. Ferreira Seminário 2011

14 Ronan Loschi R. Ferreira
UNIVERSIDADE 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; Ronan Loschi R. Ferreira Seminário 2011

15 Ronan Loschi R. Ferreira
UNIVERSIDADE 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. Ronan Loschi R. Ferreira Seminário 2011

16 Ronan Loschi R. Ferreira
UNIVERSIDADE 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: Alfabeto C={a,b,c,d} Frequências f(c) = {a=35, b=18, c=23, d=9} a) d b c a 9 18 23 35 d) c) 1 85 A a 35 35 50 1 b) 50 c a c c 23 35 23 27 27 23 1 27 d b d b d b 9 18 9 18 9 18 Ronan Loschi R. Ferreira Seminário 2011

17 Ronan Loschi R. Ferreira
UNIVERSIDADE 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): com 12 bits; Código de Huffman: com 9 bits; O símbolo ( . ) denota a concatenação. a b c d a b c d Ronan Loschi R. Ferreira Seminário 2011

18 Ronan Loschi R. Ferreira
UNIVERSIDADE 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: Ronan Loschi R. Ferreira Seminário 2011

19 Ronan Loschi R. Ferreira
UNIVERSIDADE 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) Ronan Loschi R. Ferreira Seminário 2011

20 Ronan Loschi R. Ferreira
UNIVERSIDADE 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: Ronan Loschi R. Ferreira Seminário 2011

21 Ronan Loschi R. Ferreira
UNIVERSIDADE 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. Ronan Loschi R. Ferreira Seminário 2011

22 Ronan Loschi R. Ferreira
UNIVERSIDADE 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] Ronan Loschi R. Ferreira Seminário 2011

23 Ronan Loschi R. Ferreira
UNIVERSIDADE 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] Ronan Loschi R. Ferreira Seminário 2011

24 Ronan Loschi R. Ferreira
UNIVERSIDADE 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) = c*O(n) A árvore de Huffman não é usada na prática! Ronan Loschi R. Ferreira Seminário 2011

25 Ronan Loschi R. Ferreira
UNIVERSIDADE 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: Ronan Loschi R. Ferreira Seminário 2011

26 Ronan Loschi R. Ferreira
UNIVERSIDADE 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. Ronan Loschi R. Ferreira Seminário 2011

27 Ronan Loschi R. Ferreira
UNIVERSIDADE 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. Ronan Loschi R. Ferreira Seminário 2011

28 Ronan Loschi R. Ferreira
UNIVERSIDADE 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, Acesso em 06/06/2011. [2] N. Ziviani, Projeto de Algoritmos com Implementações em Pascal e C, 3rd ed. Cengage Learning, 2011, iSBN: [3] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, Introduction to Algorithms, 3rd ed. The MIT Press, 2009, iSBN-13: [4] D. Antoniades, I. Polakis, G. Kontaxis, E. Athanasopoulos, S. Ioannidis, E. Markatos, and T. Karagiannis, “we.b: The web of short urls,” in Int’l Conference on World Wide Web., 2011, pp. 715–724. [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. 1–9. [6] C. Grier, K. Thomas, V. Paxson, and M. Zhang, The underground on 140 characters or less,” in ACM conference on Computer and communications security (CCS), 2010, pp. 27–37. Ronan Loschi R. Ferreira Seminário 2011


Carregar ppt "Algoritmos para compressão de URLs no Twitter"

Apresentações semelhantes


Anúncios Google