22

13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

13 � Hashing Interno (parte 1)SCC501 - Introdução à Ciência de Computação II

Paulo H. R. [email protected]

Prof. Moacir Ponti Jr.www.icmc.usp.br/~moacir

Instituto de Ciências Matemáticas e de Computação � USP

2010/2

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 1 / 22

Page 2: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Sumário

1 Contextualização

2 Motivação

3 Tabela Hash

4 Tratamento de Colisões

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 2 / 22

Page 3: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Busca, inserção e remoção em vetores

Métodos de busca estudados até agora: Comparação de chaves

Valor relativo de cada chave

Tiramos proveito da ordenação

Custo

Ordenação: O(n � log(n)) ou O(n)Busca: O(log(n))Inserção?Remoção?

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 3 / 22

Page 4: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Tabela Hash ou de Espalhamento ou de Dispersão

Valor absoluto das chaves

Não compara, de�ne valor (função)

Atingir diretamente a posição

Em outras palavras. . .

O(1)

Intuitivo

Fazemos com frequência. . .

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 4 / 22

Page 5: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Acesso direto (1/2)

Indexar elementos em vetores

01 03 00 04 07

02

03

04

05

06

07

00

01

chaves

tabela

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 5 / 22

Page 6: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Acesso direto (2/2)

Limitações

Elementos não numéricos

Quantidade de espaço vazio

Frequência de atualizações

Exemplo: Dicionários

Conjunto de palavras e signi�cados

Diversas aplicações práticas (e.g., pré-processamento)

Necessidade de acesso direto (e�ciência)

�Volátil�

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 6 / 22

Page 7: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Conceitos (1/4)

Ideia Central

Utilizar uma função, aplicada a [parte] da informação (i.e., à chave), paradevolver o índice onde a informação deve [deveria] ser armazenada.

A função é chamada função de espalhamento (ou função hash)

A estrutura de dados é a tabela de espalhamento (ou tabela hash)

O índice também é chamado de endereço base

A posição onde a chave é alocada recebe o nome de compartimento

(ou bucket)

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 7 / 22

Page 8: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Conceitos (2/4)

Função de Espalhamento

Uma função de espalhamento h() transforma uma chave x em umendereço-base h(x) da tabela hash.

Função hash: Função injetora

Na prática:

E se h(x) estiver ocupado?Não há garantias de injetividade: pode existir y 6= x tal que

h(y) = h(x)

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 8 / 22

Page 9: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Conceitos (3/4)

chaves

tabela78 60 96 59 13

00

01

02

03

04

>.<

13

60

96

chave mod 5

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 9 / 22

Page 10: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Conceitos (4/4)

Idealmente:

Número baixo de colisões

Facilmente computável

Uniforme

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 10 / 22

Page 11: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Tratamento de Colisões

Fator de carga (número esperado de espaços ocupados):

� =n

m

Menor fator de carga ! Menor número de colisões

Sempre pode haver uma colisão

Previsão de tratamento de colisões

Endereçamento aberto

Encadeamento

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 11 / 22

Page 12: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Tratamento de Colisões por Endereçamento Aberto (1/3)

Ideia básica

Calcular novo endereço para chaves sinônimas

Em caso de colisão, calcula-se o novo índice (novo endereço base)

Processo iterativo, enquanto a chave não for armazenada

Pode-se utilizar vetor circular

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 12 / 22

Page 13: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Tratamento de Colisões por Endereçamento Aberto (2/3)

Over�ow progressivo

Sondagem linear

Sondagem quadrática

Rehash � Aplicar segunda função hash

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 13 / 22

Page 14: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Tratamento de Colisões por Endereçamento Aberto (3/3)

Sondagem linear

Todas posições da tabela são checadas

rh(h(x)) = (h(x) + k) mod m

0 � k � m � 1

Longos trechos consecutivos podem ser ocupados

Sondagem quadrática

Diversi�ca sequência de endereços

rh(h(x)) = (h(x) + c1 � k + c2 � k2) mod m

0 � k � m � 1

c1 e c2 são constantes, c2 6= 0

Agrupamento ocorre com menos frequência

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 14 / 22

Page 15: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Tratamento de Colisões por Encadeamento

Mais natural

Armazena chaves sinônimas em listas encadeadas

Duas implementações

�Externo� à tabela

�Interno� à tabela

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 15 / 22

Page 16: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Encadeamento Externo (1/2)

m listas encadeadasEndereço base: cabeça da listaBusca, inserção e remoção em listas encadeadas

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 16 / 22

Page 17: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Encadeamento Externo (2/2)

Melhor caso (inserir): O(1)

Pior caso (buscar): O(n)

Pode-se inserir ordenado para reduzir a busca

Deve-se questionar: Qual operação será realizada mais vezes?

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 17 / 22

Page 18: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Encadeamento Interno (1/3)

Divisão da tabela: p + s = m

Função de espalhamento busca endereços em [0; p � 1]

Cada posição tem dois campos

Armazenamento da chave

Ponteiro para próximo sinônimo

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 18 / 22

Page 19: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Encadeamento Interno (2/3)

Pode degenerar em uma lista encadeada

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 19 / 22

Page 20: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Encadeamento Interno (3/3)

Pode-se, alternativamente, não diferenciar as duas regiões

Problema: colisões secundárias

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 20 / 22

Page 21: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Leituras Recomendadas I

ROSA, J. L. G.Métodos de Busca.Slides de aula SCC-201, ICMC-USP.

SHEWCHUK, J.Hash Table � Data Structures University of California, Berkeley..Disponível em: http://www.youtube.com/watch?v=UPo-M8bzRrc

ZIVIANI, N.Projeto de Algoritmos (Capítulo 5). 3.ed..Cengage Learning

CORMEN, T. H., LEISERSON, C. E., RIVEST, R. L., STEIN, C.Introduction to Algorithms.MIT Press, 2001

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 21 / 22

Page 22: 13 Hashing Interno (parte 1) - USPwiki.icmc.usp.br/images/7/7f/ICC2_13.Hashing_part1.pdf · 2018-09-25 · Paulo e Moacir (ICMC USP) Hashing (parte 1) 2010/2 7 / 22. Conceitos (2/4)

Leituras Recomendadas II

LEVITIN, A. V.Introduction to the Design and Analysis of Algorithms (Capítulo 7),

1.ed..Addison-Wesley Longman Publishing Co., Inc., 2002.

Szwarc�ter, J. L., Markenzon, L.Estruturas de Dados e seus Algoritmos (Capítulo 8), 2.ed.

LTC Editora, 1994.

NONATO, L. G.Material da disciplina SCE5763 � Tipos e Estrutura de Dados.www.lcad.usp.br/~nonato/ED/EDpos.html, 2000.

Paulo e Moacir (ICMC�USP) Hashing (parte 1) 2010/2 22 / 22