47
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

Função Hash Mínima e Perfeita

  • Upload
    abedi

  • View
    21

  • Download
    1

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: Função  Hash  Mínima e Perfeita

Função Hash Mínima e Perfeita

César Francisco Moura CoutoDavid Menoti

Departamento de Ciência da ComputaçãoUniversidade Federal de Minas Gerais

Page 2: Função  Hash  Mínima e Perfeita

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

Page 3: Função  Hash  Mínima e Perfeita

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

Page 4: Função  Hash  Mínima e Perfeita

Função Hashing

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

Page 5: Função  Hash  Mínima e Perfeita

Função Hashing Perfeita

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

Page 6: Função  Hash  Mínima e 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

Page 7: Função  Hash  Mínima e Perfeita

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

Page 8: Função  Hash  Mínima e Perfeita

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

Page 9: Função  Hash  Mínima e Perfeita

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.

Page 10: Função  Hash  Mínima e Perfeita

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

Page 11: Função  Hash  Mínima e Perfeita

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:

nktablekhy

iii mod))(()(

100

rktablekhy

iii mod))(()(

111

rrktablekhy

iii

mod))(()(1

22

Page 12: Função  Hash  Mínima e Perfeita

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)

Page 13: Função  Hash  Mínima e Perfeita

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

Page 14: Função  Hash  Mínima e Perfeita

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

))(())(()()( 0 khgkhgkhkh yx

Page 15: Função  Hash  Mínima e Perfeita

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

210 ,, hhh

0h 1hConjunto de chaves associadas a seus valores de

Palavra valor valor valor

Asgard 2 0 5

Ash 3 0 5

Ashanti 0 2 3

Ashcroft 3 1 5

Ashe 5 1 3

Asher 1 1 3

2h

Page 16: Função  Hash  Mínima e Perfeita

Algoritmo 1 - Execução

Mapping Os valores h1 e h2 formam o grafo de

dependência bipartido

Page 17: Função  Hash  Mínima e Perfeita

Algoritmo 1 - Execução

Ordering

Page 18: Função  Hash  Mínima e Perfeita

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 1 Ashcroft

2 2 Ashe, Asher

3 2 Asgard, Ash

4 1 Ashanti

Page 19: Função  Hash  Mínima e Perfeita

Algoritmo 1 - Execução

Searching

Page 20: Função  Hash  Mínima e Perfeita

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

Page 21: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Buckets

Mapping

Page 22: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Buckets

Ordering e Searching

Page 23: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Exemplo (Searching)

7

6.0

1

1

p

np

0 1 2 3 4 5 6 7 8 9 10 11

jan fevjundez

marmaisetnov

abr julAgo

Out

8

:3,42,)1/(log

b

temoscusandocncnbJan, fev, mar, abr,mai, jun, jul, ago, set,out, nov, dez

3

3.0

2

2

p

bp

0 1 2 3 4 5 6 7

marmaisetnov

jan fevjundez

abrjul

ago Out

0 1 2 3 4 5 6 7

marmaisetnov

fevjundez

abrjul

jan ago out

h10

h11 h12

Sort

C

Page 24: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Exemplo (Searching)

0 1 2 3 4 5

1

0 1 2 3 4 5 6 7 8 9 10 11

11 0 2 3

nBgchchpm

nCh

i mod))()(()(

1,,0:

20

20

0 1 2 3 4 5 6 7

marmaisetnov

fevjundez

abrjul

jan ago out

h20

0 1 2 3 4 5 6 7

11032

142

87

10 8 0

g

SEARCH

Tabela HashxcomalinhadoseraBdemembroumue

vazioindiceumxsendonuxBg

i

i ,mod)()(

B

Page 25: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Exemplo (Searching)

0 1 2 3 4 5

1 1

0 1 2 3 4 5 6 7 8 9 10 11

11 0 2 3

nBgchchpm

nCh

i mod))()(()(

1,,0:

20

20

0 1 2 3 4 5 6 7

marmaisetnov

fevjundez

abrjul

jan ago out

h20

0 1 2 3 4 5 6 7

11032

142

87

10 8 0

g

SEARCH

Tabela HashxcomalinhadoseraBdemembroumue

vazioindiceumxsendonuxBg

i

i ,mod)()(

B

Page 26: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Exemplo (Searching)

0 1 2 3 4 5

1 4

0 1 2 3 4 5 6 7 8 9 10 11

11 0 2 3 1 2 4

nBgchchpm

nCh

i mod))()(()(

1,,0:

20

20

0 1 2 3 4 5 6 7

marmaisetnov

fevjundez

abrjul

jan ago out

h20

0 1 2 3 4 5 6 7

11032

142

87

10 8 0

g

SEARCH

Tabela HashxcomalinhadoseraBdemembroumue

vazioindiceumxsendonuxBg

i

i ,mod)()(

B

Page 27: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Exemplo (Searching)

0 1 2 3 4 5

1 4 6

0 1 2 3 4 5 6 7 8 9 10 11

11 0 2 3 1 2 4

nBgchchpm

nCh

i mod))()(()(

1,,0:

20

20

0 1 2 3 4 5 6 7

marmaisetnov

fevjundez

abrjul

jan ago out

h20

0 1 2 3 4 5 6 7

11032

142

87

10 8 0

g

SEARCH

Tabela HashxcomalinhadoseraBdemembroumue

vazioindiceumxsendonuxBg

i

i ,mod)()(

B

Page 28: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Exemplo (Searching)

0 1 2 3 4 5

1 4 11

0 1 2 3 4 5 6 7 8 9 10 11

11 0 2 3 1 2 4

nBgchchpm

nCh

i mod))()(()(

1,,0:

20

20

0 1 2 3 4 5 6 7

marmaisetnov

fevjundez

abrjul

jan ago out

h20

0 1 2 3 4 5 6 7

11032

142

87

10 8 0

g

SEARCH

Tabela HashxcomalinhadoseraBdemembroumue

vazioindiceumxsendonuxBg

i

i ,mod)()(

B

Page 29: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Exemplo (Searching)

0 1 2 3 4 5

1 4 1

0 1 2 3 4 5 6 7 8 9 10 11

11 0 2 3 1 2 4

nBgchchpm

nCh

i mod))()(()(

1,,0:

20

20

0 1 2 3 4 5 6 7

marmaisetnov

fevjundez

abrjul

jan ago out

h20

0 1 2 3 4 5 6 7

11032

142

87

10 8 0

g

SEARCH

Tabela HashxcomalinhadoseraBdemembroumue

vazioindiceumxsendonuxBg

i

i ,mod)()(

B

Page 30: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Exemplo (Searching)

0 1 2 3 4 5

1 4 2

0 1 2 3 4 5 6 7 8 9 10 11

11 0 2 3 1 2 4 7 8

nBgchchpm

nCh

i mod))()(()(

1,,0:

20

20

0 1 2 3 4 5 6 7

marmaisetnov

fevjundez

abrjul

jan ago out

h20

0 1 2 3 4 5 6 7

11032

142

87

10 8 0

g

SEARCH

Tabela HashxcomalinhadoseraBdemembroumue

vazioindiceumxsendonuxBg

i

i ,mod)()(

B

Page 31: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Exemplo (Searching)

0 1 2 3 4 5

1 4 2 4

0 1 2 3 4 5 6 7 8 9 10 11

11 0 10 2 3 1 2 4 7 8

nBgchchpm

nCh

i mod))()(()(

1,,0:

20

20

0 1 2 3 4 5 6 7

marmaisetnov

fevjundez

abrjul

jan ago out

h20

0 1 2 3 4 5 6 7

11032

142

87

10 8 0

g

SEARCH

Tabela HashxcomalinhadoseraBdemembroumue

vazioindiceumxsendonuxBg

i

i ,mod)()(

B

Page 32: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Exemplo (Searching)

0 1 2 3 4 5

1 4 2 4 11

0 1 2 3 4 5 6 7 8 9 10 11

11 0 10 2 3 1 2 8 4 7 8

nBgchchpm

nCh

i mod))()(()(

1,,0:

20

20

0 1 2 3 4 5 6 7

marmaisetnov

fevjundez

abrjul

jan ago out

h20

0 1 2 3 4 5 6 7

11032

142

87

10 8 0

g

SEARCH

Tabela HashxcomalinhadoseraBdemembroumue

vazioindiceumxsendonuxBg

i

i ,mod)()(

B

Page 33: Função  Hash  Mínima e Perfeita

Algoritmo 2 - Exemplo (Searching)

0 1 2 3 4 5

1 4 2 4 11 11

0 1 2 3 4 5 6 7 8 9 10 11

11 0 10 2 3 1 2 8 4 7 8 0

nBgchchpm

nCh

i mod))()(()(

1,,0:

20

20

0 1 2 3 4 5 6 7

marmaisetnov

fevjundez

abrjul

jan ago out

h20

0 1 2 3 4 5 6 7

11032

142

87

10 8 0

g

SEARCH

Tabela HashxcomalinhadoseraBdemembroumue

vazioindiceumxsendonuxBg

i

i ,mod)()(

B

Page 34: Função  Hash  Mínima e Perfeita

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

mn

iPesosiChavehi mod1

][][

Page 35: Função  Hash  Mínima e Perfeita

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.

Page 36: Função  Hash  Mínima e Perfeita

Algoritmo 3 - Mapping

09.2ccnm

Page 37: Função  Hash  Mínima e Perfeita

Algoritmo 3 - Assignment

013

4

5

2

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

05

05

32

4

Page 38: Função  Hash  Mínima e Perfeita

Resultados - Algoritmo 1

Page 39: Função  Hash  Mínima e Perfeita

Resultados - Algoritmo 2

Page 40: Função  Hash  Mínima e Perfeita

Resultados - Algoritmo 3

Page 41: Função  Hash  Mínima e Perfeita

Resultados - Comparação

Page 42: Função  Hash  Mínima e Perfeita

Conclusõ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)

Page 43: Função  Hash  Mínima e Perfeita

Referências1. CHEN, Q. F. (1992). An object-oriented database system for

efficient information retrieval applications. PhD thesis, Department of Computer Science, Virginia Tech.

2. CICHELLI, R. J. Minimal Perfect Hashing Made Simple, Comm. ACM 23(1)(January 1980) 17-19.

3. CORMEN, T. H., LEISERSON, C. E., RIVEST, R. L., and STEIN, C. (2002). Introduction to Algorithms. MIT Press and McGraw-Hill, second edition

4. CZECH, Zibigniew j., HAVAS, George MAJEWSKI, Bohdan S. Fundamental Study Perfect Hashing. Theoretical Computer Science 182(1997) 1-143.

5. CZECH, Zibigniew j., HAVAS, George MAJEWSKI, Bohdan S. An Optimal algorithm for generating minimal perfect hash functions. Information Processing Letters 43(1992) 257-264.

Page 44: Função  Hash  Mínima e Perfeita

Referências6. 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.

7. 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.

8. 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.

9. 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).

10. 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.

Page 45: Função  Hash  Mínima e Perfeita

Referências11. 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.

12. MEHLHORN, K. Data Structures and Algorithms 1: Sorting and Searching. Springer-Verlag, Berlin - Heidelberg - New York – Tokyo, 1984.

13. PEARSON, P. K. Fast hashing of variable-length text strings. Communications of the ACM, 28(6):667–680, 1990.

14. SAGER, T. J. A new method for generating minimal perfect hashing functions. Technical report, Department of Computer Science, University of Missouri-Rolla, Mo, 1984.

15. SAGER, T. J. A Polynomial Time Generator for Minimal Perfect Hash Functions, Comm. ACM 28(5), pages 523-532, 1985.

16. 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.

Page 46: Função  Hash  Mínima e Perfeita

Agradecimentos

Page 47: Função  Hash  Mínima e Perfeita

Dúvidas e Perguntas

?