Hash

4846 palavras 20 páginas
Tabelas de hash
Diego de Freitas Aranha – IC/UNICAMP

4 de setembro de 2007

Diego de Freitas Aranha – IC/UNICAMP

Tabelas de hash

Tabelas de hash

Tabelas de hash s˜ao u
´teis para implementar a funcionalidade de um dicion´ario T .
Dicion´ario T
Inserir(T , x): inserir elemento x no conjunto T ;
Remover(T , x): remover elemento x do conjunto T ;
Buscar(T , x): retornar elemento x no conjunto T , quando x ∈ T.
Exemplo: tabela de s´ımbolos de um compilador;
Objetivo: realizar opera¸c˜ oes em tempo constante!(tempo esperado)

Diego de Freitas Aranha – IC/UNICAMP

Tabelas de hash

Tabelas de endere¸camento direto
Cada elemento ´e identificado por uma chave em N;
Quando o universo de chaves U = {0, 1, . . . , m − 1} ´e pequeno, a tabela pode ser implementada como um vetor.
Cada posi¸c˜ao representa uma chave de U e armazena um elemento x ou um ponteiro para x.

Diego de Freitas Aranha – IC/UNICAMP

Tabelas de hash

Tabelas de endere¸camento direto - Algoritmos

Inserir-Enderec
¸ amento-Direto(T , x)
T [key [x]] ← x
Remover-Enderec
¸ amento-Direto(T , x)
T [key [x]] ← NIL
Buscar-Enderec
¸ amento-Direto(T , k) return T [k]
Complexidade: as opera¸c˜ oes tomam tempo constante no pior caso.
Diego de Freitas Aranha – IC/UNICAMP

Tabelas de hash

Tabelas de hash

Problema
O universo de chaves pode ser muito grande ou esparso.

Solu¸c˜ao: Utilizar uma fun¸c˜ ao de hash h para mapear um elemento x `a sua chave k = h(x).

Diego de Freitas Aranha – IC/UNICAMP

Tabelas de hash

Tabelas de hash
A tabela ´e implementada como um vetor de m posi¸c˜oes em que cada posi¸c˜ao armazena um subconjunto de U.

Diego de Freitas Aranha – IC/UNICAMP

Tabelas de hash

Tabelas de hash

Vantagem
Se K ´e o conjunto das chaves armazenadas, a tabela requer espa¸co
Θ(|K |) ao inv´es de Θ(|U|).
Desvantagens
Colis˜ ao: duas chaves podem ser mapeadas para a mesma posi¸c˜ao! A busca na tabela requer O(1) no caso m´edio, mas O(n) no pior caso.

Diego de Freitas Aranha – IC/UNICAMP

Tabelas de hash

Relacionados

  • Hash
    285 palavras | 2 páginas
  • Hash
    2159 palavras | 9 páginas
  • Hash
    387 palavras | 2 páginas
  • Hash
    389 palavras | 2 páginas
  • Hash
    4057 palavras | 17 páginas
  • Hash
    1179 palavras | 5 páginas
  • Tabelas HASH
    1019 palavras | 5 páginas
  • Hash
    485 palavras | 2 páginas
  • Hash
    936 palavras | 4 páginas
  • Hash
    266 palavras | 2 páginas