O documento discute organização direta de arquivos usando hashing. Hashing mapeia chaves de registros para endereços de armazenamento usando uma função hash, permitindo acesso direto aos registros. Isso evita varredura sequencial. Colisões ocorrem quando chaves diferentes mapeiam para o mesmo endereço.
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
EDII08 [2012.1] Arquivos Diretos - Hashing
1. Hashing
Organização Direta de
Arquivos
Unida 0
de 8
UFS - DComp - Prof. Kenia Kodel 1
2. Arquivos Diretos
Os principais métodos
de organização e acesso
de registros em arquivos
diretos são:
• Dicionário de Dados
• Hashing ou Endereçamento Indireto.
UFS - DComp - Prof. Kenia Kodel
3. Como já dito sobre
Arquivos Diretos
Diferente da organização sequencial, onde os registros são
pesquisados um a um pela ordem de ocorrência, na
organização direta há uma relação definida entre o valor da
chave de um registro e seu endereço no dispositivo de
armazenamento (de acesso direto).
Nos arquivos com organização direta, os dados são
armazenados e recuperados através do uso da relação entre
os registros e seus respectivos endereços.
A busca por um determinado registro R não implica na
necessidade de varredura sequencial da base de dados. Esta
é efetuada através do acesso ao endereço de R, diretamente,
obtido a partir de sua chave de pesquisa.
A busca por um determinado registro R não implica na
necessidade de varredura sequencial da base de dados. Esta
é efetuada através do acesso ao endereço de R, diretamente,
obtido a partir de sua chave de pesquisa.
UFS - DComp - Prof. Kenia Kodel
4. Hashing
Como dito, o Hashing corresponde a um
dos principais métodos de organização e
acesso de registros em arquivos diretos.
Logo, há uma relação definida entre o
valor da chave de um registro e seu
endereço no dispositivo de
armazenamento (de acesso direto).
UFS - DComp - Prof. Kenia Kodel
5. Hashing
No hashing, adota-se uma função que,
a partir do valor de chave de um
registro R de dados, define-se o
provável endereço de R no arquivo:
f(chave) = endereço
UFS - DComp - Prof. Kenia Kodel
6. Hashing
No hashing, a relação chave e endereço dos
registros de uma arquivo (direto) é
estabalecida por uma função matemática.
f(chave) = endereço
Esta função é denominada função hash
ou função de mapeamento.
UFS - DComp - Prof. Kenia Kodel
7. Função Hashing
f(chave) = endereço
O endereço gerado com a aplicação da
função hash, a partir da chave de busca,
é denominado endereço base.
UFS - DComp - Prof. Kenia Kodel
8. Função Hashing
f(chave) = endereço
Com a aplicação do hashing, para se
efetuar uma operação sobre um registro
com chave de busca C, aplica-se a função
hash e obtém-se o endereço base E. De
posse deste endereço E, a base de dados
(arquivo) é acessada de forma direta.
UFS - DComp - Prof. Kenia Kodel
9. Função Hashing
f(chave) = endereço
Com a aplicação da função hash, para se efetuar uma operação
sobre um registro com chave de busca C, aplica-se a função
hash e obtém-se o endereço base E. De posse deste endereço
E, a base de dados (arquivo) é acessada de forma direta.
ue funç o usa?
ã r
Que caa erst s est funç o dev
r ct í ica a ã e
a esent r
pr a?
UFS - DComp - Prof. Kenia Kodel
10. Hashing
Considerando como exemplo um
sistema de consulta a preços de um
estabelecimento comercial:
CÓDIGO (BARRA) PRODUTO PREÇO FORNECEDOR VALIDADE
01 284 lápis 1.20 voyage 08/2049
02 935 apontador 1.50 dantena 08/2030
03 128 régua 2.20 xavier 06/2038
04 443 caneta 2.50 vitória 04/2041
05 339 caderno 6.50 voyage 04/2031
06 845 borracha 1.90 alba 08/2050
07 223 agenda 5.50 suzano 10/2060
08 695 resma A4 15.00 chamex 04/2042
09 241 calculadora 25.50 calc 05/2032
10 803 esquadro 2.30 vermelho 06/2080
UFS - DComp - Prof. Kenia Kodel
13. Hashing
Como efetuar a consulta ao
produto com código (chave de
busca) igual a 223?
E a consulta da chave com
código 16?
CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE
00 339 caderno 6.50 voyage 04/2031
01 443 caneta 2.50 vitória 04/2041
02 223 agenda 5.50 suzano 10/2060
03
04
05
...
12 935 apontador 1.50 dantena 08/2030
UFS - DComp - Prof. Kenia Kodel
14. Hashing
A base de dados original segue abaixo. No processo
inicial de cálculo dos endereços, propositadamente,
excluímos os produtos 128 e 845.
CÓDIGO (BARRA) PRODUTO PREÇO FORNECEDOR VALIDADE
01 284 lápis 1.20 voyage 08/2049
02 935 apontador 1.50 dantena 08/2030
03 128 régua 2.20 xavier 06/2038
04 443 caneta 2.50 vitória 04/2041
05 339 caderno 6.50 voyage 04/2031
06 845 borracha 1.90 alba 08/2050
07 223 agenda 5.50 suzano 10/2060
08 695 resma A4 15.00 chamex 04/2042
09 241 calculadora 25.50 calc 05/2032
10 803 esquadro 2.30 vermelho 06/2080
UFS - DComp - Prof. Kenia Kodel
15. Hashing
Aplicando a função hash:
f(chave)=chave mod 13, obtém-se os
endereços dos produtos constantes na
CÓDIGO PRODUTO PREÇO base abaixo.
FORNECEDOR VALIDADE CHAVE ENDEREÇO
01 284 lápis 1.20 voyage 08/2049 284 11
02 935 apontador 1.50 dantena 08/2030 935 12
03 128 régua 2.20 xavier 06/2038 128 11
04 443 caneta 2.50 vitória 04/2041 443 01
05 339 caderno 6.50 voyage 04/2031 339 00
06 845 borracha 1.90 alba 08/2050 845 00
07 223 agenda 5.50 suzano 10/2060 223 02
08 695 resma A4 15.00 chamex 04/2042 695 06
09 241 calculadora 25.50 calc 05/2032 241 07
10 803 esquadro 2.30 vermelho 06/2080 803 10
Oque háem comum ente os ender ç ger dos pel s cha es
r e os a a v
128 e 845?
16. Hashing
CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE Considerando os
01 284 lápis 1.20 voyage 08/2049 endereços obtidos a
02 935 apontador 1.50 dantena 08/2030 partir da aplicação da
03 443 caneta 2.50 vitória 04/2041 função hash
04 339 caderno 6.50 voyage 04/2031 f(chave)=chave mod
05 223 agenda 5.50 suzano 10/2060 13 como reorganizar a
base de dados, em
06 695 resma A4 15.00 chamex 04/2042
especial para acesso
07 241 calculadora 25.50 calc 05/2032 aos dados de chave
08 803 esquadro 2.30 vermelho 06/2080 845?
CHAVE ENDEREÇO CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE
284 11 00 339 caderno 6.50 voyage 04/2031
01 443 caneta 2.50 vitória 04/2041
935 12
02 223 agenda 5.50 suzano 10/2060
128 11 03
443 01 04
339 00 05
...
845 00 12 935 apontador 1.50 dantena 08/2030
223 02
... UFS - DComp - Prof. Kenia Kodel
17. Hashing
Como efetuar a consulta ao
produto com código (chave
de busca) igual a 845?
CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE
00 339 caderno 6.50 voyage 04/2031
01 443 caneta 2.50 vitória 04/2041
02 223 agenda 5.50 suzano 10/2060
03
04
05
...
12 935 apontador 1.50 dantena 08/2030
UFS - DComp - Prof. Kenia Kodel
18. Estouro ou Colisão
Dada uma chave C, a partir da
aplicação da função hash, obtém-se o
endereço E do registro que contém C. Mas
duas chaves distintas podem gerar um
mesmo endereço E.
A tentativa de armazenar um registro
num endereço já ocupado é denominado
estouro ou colisão.
UFS - DComp - Prof. Kenia Kodel
19. Hashing
Aplicando a função hash:
f(chave)=chave mod 13, obtém-se os
endereços dos produtos constantes na
base abaixo. CHAVE ENDEREÇO
CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE
284 11
01 284 lápis 1.20 voyage 08/2049 935 12
02 935 apontador 1.50 dantena 08/2030
128 11
03 128 régua 2.20 xavier 06/2038
443 01
04 443 caneta 2.50 vitória 04/2041
339 00
05 339 caderno 6.50 voyage 04/2031
845 00
06 845 borracha 1.90 alba 08/2050
223 02
07 223 agenda 5.50 suzano 10/2060
695 06
08 695 resma A4 15.00 chamex 04/2042
241 07
09 241 calculadora 25.50 calc 05/2032
803 10
10 803 esquadro 2.30 vermelho 06/2080
Acha e 128col com a28 . Eacha e 8 5 col com a3 9.
v idiu 4 v 4 idiu 3
20. Hashing
Aplicando a função hash:
f(chave)=chave mod 13, obtém-se os
endereços dos produtos constantes na
base abaixo. CHAVE ENDEREÇO
CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE
284 11
01 284 lápis 1.20 voyage 08/2049
935 12
02 935 apontador 1.50 dantena 08/2030
128 11
03 128 régua 2.20 xavier 06/2038
443 01
04 443 caneta 2.50 vitória 04/2041
339 00
05 339 caderno 6.50 voyage 04/2031
845 00
06 845 borracha 1.90 alba 08/2050
223 02
07 223 agenda 5.50 suzano 10/2060
695 06
08 695 resma A4 15.00 chamex 04/2042
241 07
09 241 calculadora 25.50 calc 05/2032
803 10
10 803 esquadro 2.30 vermelho 06/2080
A ece acol ã de no má dua cha es num mesmo
cont is o ximo s v
ender ç J ifique:
e o? ust
21. Hashing
Sendo assim, para uso efetivo do
Hashing, é preciso decidir como tratar as
colisões/estouros.
As soluções clássicas mantém uma
estrutura auxiliar, denominada tabela hash,
que relaciona chaves e endereços; para
identificação, em especial, dos endereços
efetivos das chaves que sofrem colisão.
UFS - DComp - Prof. Kenia Kodel
22. Hashing Perfeito
Caso seja identificada uma função de
mapeamento que garanta a inexistência de
colisões, não é preciso manter a tabela
hash; o acesso a qualquer chave pode ser
efetuado estritamente pela aplicação da
função. Neste caso teríamos o que se
denomina hashing perfeito.
UFS - DComp - Prof. Kenia Kodel
23. Hashing
As funções de mapeamento clássicas
ainda não evitam estouros; assim, o
hashing é composto por dois processo:
1. aplicação da função de mapeamento
2. tratamento de colisão
UFS - DComp - Prof. Kenia Kodel
24. Função de Mapeamento
Uma função hash deve mapear chaves em
inteiros dentro do intervalo [0..M-1]
sendo M o número máximo de registros a
ser manipulado pela aplicação, e/ou o
espaço de memória disponível para a
aplicação.
UFS - DComp - Prof. Kenia Kodel
25. Funções de Mapeamento
São funções de mapeamento clássicas:
Resto da Divisão onde:
f(chave)=chave mod M
sendo M o tamanho de memória
disponível para armazenamento e/ou
número máximo de dados manipulados
pela aplicação computacional.
UFS - DComp - Prof. Kenia Kodel
26. Funções de
Mapeamento
Resto da Divisão Variante onde:
(chave)=chave mod P
UFS - DComp - Prof. Kenia Kodel
28. Tratamento de
Colisão
Definem o destino dos registros
que sofrem colisão.
O métodos clássicos de tratamento
de colisões são:
1. Coalescido
2. Amostragem Linear
3. Duplo
UFS - DComp - Prof. Kenia Kodel
29. Hashing Coalescido
Havendo colisão, a chave associada
ao seu respectivo endereço base, é
relacionada a este, em tabela hash,
por meio de um link. Desta forma, na
tabela hash são mantidos: chave,
endereço e link. E a chave colidida é
armazenada na primeira posição livre
localizada após o seu endereço base.
UFS - DComp - Prof. Kenia Kodel
30. Hashing Aplicando a função hash:
f(chave)=chave mod 13, e hashing
Coalescido coalescido, montar tabela hash:
Tabela
CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE CHAVE Hash
ENDEREÇO
CHAVE LINK
01 284 lápis 1.20 voyage 08/2049 284 11
00 -1
02 935 apontador 1.50 dantena 08/2030 935 12
01 -1
03 128 régua 2.20 xavier 06/2038 128 11
04 443 caneta 2.50 vitória 04/2041 443 01
02 -1
05 339 caderno 6.50 voyage 04/2031 03 -1
339 00
06 845 borracha 1.90 alba 08/2050 04 -1
845 00
07 223 agenda 5.50 suzano 10/2060 223 02
05 -1
08 695 resma A4 15.00 chamex 04/2042 06 -1
695 06
09 241 calculadora 25.50 calc 05/2032 07 -1
241 07
10 803 esquadro 2.30 vermelho 06/2080 08 -1
803 10
09 -1
Hashing Coalescido: Havendo colisão, a chave associada ao seu
respectivo endereço base, é relacionada a este, em tabela hash, 10 -1
por meio de um link. Desta forma, na tabela hash são mantidos: 11 -1
chave, endereço e link. E a chave colidida é armazenada na
primeira posição livre localizada após o seu endereço base. 12 -1
31. Hashing Aplicando a função hash:
f(chave)=chave mod 13, e hashing
Coalescido coalescido, obtém-se a tabela hash:
CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE Tabela
Hash
01 284 lápis 1.20 voyage 08/2049 CHAVE LINK
02 935 apontador 1.50 dantena 08/2030 00 128 02
03 128 régua 2.20 xavier 06/2038 01 443 -1
04 443 caneta 2.50 vitória 04/2041 02 339 03
05 339 caderno 6.50 voyage 04/2031 03 845 04
06 845 borracha 1.90 alba 08/2050 04 223 -1
07 223 agenda 5.50 suzano 10/2060 05 -1
08 695 resma A4 15.00 chamex 04/2042 06 695 -1
09 241 calculadora 25.50 calc 05/2032 07 241 -1
10 803 esquadro 2.30 vermelho 06/2080 08 -1
09 -1
Oaquiv pr ldev serr
r o incipa e emodel do?
a 10 803 -1
Como l l r(consula)o r r 8 3e 223
ocaiza t r egisto 0 ? 11 284 00
12 935 -1
32. Hashing Aplicando a função hash:
f(chave)=chave mod 13, e hashing
Coalescido coalescido, obtém-se a tabela hash e
CÓDIGO PRODUTO o arquivo de dados abaixo. Tabela
PREÇO FORNECEDOR VALIDADE
Hash
00 128 régua 2.20 xavier 06/2038 CHAVE LINK
01 443 caneta 2.50 vitória 04/2041 00 128 02
02 339 caderno 6.50 voyage 04/2031 01 443 -1
03 845 borracha 1.90 alba 08/2050 02 339 03
04 223 agenda 5.50 suzano 10/2060 03 845 04
05 04 223 -1
06 695 resma A4 15.00 chamex 04/2042 05 -1
07 241 calculadora 25.50 calc 05/2032 06 695 -1
08 07 241 -1
09 08 -1
10 803 esquadro 2.30 vermelho 06/2080 09 -1
11 284 lápis 1.20 voyage 08/2049 10 803 -1
12 935 apontador 1.50 dantena 08/2030 11 284 00
12 935 -1
Diz-se que o registro com chave 223 tem endereço
base 02, e endereço efetivo 04.
33. Hashing Aplicando a função hash:
f(chave)=chave mod 13, e hashing
Coalescido coalescido, obtém-se a tabela hash e
CÓDIGO PRODUTO o arquivo de dados abaixo. Tabela
PREÇO FORNECEDOR VALIDADE
00 128 régua 2.20 xavier 06/2038 Hash
CHAVE LINK
01 443 caneta 2.50 vitória 04/2041
02 339 caderno 6.50 voyage 04/2031 00 128 02
03 845 borracha 1.90 alba 08/2050 01 443 -1
04 223 agenda 5.50 suzano 10/2060 02 339 03
05
03 845 04
06 695 resma A4 15.00 chamex 04/2042
04 223 -1
07 241 calculadora 25.50 calc 05/2032
08
05 -1
09 06 695 -1
10 803 esquadro 2.30 vermelho 06/2080 07 241 -1
11 284 lápis 1.20 voyage 08/2049 08 -1
12 935 apontador 1.50 dantena 08/2030 09 -1
10 803 -1
O método de tratamento de colisão em estudo é denominado
coalescido, por produzir uma coalha entre os dados, em meio 11 284 00
aos endereços base e efetivo. Observar a chave 845, de 12 935 -1
endereço 00, onde consta o 128, de endereço base 11.
34. Hashing Aplicando a função hash:
f(chave)=chave mod 13, e hashing
Coalescido coalescido, obtém-se a tabela hash e
CÓDIGO PRODUTO PREÇO arquivo de dados abaixo.
o FORNECEDOR VALIDADE Tabela
Hash
00 128 régua 2.20 xavier 06/2038 CHAVE LINK
01 443 caneta 2.50 vitória 04/2041 00 128 02
02 339 caderno 6.50 voyage 04/2031 01 443 -1
03 845 borracha 1.90 alba 08/2050 02 339 03
04 223 agenda 5.50 suzano 10/2060 03 845 04
05 04 223 -1
06 695 resma A4 15.00 chamex 04/2042 05 -1
07 241 calculadora 25.50 calc 05/2032 06 695 -1
08 07 241 -1
09 08 -1
10 803 esquadro 2.30 vermelho 06/2080 09 -1
11 284 lápis 1.20 voyage 08/2049 10 803 -1
12 935 apontador 1.50 dantena 08/2030 11 284 00
12 935 -1
Onde r at bel ha Como édefinido o t ma dat bel ha Como édefinida
eside a a sh? a nho a a sh?
afunç o ha
ã sh?
35. Além da consulta, que outras
operações são necessárias
para manutenção de dados
mantidos em arquivos diretos
organizados por hashing?
UFS - DComp - Prof. Kenia Kodel
37. Hashing Aplicando a função hash:
f(chave)=chave mod 13, e hashing
Coalescido coalescido, obtém-se a tabela hash e
CÓDIGO PRODUTO PREÇO arquivo de dados abaixo.
o FORNECEDOR VALIDADE Tabela
Hash
00 128 régua 2.20 xavier 06/2038 CHAVE LINK
01 443 caneta 2.50 vitória 04/2041 00 128 02
02 339 caderno 6.50 voyage 04/2031 01 443 -1
03 845 borracha 1.90 alba 08/2050 02 339 03
04 223 agenda 5.50 suzano 10/2060 03 845 04
05 04 223 -1
06 695 resma A4 15.00 chamex 04/2042 05 -1
07 241 calculadora 25.50 calc 05/2032 06 695 -1
08 07 241 -1
09 08 -1
10 803 esquadro 2.30 vermelho 06/2080 09 -1
11 284 lápis 1.20 voyage 08/2049 10 803 -1
12 935 apontador 1.50 dantena 08/2030 11 284 00
12 935 -1
Como incl o r r de cha e 0 Eo 11?
uir egist o v 9?
38. Descrev a oper ç o de ins erç ão
er aã
em a o com orga ç o diret
rquiv niza ã a
ma ido porha
nt shing.
UFS - DComp - Prof. Kenia Kodel
39. Hashing Aplicando a função hash:
f(chave)=chave mod 13, e hashing
Coalescido coalescido, obtém-se a tabela hash e
CÓDIGO PRODUTO PREÇO arquivo de dados abaixo.
o FORNECEDOR VALIDADE Tabela
Hash
00 128 régua 2.20 xavier 06/2038 CHAVE LINK
01 443 caneta 2.50 vitória 04/2041 00 128 02
02 339 caderno 6.50 voyage 04/2031 01 443 -1
03 845 borracha 1.90 alba 08/2050 02 339 03
04 223 agenda 5.50 suzano 10/2060 03 845 04
05 04 223 -1
06 695 resma A4 15.00 chamex 04/2042 05 -1
07 241 calculadora 25.50 calc 05/2032 06 695 -1
08 07 241 -1
09 08 -1
10 803 esquadro 2.30 vermelho 06/2080 09 -1
11 284 lápis 1.20 voyage 08/2049 10 803 -1
12 935 apontador 1.50 dantena 08/2030 11 284 00
12 935 -1
Como excl o r r de cha e 24 Eo 128
uir egisto v 1? ?
40. Descrev aoper ç o de exc lus ão
er aã
em a o com orga ç o diret
rquiv niza ã a
ma ido porha
nt shing.
UFS - DComp - Prof. Kenia Kodel
41. Hashing Aplicando a função hash:
f(chave)=chave mod 13, e hashing
Coalescido coalescido, obtém-se a tabela hash e
CÓDIGO PRODUTO PREÇO arquivo de dados abaixo.
o FORNECEDOR VALIDADE Tabela
Hash
00 128 régua 2.20 xavier 06/2038 CHAVE LINK
01 443 caneta 2.50 vitória 04/2041 00 128 02
02 339 caderno 6.50 voyage 04/2031 01 443 -1
03 845 borracha 1.90 alba 08/2050 02 339 03
04 223 agenda 5.50 suzano 10/2060 03 845 04
05 04 223 -1
06 695 resma A4 15.00 chamex 04/2042 05 -1
07 241 calculadora 25.50 calc 05/2032 06 695 -1
08 07 241 -1
09 08 -1
10 803 esquadro 2.30 vermelho 06/2080 09 -1
11 284 lápis 1.20 voyage 08/2049 10 803 -1
12 935 apontador 1.50 dantena 08/2030 11 284 00
12 935 -1
Como at a o r r de cha e 223
ler r egist o v ?
42. O ha shing apresent v nt gens e/ desv nt gens em
a aa ou aa
rel ç o a dicionáio de da J ifique suarespost :
aã o r dos? ust a
C uidando
do
jardim!!!
UFS - DComp - Prof. Kenia Kodel
43. Consider ndo:
a
• as cha es 34, 12, 25, 49, 45, 13e 92 e
v
• afunção de mapeamento f(chave)= chave mod 11;
esquemaiza at bel ha e o a o de da (com sit ç o probl hipot t a da
t r a a sh rquiv dos ua ã ema éica dequa )
obt apat do taa o de col ã coaescido.
idos rir r t ment is o l
C uidando
do
jardim!!!
UFS - DComp - Prof. Kenia Kodel
44. Pat da respost fina da à quest o a er ,
rindo a l da ã nt ior
esquemaiza a excl õ da cha es 3 e 4
t r s us es s v 4 9.
C uidando
do
jardim!!!
UFS - DComp - Prof. Kenia Kodel
45. Hashing por Amostragem Linear
Neste método o registro colidido é
armazenado na primeira posição livre
encontrada a partir de ponto de colisão.
Vale destacar que a busca por posição livre
considera a estrutura circular.
UFS - DComp - Prof. Kenia Kodel
46. Aplicando a função hash:
Hashing por f(chave)=chave mod 13, e hashing por
Amostragem Linear amostragem linear, montar tabela hash:
Tabela
CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE CHAVE Hash
ENDEREÇO
CHAVE
01 284 lápis 1.20 voyage 08/2049 284 11
00
02 935 apontador 1.50 dantena 08/2030 935 12
01
03 128 régua 2.20 xavier 06/2038 128 11
04 443 caneta 2.50 vitória 04/2041 443 01
02
05 339 caderno 6.50 voyage 04/2031 03
339 00
06 845 borracha 1.90 alba 08/2050 04
845 00
07 223 agenda 5.50 suzano 10/2060 223 02
05
08 695 resma A4 15.00 chamex 04/2042 06
695 06
09 241 calculadora 25.50 calc 05/2032 07
241 07
10 803 esquadro 2.30 vermelho 06/2080 08
803 10
09
Hashing Coalescido: O registro colidido é armazenado na 10
primeira posição livre encontrada a partir de ponto de 11
colisão. Vale destacar que a busca por posição livre
considera a estrutura circular. 12
47. Aplicando a função hash:
Hashing por f(chave)=chave mod 13, e hashing por
Amostragem Linear amostragem linear, montar tabela hash:
Tabela
CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE Hash
CHAVE
01 284 lápis 1.20 voyage 08/2049
00 128
02 935 apontador 1.50 dantena 08/2030
01 443
03 128 régua 2.20 xavier 06/2038
04 443 caneta 2.50 vitória 04/2041 02 339
05 339 caderno 6.50 voyage 04/2031 03 845
06 845 borracha 1.90 alba 08/2050 04 223
07 223 agenda 5.50 suzano 10/2060 05
08 695 resma A4 15.00 chamex 04/2042 06 695
09 241 calculadora 25.50 calc 05/2032 07 241
10 803 esquadro 2.30 vermelho 06/2080 08
09
Como ficao aquiv de da
r o dos? 10 803
11 284
12 935
49. Hashing por Aplicando a função hash:
f(chave)=chave mod 13, e hashing por
Amostragem Linear amostragem linear, montar tabela hash:
Tabela
PRODUTO PREÇO FORNECEDOR VALIDADE
CÓDIGO
Hash
00 128 régua 2.20 xavier 06/2038 CHAVE
01 443 caneta 2.50 vitória 04/2041 00 128
02 339 caderno 6.50 voyage 04/2031 01 443
03 845 borracha 1.90 alba 08/2050 02 339
04 223 agenda 5.50 suzano 10/2060 03 845
05 04 223
06 695 resma A4 15.00 chamex 04/2042 05
07 241 calculadora 25.50 calc 05/2032 06 695
08 07 241
09 08
10 803 esquadro 2.30 vermelho 06/2080 09
11 284 lápis 1.20 voyage 08/2049 10 803
12 935 apontador 1.50 dantena 08/2030 11 284
12 935
Como consula o r r de cha e 3 9? Eo de cha e 10 Como incl os r r de cha es 0
t r egisto v 3 v ? uir egistos v 9
e 23 ?
50. Hashing por Aplicando a função hash:
f(chave)=chave mod 13, e hashing por
Amostragem Linear amostragem linear, montar tabela hash:
Tabela
PRODUTO PREÇO FORNECEDOR VALIDADE
CÓDIGO
Hash
00 128 régua 2.20 xavier 06/2038 CHAVE
01 443 caneta 2.50 vitória 04/2041 00 128
02 339 caderno 6.50 voyage 04/2031 01 443
03 845 borracha 1.90 alba 08/2050 02 339
04 223 agenda 5.50 suzano 10/2060 03 845
05 04 223
06 695 resma A4 15.00 chamex 04/2042 05
07 241 calculadora 25.50 calc 05/2032 06 695
08 07 241
09 08
10 803 esquadro 2.30 vermelho 06/2080 09
11 284 lápis 1.20 voyage 08/2049 10 803
12 935 apontador 1.50 dantena 08/2030 11 284
12 935
Como excl os r r de cha es 24 e 128
uir egistos v 1 ?
51. Háv nt gens e/ desv nt gens do méodo de t aa o
aa ou a a t r t ment
de col ã por a r gem l r em rel ç o a
is o mosta inea, aã o
coaescido? J ifique:
l ust
C uidando
do
jardim!!!
UFS - DComp - Prof. Kenia Kodel
52. Consider ndo:
a
(2)s chaves: 34– 12 – 49– 31 – 45 – 13e 92,
a
(3)função de mapeamento: f(cha e)= cha e mod 11
a v v
(4)método de tratamento de colisão a ragem linea; esquematiza atabela
o most r r
ha e o a o de da (rel t o àsit ç o hipot t )cor
sh rquiv dos aiv ua ã éica respondent
e.
C uidando
do
jardim!!!
UFS - DComp - Prof. Kenia Kodel
53. Pat darespost da àquest o a er , esquemaiza
rindo a da ã nt ior t r
a excl õ da cha es 3 e 4
s us es s v 4 9.
C uidando
do
jardim!!!
UFS - DComp - Prof. Kenia Kodel
54. Hashing Duplo
Método variante do Amostragem Linear que
apresenta duas funções: uma para mapeamento e
outra para calcular o deslocamento dos registro
colididos na tabela hash para localização de
posição livre, de forma a melhor distribuir os
registros na ocupação da estrutura. Na
Amostragem Linear, pode-se dizer que a o
deslocamento é constante e de uma unidade.
UFS - DComp - Prof. Kenia Kodel
55. Consider ndo:
a
(2) a cha es: 3 – 12 – 4 – 3 – 4 – 13e 92
s v 4 9 1 5
(3) afunç o de ma ment
ã pea o:
f(chave)=chave mod 11
(4)o méodo de taa o de col ã dupl
t r t ment is o o
(5)afunç o de desl ment
ã oca o:
f(chave) = (chave mod 3)+1
esquemaiza at bel ha e o a o de da cor
t r a a sh rquiv dos respondent
e.
UFS - DComp - Prof. Kenia Kodel
56. Efet raconsulaa regist com cha e 4 e
ua t os ros v 9
45.
UFS - DComp - Prof. Kenia Kodel
57. Efet rainser ã do regist com cha e
ua ço ro v
14.
UFS - DComp - Prof. Kenia Kodel
58. Efet raexcl ã do regist com cha e
ua us o ro v
3.
4
UFS - DComp - Prof. Kenia Kodel
60. Rehashing
O rehashing, como o próprio
nome sugere, consiste em
refazer a estrutura hash.
UFS - DComp - Prof. Kenia Kodel
61. Rehashing
Dada uma estrutura hash inicial, de
tamanho N a ser transformada numa
estrutura de tamanho T:
Se T>N o objetivo é diminuir a
frequência de colisões e estouros.
Se T=N o objetivo é efetuar uma
limpeza, reorganizar a estrutura hash.
Se T<N o objetivo é poupar espaço.
UFS - DComp - Prof. Kenia Kodel
62. Rehashing
A tabela hash e o arquivo de dados
devem ser ajustados e, no processo,
deve ser criada uma estrutura
auxiliar para controle das alterações
efetuadas.
UFS - DComp - Prof. Kenia Kodel
63. Consider ndo:
a
2. Cha es(endereç 27(5)– 18 – 29(7)– 28 – 3 – 13
v os): (7) (6) 9(6) (2)
– 16(5)– 4 – 4
2(9) 6(2)
3. Funç o ha inicia: f(cha e)= cha e mod 11
ã sh l v v
4. Taa o de col ã pora r gem l r
r t ment is o mosta inea
5. Funç o ha de expa ã g(cha e)= cha e mod 19
ã sh ns o: v v
6. Cha es(nov endereç 27(8 – 18 )– 29(10 – 28 – 3
v os os): ) (18 ) (9) 9(1)
– 13 )– 16(16)– 4 )– 4 )
(13 2(4 6(8
Efet rprocesso de reha
ua shing.
UFS - DComp - Prof. Kenia Kodel
[Fazer este coletivamente.]
64. Descrev os pa ger is de execuç o do processo de
a ssos a ã
rehashing.
C uidando
do
jardim!!!
UFS - DComp - Prof. Kenia Kodel
65. Esquemaiza o reha de:
t r shing
(2) ves: 11 – 5 – 23– 22 – 38– 55 – 39;
cha
(3) ção inicial: f(chave)= cha e mod 11;
fun v
(4) ção de expansão: f(chave)= chave mod 17;
fun
(5)atamento de colisão: a ra linea.
tr most gem r
C uidando
do
jardim!!!
UFS - DComp - Prof. Kenia Kodel
66. Complementar
Estudos...
File Organization and Processing
Allan L Tharp
Capítulo 3
Direct File Organization
66 UFS - DComp - Prof. Kenia Kodel
67. Próximo passo...
Implementação com Aplicação
de Arquivos Diretos
Dicionáio ou Ha
r shing
UFS - DCOMP - Prof. Kenia 67
Kodel