Função Hash Mínima e Perfeita

Slides:



Advertisements
Apresentações semelhantes
Medidas de Avaliação de Sistemas de Recuperação de Informação
Advertisements

Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
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:
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.
MÁQUINAS UNIVERSAIS Fabrício Dias
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
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.
Indexação Automática de Documentos
Métodos para representação de estruturas hierárquicas
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-
AVALIAÇÃO DE ALGORITMOS DE STEMMING PARA A LÍNGUA PORTUGUESA.
Introdução aos Computadores e à Programação
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 Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
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
Profa. Dra. Ana Paula Appel
William Stallings Arquitetura e Organização de Computadores 8a Edição
Arquitetura de Sistemas Operacionais Francis Berenger Machado
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.
Arquivos Extensíveis.
Estatística Básica Utilizando o Excel
BCC101 – Matemática Discreta
Hashing (Espalhamento)
Classificação e Pesquisa de Dados
Arrays Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein) Arrays Exercícios.
EQUAÇÕES POLINOMIAIS Prof. Marlon.
Análise Léxica Supondo o trecho de programa abaixo:
CAP-223 N. L. Vijaykumar (Vijay) Tel:
Arquivos Invertidos André Ferreira da Silva Jimy Marques Madeiro
Carlos Alberto de Freitas Pereira Júnior
Composição e Geração de Aplicações usando Aspectos
FERRAMENTA PARA ANÁLISE DE IMPACTO BASEADO EM RASTREABILIDADE DE
Experiments with Strassen’s Algorithm: from sequential to parallel
Marco Antonio Montebello Júnior
ESTATÍSTICA.
Grafos Árvores Geradoras.
Finding and Evaluating Community Structure in Networks
Compressão de Textos Juliano Palmieri Lage.
Pesquisa em memória primária: hashing
Exercícios PAA- Grafos
Algorítmos e estrutura de dados III
Ordenação por inserção
Hashing - Espalhamento
Introdução e Busca Cega
1.
Técnicas de Modelagem para Aplicações em Computação Gráfica
Projeto de Banco de Dados
Campus de Caraguatatuba Aula 8: Noções Básicas sobre Erros (2)
Conceitos básicos em grafos
Fundamentos de Programação
Ceça Moraes – Introdução à Programação SI1
1 A COMPUTAÇÃO MODERNA Valdemar W. Setzer Depto. de Ciência da Computação da USP
Máquina de Turing Universal
SISTEMAS OPERACIONAIS I
Campus de Caraguatatuba Matemática Discreta 1 – MD 1
Planilha Eletrônica - Excel
Campus de Caraguatatuba Aula 9: Noções Básicas sobre Erros (3)
Universidade Federal de Mato Grosso do Sul Departamento de Computação e Estatística Circuitos de Euler em Paralelo Universidade Federal de Mato Grosso.
Tabela Hash Alunos : Gustavo Jorge Zanin nºUSP
SQL Server Comando PIVOT.
Carlos Eduardo Benevides Bezerra CMP157 CMP157 – Programação Distribuída e Paralela Algoritmo de Peterson para escolha de líder 1 CMP157 – Programação.
Analise de Algoritmos e Notação Assintótica
Gabriel C.S. EDA0001 – TADS – 2013 UDESC – Joinville
TÍTULO DO ROTEIRO DO PRODUTO
Transcrição da apresentação:

Função Hash Mínima e Perfeita César Francisco Moura Couto David Menoti Departamento de Ciência da Computação Universidade Federal de Minas Gerais

Roteiro da Apresentação Introdução Função Hash Função Hash Perfeita Função Hash Perfeita e Mínima Algoritmos para geração da FHPM Experimentos Conclusões

Hashing Hashing ou transformação de chave é um método de pesquisa onde os registro armazenados em uma tabela são diretamente endereçados a partir de uma transformação aritmética sobre a chave de pesquisa. Esse método é constituído de duas fases: Computar o valor da função de transformação (função hashing), a qual transforma a chave de pesquisa em um endereço na tabela. Considerando que duas ou mais chaves podem ser transformadas em um mesmo endereço da tabela, é necessário existir um método para lidar com colisões

