Title: Fun
1Funçã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
2Roteiro 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
3Hashing
- 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
4Função Hashing
- Uma função hashing transforma um conjunto de
chaves em um conjunto de valores inteiros com
colisões permitidas.
5Função Hashing Perfeita
- Quando não houver colisões a função hashing é
denominada função hashing perfeita.
6Funçã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
7Algoritmos 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
8Algoritmos 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
9Algoritmos 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.
10Algoritmo 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
11Algoritmo 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
12Algoritmo 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)
13Algoritmo 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
14Algoritmo 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 -
15Algoritmo 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
16Algoritmo 1 - Execução
- Mapping
- Os valores h1 e h2 formam o grafo de dependência
bipartido
17Algoritmo 1 - Execução
18Algoritmo 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
19Algoritmo 1 - Execução
20Algoritmo 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) ???
21Algoritmo 2 - Buckets
22Algoritmo 2 - Buckets
23Algoritmo 2 - Exemplo (Searching)
C
Jan, fev, mar, abr, mai, jun, jul, ago, set, out,
nov, dez
h10
0 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
0 1 2 3 4 5 6 7
mar mai set nov fev jun dez abr jul jan ago out
0 1 2 3 4 5 6 7
mar mai set nov jan fev jun dez abr jul ago Out
Sort
24Algoritmo 2 - Exemplo (Searching)
B
0 1 2 3 4 5 6 7
mar mai set nov fev jun dez abr jul jan ago out
0 1 2 3 4 5 6 7
11 0 3 2 1 4 2 8 7 10 8 0
h20
S E A R C H
Tabela Hash
0 1 2 3 4 5 6 7 8 9 10 11
11 0 2 3
g
0 1 2 3 4 5
1
25Algoritmo 2 - Exemplo (Searching)
B
0 1 2 3 4 5 6 7
11 0 3 2 1 4 2 8 7 10 8 0
0 1 2 3 4 5 6 7
mar mai set nov fev jun dez abr jul jan ago out
h20
S E A R C H
Tabela Hash
0 1 2 3 4 5 6 7 8 9 10 11
11 0 2 3
g
0 1 2 3 4 5
1 1
26Algoritmo 2 - Exemplo (Searching)
B
0 1 2 3 4 5 6 7
11 0 3 2 1 4 2 8 7 10 8 0
0 1 2 3 4 5 6 7
mar mai set nov fev jun dez abr jul jan ago out
h20
S E A R C H
Tabela Hash
0 1 2 3 4 5 6 7 8 9 10 11
11 0 2 3 1 2 4
g
0 1 2 3 4 5
1 4
27Algoritmo 2 - Exemplo (Searching)
B
0 1 2 3 4 5 6 7
11 0 3 2 1 4 2 8 7 10 8 0
0 1 2 3 4 5 6 7
mar mai set nov fev jun dez abr jul jan ago out
h20
S E A R C H
Tabela Hash
0 1 2 3 4 5 6 7 8 9 10 11
11 0 2 3 1 2 4
g
0 1 2 3 4 5
1 4 6
28Algoritmo 2 - Exemplo (Searching)
B
0 1 2 3 4 5 6 7
11 0 3 2 1 4 2 8 7 10 8 0
0 1 2 3 4 5 6 7
mar mai set nov fev jun dez abr jul jan ago out
h20
S E A R C H
Tabela Hash
0 1 2 3 4 5 6 7 8 9 10 11
11 0 2 3 1 2 4
g
0 1 2 3 4 5
1 4 11
29Algoritmo 2 - Exemplo (Searching)
B
0 1 2 3 4 5 6 7
11 0 3 2 1 4 2 8 7 10 8 0
0 1 2 3 4 5 6 7
mar mai set nov fev jun dez abr jul jan ago out
h20
S E A R C H
Tabela Hash
0 1 2 3 4 5 6 7 8 9 10 11
11 0 2 3 1 2 4
g
0 1 2 3 4 5
1 4 1
30Algoritmo 2 - Exemplo (Searching)
B
0 1 2 3 4 5 6 7
11 0 3 2 1 4 2 8 7 10 8 0
0 1 2 3 4 5 6 7
mar mai set nov fev jun dez abr jul jan ago out
h20
S E A R C H
Tabela Hash
0 1 2 3 4 5 6 7 8 9 10 11
11 0 2 3 1 2 4 7 8
g
0 1 2 3 4 5
1 4 2
31Algoritmo 2 - Exemplo (Searching)
B
0 1 2 3 4 5 6 7
11 0 3 2 1 4 2 8 7 10 8 0
0 1 2 3 4 5 6 7
mar mai set nov fev jun dez abr jul jan ago out
h20
S E A R C H
Tabela Hash
0 1 2 3 4 5 6 7 8 9 10 11
11 0 10 2 3 1 2 4 7 8
g
0 1 2 3 4 5
1 4 2 4
32Algoritmo 2 - Exemplo (Searching)
B
0 1 2 3 4 5 6 7
11 0 3 2 1 4 2 8 7 10 8 0
0 1 2 3 4 5 6 7
mar mai set nov fev jun dez abr jul jan ago out
h20
S E A R C H
Tabela Hash
0 1 2 3 4 5 6 7 8 9 10 11
11 0 10 2 3 1 2 8 4 7 8
g
0 1 2 3 4 5
1 4 2 4 11
33Algoritmo 2 - Exemplo (Searching)
B
0 1 2 3 4 5 6 7
11 0 3 2 1 4 2 8 7 10 8 0
0 1 2 3 4 5 6 7
mar mai set nov fev jun dez abr jul jan ago out
h20
S E A R C H
Tabela Hash
0 1 2 3 4 5 6 7 8 9 10 11
11 0 10 2 3 1 2 8 4 7 8 0
g
0 1 2 3 4 5
1 4 2 4 11 11
34Algoritmo 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
35Algoritmo 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.
36Algoritmo 3 - Mapping
37Algoritmo 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
0
0
0
5
1
3
5
5
2
2
3
38Resultados - Algoritmo 1
39Resultados - Algoritmo 2
40Resultados - Algoritmo 3
41Resultados - Comparação
42Conclusões
- Algoritmo 3
- 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)
43Referê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.
44Referê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 SIGIR92 (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.
45Referê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 (FOCS82), pages 170175, 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)667680, 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.
46Agradecimentos
47Dúvidas e Perguntas
?