Algoritmos para compressão de URLs no Twitter

Slides:



Advertisements
Apresentações semelhantes
Contadores e Registradores
Advertisements

UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
Experiments with Clustering as a Software Remodularization Method Nicolas Anquetil and Timothy C. Lethbridge University of Ottawa, Canada WCRE 1999:
Transmissão de pacotes
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
AULA 8 Profa. Sandra de Amo GBC053 – BCC
Amintas engenharia.
Introdução à Programação usando Processing Programação Gráfica 2D Animações Exercício Animações 14/10/09 Bruno C. de Paula 2º Semestre 2009 > PUCPR >
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
UNIVERSIDADE LUTERANA DO BRASIL COMUNIDADE EVANGÉLICA LUTERANA SÃO PAULO Reconhecida pela Portaria Ministerial nº 681 de 07/12/89 – DOU de 11/12/89 Campus.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
03/08/2011 Professor Leomir J. Borba- –
TEORIA DA COMPUTAÇÃO Parte III  Máquina de Turing
Técnicas de orçamento de capital
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes
Compressão de Dados ORI Ednaldo Pizzolato.
Indice estruturado por Hash
Revisão Prova 2 Métodos de Acesso: BTree e Hash AULA 20 Profa. Sandra de Amo GBC053 – BCC
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Árvores.
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
Compressão de Dados.
Arquivos Extensíveis.
Reconhecimento de Padrões Seleção de Características
Rganização de Computadores Melhorias de Desempenho com Pipelines Capítulo 6 – Patterson & Hennessy Organização de Computadores Melhorias de Desempenho.
Capítulo 7 Multimídia 7.1 Introdução à multimídia
Estruturas de Controle
I – Informação Digital Escola Politécnica da USP MBA EPUSP em Gestão e Engenharia do Produto EP018 O Produto Internet e suas Aplicações Tecnologias de.
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
Algoritmos: Teoria e Engenharia
Experiments with Strassen’s Algorithm: from sequential to parallel
ESTATÍSTICA.
Inteligência Artificial
INTRODUÇÃO À ENGENHARIA
PROGRAMAÇÃO I UNIDADE 1.
Resultantes de Sistemas de Forças Cap. 4
Compressão de Textos Juliano Palmieri Lage.
Resolução de problemas por meio de busca
MINISTÉRIO DO PLANEJAMENTO Projeto de Lei Orçamentária 2010 Ministro Paulo Bernardo Silva Brasília, 31 de agosto de 2009.
Coordenação Geral de Ensino da Faculdade
Medidas de posição  Estudando as distribuições de  frequência,  percebe-se que existe uma  posição de  concentração dos valores, que podem estar mais concentrados no início, no meio ou no 
Algorítmos e estrutura de dados III
Um total de R$ 580,00 foi dividido por um pai entre seus dois filhos, em partes diretamente proporcionais às suas respectivas idades: 10 e 15 anos. Nessas.
Revisão Prova 2 Métodos de Acesso – Parte 2 AULA 21 Profa. Sandra de Amo GBC053 – BCC.
Centro de Gravidade e Centróide Cap. 9
Introdução e Busca Cega
Mineração da Web Recuperação de Informação
1.
Técnicas de Modelagem para Aplicações em Computação Gráfica
Problema do menor Caminho
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Campus de Caraguatatuba Aula 8: Noções Básicas sobre Erros (2)
Representação de dados
SairPróximo Itens de Seleção Probabilidades e Combinatória Cálculo de Probabilidades. Regra de Laplace. ITENS DE SELEÇÃO DOS EXAMES NACIONAIS E TESTES.
SairPróximo Itens de Seleção Probabilidades e Combinatória Cálculo Combinatório. Problemas de Contagem. ITENS DE SELEÇÃO DOS EXAMES NACIONAIS E TESTES.
1 A COMPUTAÇÃO MODERNA Valdemar W. Setzer Depto. de Ciência da Computação da USP
Campus de Caraguatatuba Aula 2: Somatório e Produtório
Campus de Caraguatatuba Licenciatura em Matemática Semestre de 2013
Máquina de Turing Universal
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Campus de Caraguatatuba Aula 9: Noções Básicas sobre Erros (3)
Inteligência Artificial
MONOGRAFIA MODELO DE ALGORITMO PARA COMPRESSÃO DE ÁUDIO
Cin-UFPE String Matching
PROCESSAMENTO DIGITAL DE IMAGENS
Estrutura de Dados III Revisão
Algoritmo de Huffman.
Técnicas de Compressão de Dados
Transcrição da apresentação:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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): 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. a b c d a b c d Ronan Loschi R. Ferreira Seminário 2011

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

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

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

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

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

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

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

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

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

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

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, 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 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, “@spam: 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