Função Hashing Uma função hashing transforma um conjunto de chaves em um conjunto de valores inteiros com colisões permitidas.

Função Hashing Perfeita Quando não houver colisões a função hashing é denominada função hashing perfeita.

Função Hashing Perfeita Mínima Se o numero de chaves n e o tamanho da tabela m são iguais , então a função hashing é denominada função hashing perfeita e mínima

Algoritmos para geração FHPM Existem várias estratégias para encontrar funções Hashing perfeitas. A estratégia definida nos algoritmos 1 e 2 utiliza a abordagem MOS (Mapping, Ordering e Searching) descrita por Cichelli, 1980

Algoritmos para geração FHPM Mapping Consiste em transformar um conjunto de chaves de um universo original para um novo universo Ordering Coloca as chaves em uma seqüência ordenada que determina a ordem em que os valores das chaves serão espalhados (Hashing) O passo de Ordering deve particionar as chaves dentro de subseqüências de chaves consecutivas. Esta subseqüência forma um nível e as chaves de cada nível devem ter seus valores determinados na tabela hash

Algoritmos para geração FHPM Searching Consiste em tentar determinar valores hash para as chaves de cada nível. Se o passo Searching encontrar um nível que é incapaz de acomodar, ele volta para um nível anterior, determina novos valores para as chaves do nível e tenta novamente determinar valores para níveis posteriores.

Algoritmo 1 - Mapping FOX, HEATH, CHEN, DAOUD [7] Considerando que chaves são strings de caracteres, no passo de Mapping um conjunto de triplas é obtido para servir como identificador da chave. A técnica para construir esse conjunto de triplas consiste essencialmente em obter um numero randômico (mod n) para cada chave, fazendo o uso de todas as informações na chave para dar o máximo de discriminação

Algoritmo 1 - Mapping Três tabelas de números randômicos são criadas, uma para cada função h0, h1 e h2 ,onde cada tabela contém um número randômico para cada caractere de cada posição i na chave. Então as triplas são computadas usando as seguintes formulas:

Algoritmo 1 - Mapping Os valores de h1 e h2 são usados para construir um grafo bipartido chamado de grafo de dependência A metade dos vértices do grafo de dependência correspondem aos valores de h1. A outra metade correspondem aos valores de h2 Uma chave k corresponde a uma aresta nomeada por k entre os vértices nomeados por h1(k) e h2(k)

Algoritmo 1 - Ordering O passo de Ordering ordena os vértices do grafo bipartido e a partir desse vértices, níveis são criados Cada nível representa um conjunto de arestas

Algoritmo 1 - Searching O passo de Searching obtém os níveis produzidos no passo de Ordering e tenta determinar os valores hash para as chaves Esse passo utiliza a seguinte equação para determinar a posição na tabela

Conjunto de chaves associadas a seus valores de Algoritmo 1 - Execução Mapping A ilustração do algoritmo utiliza um conjunto de seis chaves. A seis palavras com os seus valores de h0 , h1 e h2 são Conjunto de chaves associadas a seus valores de Palavra valor Asgard 2 5 Ash 3 Ashanti Ashcroft 1 Ashe Asher

Algoritmo 1 - Execução Mapping Os valores h1 e h2 formam o grafo de dependência bipartido

Algoritmo 1 - Execução Ordering

Algoritmo 1 - Execução Os resultados do passo de Ordering são os vertices ordenados 1, 5, 3, 0 e 2 obtidos na ordenação de quatro níveis Níveis na Ordenação Nível Tamanho do Nível Chaves no Nível 1 Ashcroft 2 Ashe, Asher 3 Asgard, Ash 4 Ashanti

Algoritmo 1 - Execução Searching

