Fun - PowerPoint PPT Presentation

1 / 47
About This Presentation
Title:

Fun

Description:

Title: Processamento de Transa es Author: SIS 755 Last modified by: menoti Created Date: 7/13/2003 4:37:41 PM Document presentation format: Apresenta o na tela – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 48
Provided by: SIS787
Category:
Tags: ashanti | fun

less

Transcript and Presenter's Notes

Title: Fun


1
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

2
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

3
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

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

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

6
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

7
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

8
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

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

10
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

11
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

12
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)

13
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

14
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

15
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

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

17
Algoritmo 1 - Execução
  • Ordering

18
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

19
Algoritmo 1 - Execução
  • Searching

20
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) ???

21
Algoritmo 2 - Buckets
  • Mapping

22
Algoritmo 2 - Buckets
  • Ordering e
  • Searching

23
Algoritmo 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
24
Algoritmo 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
25
Algoritmo 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
26
Algoritmo 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
27
Algoritmo 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
28
Algoritmo 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
29
Algoritmo 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
30
Algoritmo 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
31
Algoritmo 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
32
Algoritmo 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
33
Algoritmo 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
34
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
35
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.

36
Algoritmo 3 - Mapping
37
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
0
0
0
5
1
3
5
5
2
2
3
38
Resultados - Algoritmo 1
39
Resultados - Algoritmo 2
40
Resultados - Algoritmo 3
41
Resultados - Comparação
42
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)

43
Referências
  1. 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.

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

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

46
Agradecimentos
47
Dúvidas e Perguntas
?
Write a Comment
User Comments (0)
About PowerShow.com