Hashing (Espalhamento) - ppt carregar
PublicouYasmin Lopes Alterado mais de 4 anos atrás
Apresentação em tema: "Hashing (Espalhamento)"— Transcrição da apresentação:
1 Hashing (Espalhamento)
Permite agilizar o processo de consulta de informações Não requer a realização de ordenação sobre um conjunto de dados: pesquisa binária e nem a utilização tabelas de índices Tornando a operação de inserção, tão rápida quanto a realização de consulta Internet: segurança na troca de mensagens pela Internet - integridade de uma mensagem Integridade de uma mensagem – assegurar que a mensagem original não foi modificada um byte sequer
2 Hashing - Internet
3 Hashing - Conceitos A função Ψ : E [1 ..n] mapea cada elemento de E à sua classe específica A função Ψ é denominada de função de espalhamento ou função de hashing O valor de hashing Ψ (x), indica a respectiva classe que contém o elemento x, ou seja, x ∈ Ψ (x). Cardinalidade de um conjunto C indica o número de elementos contidos em C, sendo representada por |C| Função ótima Abs(|Ci| - |Cj| ) ≤ 1, para 1 ≤ i < j ≤ n
4 Hashing - Exemplo E = { a, b, c, d, e, f, g, h,i,j}
Ψ é uma função hashing qualquer que realiza um espalhamento dos elementos de E em quatro classes distintas conforme abaixo: Ψ(a) = 1 Ψ(c) = 3 Ψ(e) = 1 Ψ(g) = 3 Ψ(i) = 4 Ψ(b) = 2 Ψ(d) = 3 Ψ(f) = 2 Ψ(h) = 1 Ψ(j) = 4 Então, temos as seguintes classes com as respectivas cardinalidades: C1={a,e,h} |C1|=3 C2={b,f} |C2|=2 C3={c,d,g} |C3|=3 C4={i,j} |C4|=2
5 Hashing - Exemplo Ocorreu uma função de hashing ótima
Todas as 4 classes tem praticamente o mesmo número de elementos, ou seja, o espalhamento foi uniforme Um espalhamento é perfeito, se a função de hashing para um conjunto E, resultar em |E| classes distintas e cada uma dessas classes conter unicamente um elemento de E Se existem x∈E e y∈E, tal que x ≠ y mas Ψ(x) =Ψ(y), dizemos que x e y são sinônimos ou seja ocorreu a chamada colisão
6 Hashing - Representação
Pode-se utilizar um vetor de listas Cada índice do vetor representa uma das possíveis classes Cada lista armazena os elementos de determinada classe
7 Hashing - Função
8 Hashing - Função Função de hashing ideal: capaz de mapear n chaves em exatamente n endereços, sem a possibilidade de ocorrer de uma colisão sequer De forma prática, é satisfatório obter funções de hashing capazes de resultar num mapeamento razoável, distribuindo as n chaves de forma aproximadamente uniforme entre m endereços, tal que m < n (significando que sempre teremos colisões)
9 Hashing – Principais Tipos
Método direto: como o próprio nome indica, o valor do hashing é obtido sem nenhuma manipulação de algoritmo. Exemplo: histograma. Método da subtração: algumas vezes temos chaves que são consecutivas mas não começam de um. Exemplo: armazenar dados dos últimos 10 anos.
10 Hashing – Principais Tipos
Método da divisão inteira: a idéia é obter o resto da divisão da chave pelo tamanho da lista. Se o tamanho da lista for um número primo, são produzidas poucas colisões. Exemplo: divisão por 7. Extração de dígito: são extraídos dígitos selecionados da chave e utilizados como endereço. Exemplo: RA dos alunos. Método quadrático: a chave é elevada ao quadrado e o endereço é selecionado do meio do quadrado no número.
11 Hashing – Principais Tipos
Método do folding: a chave é divida em partes cujo tamanho casa com o endereço requerido. Então a parte da esquerda e da direita são somadas a parte central. O que passar do tamanho disponível para o endereço, é descartado. Método da rotação: geralmente não é usado de forma independente, ao invés disso, é utilizado em combinação com outros métodos de hashing. Geralmente métodos simples de hashing têm a tendência de criar sinônimos. Então o método da rotação pode ser utilizado para minimizar o aparecimento das colisões, colocando o último caracter na frente da chave.
12 Hashing – Principais Tipos
Método pseudo-aleatório: a chave é usada como semente num gerador de número aleatório. O número aleatório obtido é ajustado para a faixa de endereço desejada usando o método da divisão.