Algoritmo 2 - Buckets FOX, CHEN, HEATH [6]: MPHF até 3.8 milhões de chaves em 6 horas. Resultado experimental: O(n) ??? Pouco espaço para representar a MPHF obtida: 2.5 bits/chave. CZECH, HAVAS e MAJEWSKI [4]: O(nn/2n) ???

Algoritmo 2 - Buckets Mapping

Algoritmo 2 - Buckets Ordering e Searching

Algoritmo 2 - Exemplo (Searching) Jan, fev, mar, abr, mai, jun, jul, ago, set, out, nov, dez h10 1 2 3 4 5 6 7 8 9 10 11 jan fev jun dez mar mai set nov abr jul Ago Out h11 h12 1 2 3 4 5 6 7 mar mai set nov fev jun dez abr jul jan ago out 1 2 3 4 5 6 7 mar mai set nov jan fev jun dez abr jul ago Out Sort

Algoritmo 2 - Exemplo (Searching) B 1 2 3 4 5 6 7 mar mai set nov fev jun dez abr jul jan ago out 1 2 3 4 5 6 7 11 8 10 h20 S E A R C H Tabela Hash g 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5

Algoritmo 2 - Exemplo (Searching) B 1 2 3 4 5 6 7 mar mai set nov fev jun dez abr jul jan ago out 1 2 3 4 5 6 7 11 8 10 h20 S E A R C H Tabela Hash g 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5

Algoritmo 2 - Exemplo (Searching) B 1 2 3 4 5 6 7 mar mai set nov fev jun dez abr jul jan ago out 1 2 3 4 5 6 7 11 8 10 h20 S E A R C H Tabela Hash g 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5

Algoritmo 2 - Exemplo (Searching) B 1 2 3 4 5 6 7 mar mai set nov fev jun dez abr jul jan ago out 1 2 3 4 5 6 7 11 8 10 h20 S E A R C H Tabela Hash g 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6

Algoritmo 2 - Exemplo (Searching) B 1 2 3 4 5 6 7 mar mai set nov fev jun dez abr jul jan ago out 1 2 3 4 5 6 7 11 8 10 h20 S E A R C H Tabela Hash g 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 11

Algoritmo 2 - Exemplo (Searching) B 1 2 3 4 5 6 7 mar mai set nov fev jun dez abr jul jan ago out 1 2 3 4 5 6 7 11 8 10 h20 S E A R C H Tabela Hash g 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5

Algoritmo 2 - Exemplo (Searching) B 1 2 3 4 5 6 7 mar mai set nov fev jun dez abr jul jan ago out 1 2 3 4 5 6 7 11 8 10 h20 S E A R C H Tabela Hash g 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5

Algoritmo 2 - Exemplo (Searching) B 1 2 3 4 5 6 7 mar mai set nov fev jun dez abr jul jan ago out 1 2 3 4 5 6 7 11 8 10 h20 S E A R C H Tabela Hash g 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5

Algoritmo 2 - Exemplo (Searching) B 1 2 3 4 5 6 7 mar mai set nov fev jun dez abr jul jan ago out 1 2 3 4 5 6 7 11 8 10 h20 S E A R C H Tabela Hash g 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 11

Algoritmo 2 - Exemplo (Searching) B 1 2 3 4 5 6 7 mar mai set nov fev jun dez abr jul jan ago out 1 2 3 4 5 6 7 11 8 10 h20 S E A R C H Tabela Hash g 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 11

Algoritmo 3 - Grafo Acíclico CZECH, HAVAS, MAJEWSKI [5] Método elegante baseado na geração de grafos aleatórios. O objetivo do algoritmo é obter uma função g que faça com que a função abaixo seja uma função hash perfeita mínima: Cada função h é uma função hash universal: H(chave) = (g(h1(chave)) + g(h2(chave))) mod n

Algoritmo 3 - Grafo Acíclico Características Complexidade de Tempo linear: O(n) Espaço de Especificação: c n log n Ordem preservada: Limite inferior da Classe O algoritmo consiste de dois passos: Mapping – Obtenção do grafo acíclico Assignment – Obtenção da função g.

Algoritmo 3 - Mapping

Algoritmo 3 - Assignment Busca em Profundidade a partir de um vértice n = 6, m = 13, c = 2,16 h(k) = (g(h1(k)) + g(h2(k))) mod n 4 4 5 5 5 3 1 2 2 3

Resultados - Algoritmo 1

Resultados - Algoritmo 2

Resultados - Algoritmo 3

Resultados - Comparação

Conclusões Algoritmo 3 Algoritmos 1 e 2 Mais rápido Ordem lexicográfica das chaves Espaço de especificação: (cn log n) bits Limite inferior n log n \bits Complexidade de Tempo: O(n) Algoritmos 1 e 2 Não preserva a ordem lexicográfica das chaves Espaço de especificação inferior a 5n bits (Alg 2) e cn log n (Alg 1) Limite inferior 1,5 n bits Complexidade de Tempo: O(n2)

Referências CHEN, Q. F. (1992). An object-oriented database system for efficient information retrieval applications. PhD thesis, Department of Computer Science, Virginia Tech. CICHELLI, R. J. Minimal Perfect Hashing Made Simple, Comm. ACM 23(1)(January 1980) 17-19. CORMEN, T. H., LEISERSON, C. E., RIVEST, R. L., and STEIN, C. (2002). Introduction to Algorithms. MIT Press and McGraw-Hill, second edition CZECH, Zibigniew j., HAVAS, George MAJEWSKI, Bohdan S. Fundamental Study Perfect Hashing. Theoretical Computer Science 182(1997) 1-143. CZECH, Zibigniew j., HAVAS, George MAJEWSKI, Bohdan S. An Optimal algorithm for generating minimal perfect hash functions. Information Processing Letters 43(1992) 257-264.

Referências FOX, Edward A., CHEN, Qi Fan, HEATH, Lenwood S. A Faster Algorithm for Constructing Minimal Perfect Hash Functions. In: Proc. 15 th Ann. Internat. ACM SIGIR Conf. On Research and Development in Information Retrieval – SIGIR’92 (Copenhagen, Denmark, june 1992) 266-273. FOX, Edward A., HEATH, Lenwood S, CHEN, Qi Fan, DAOUD, Amjad M. Practical Minimal Perfect Hash Functions for Large Databases, Comm. ACM 35(1) (January 1992) 105-121. FREDMAN, M. R., KOMLÓS, J., SZEMERÉDI, E. Storing a sparse table with O(1) Worst Case Access Time, J. ACM 31(3) (July 1984) 538-544. HAVAS, G. and MAJEWSKI, B. S. Optimal algorithms for minimal perfect hashing. Technical Report 234, The University of Queensland, Key Centre for Software Technology, (1992). MAJEWSKI, Bohdan S., WORMALD, Nicholas C., HAVAS, George, CZECH, Zibigniew j. A Family of Perfect Hashing Methods. The Computer Journal, v.39, N.6, 1996.

Referências MEHLHORN, K. On the program size of perfect and universal hash functions. In Proceedings of the 23rd IEEE Symposium on Foundations of Computer Science (FOCS’82), pages 170–175, 1982. MEHLHORN, K. Data Structures and Algorithms 1: Sorting and Searching. Springer-Verlag, Berlin - Heidelberg - New York – Tokyo, 1984. PEARSON, P. K. Fast hashing of variable-length text strings. Communications of the ACM, 28(6):667–680, 1990. SAGER, T. J. A new method for generating minimal perfect hashing functions. Technical report, Department of Computer Science, University of Missouri-Rolla, Mo, 1984. SAGER, T. J. A Polynomial Time Generator for Minimal Perfect Hash Functions, Comm. ACM 28(5), pages 523-532, 1985. ZIVIANI, N. Projeto de Algoritmos com implementações em Pascal e C. Pioneira Thomson Learnig, São Paulo - SP - Brasil, 2a. edição revisada e ampliada, 2004.

Agradecimentos

Dúvidas e Perguntas ?