EDII08 [2012.1] Arquivos Diretos - Hashing

1,341 views

Published on

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,341
On SlideShare
0
From Embeds
0
Number of Embeds
18
Actions
Shares
0
Downloads
80
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

EDII08 [2012.1] Arquivos Diretos - Hashing

  1. 1. Hashing Organização Direta de ArquivosUnida 0 de 8 UFS - DComp - Prof. Kenia Kodel 1
  2. 2. Arquivos DiretosOs principais métodosde organização e acessode registros em arquivosdiretos são:• Dicionário de Dados• Hashing ou Endereçamento Indireto. UFS - DComp - Prof. Kenia Kodel
  3. 3. Como já dito sobreArquivos 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. 4. HashingComo dito, o Hashing corresponde a umdos principais métodos de organização eacesso de registros em arquivos diretos.Logo, há uma relação definida entre ovalor da chave de um registro e seuendereço no dispositivo dearmazenamento (de acesso direto). UFS - DComp - Prof. Kenia Kodel
  5. 5. HashingNo hashing, adota-se uma função que,a partir do valor de chave de umregistro R de dados, define-se oprovável endereço de R no arquivo: f(chave) = endereço UFS - DComp - Prof. Kenia Kodel
  6. 6. HashingNo hashing, a relação chave e endereço dos registros de uma arquivo (direto) é estabalecida por uma função matemática. f(chave) = endereçoEsta função é denominada função hash ou função de mapeamento. UFS - DComp - Prof. Kenia Kodel
  7. 7. Função Hashing f(chave) = endereçoO endereço gerado com a aplicação dafunção hash, a partir da chave de busca,é denominado endereço base. UFS - DComp - Prof. Kenia Kodel
  8. 8. Função Hashing f(chave) = endereçoCom a aplicação do hashing, para seefetuar uma operação sobre um registrocom chave de busca C, aplica-se a funçãohash e obtém-se o endereço base E. Deposse deste endereço E, a base de dados(arquivo) é acessada de forma direta. UFS - DComp - Prof. Kenia Kodel
  9. 9. Função Hashing f(chave) = endereçoCom a aplicação da função hash, para se efetuar uma operaçãosobre um registro com chave de busca C, aplica-se a funçãohash e obtém-se o endereço base E. De posse deste endereçoE, 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. 10. HashingConsiderando como exemplo umsistema de consulta a preços de umestabelecimento 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
  11. 11. HashingAplicando a função hash: f(chave)=chave mod 13,obtém-se os endereços que seguem, para osprodutos 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 443 01 03 443 caneta 2.50 vitória 04/2041 339 00 04 339 caderno 6.50 voyage 04/2031 223 02 05 223 agenda 5.50 suzano 10/2060 695 06 06 695 resma A4 15.00 chamex 04/2042 07 241 calculadora 25.50 calc 05/2032 241 07 08 803 esquadro 2.30 vermelho 06/2080 803 10 UFS - DComp - Prof. Kenia Kodel
  12. 12. Hashing CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE01 284 lápis 1.20 voyage 08/2049 Considerando os02 935 apontador 1.50 dantena 08/2030 endereços obtidos a03 443 caneta 2.50 vitória 04/2041 partir da aplicação da04 339 caderno 6.50 voyage 04/2031 função hash05 223 agenda 5.50 suzano 10/2060 f(chave)=chave mod06 695 resma A4 15.00 chamex 04/2042 13 a base de dados07 241 calculadora 25.50 calc 05/2032 deve ser reorganizada?08 803 esquadro 2.30 vermelho 06/2080 CHAVE ENDEREÇO CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE 284 11 00 339 caderno 6.50 voyage 04/2031 935 12 01 443 caneta 2.50 vitória 04/2041 443 01 02 223 agenda 5.50 suzano 10/2060 03 339 00 04 223 02 05 695 06 ... 241 07 12 935 apontador 1.50 dantena 08/2030 803 10 UFS - DComp - Prof. Kenia Kodel
  13. 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. 14. HashingA base de dados original segue abaixo. No processoinicial 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. 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ÇO01 284 lápis 1.20 voyage 08/2049 284 1102 935 apontador 1.50 dantena 08/2030 935 1203 128 régua 2.20 xavier 06/2038 128 1104 443 caneta 2.50 vitória 04/2041 443 0105 339 caderno 6.50 voyage 04/2031 339 0006 845 borracha 1.90 alba 08/2050 845 0007 223 agenda 5.50 suzano 10/2060 223 0208 695 resma A4 15.00 chamex 04/2042 695 0609 241 calculadora 25.50 calc 05/2032 241 0710 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. 16. Hashing CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE Considerando os01 284 lápis 1.20 voyage 08/2049 endereços obtidos a02 935 apontador 1.50 dantena 08/2030 partir da aplicação da03 443 caneta 2.50 vitória 04/2041 função hash04 339 caderno 6.50 voyage 04/2031 f(chave)=chave mod05 223 agenda 5.50 suzano 10/2060 13 como reorganizar a base de dados, em06 695 resma A4 15.00 chamex 04/2042 especial para acesso07 241 calculadora 25.50 calc 05/2032 aos dados de chave08 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. 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. 18. Estouro ou Colisão Dada uma chave C, a partir daaplicação da função hash, obtém-se oendereço E do registro que contém C. Masduas chaves distintas podem gerar ummesmo endereço E. A tentativa de armazenar um registronum endereço já ocupado é denominadoestouro ou colisão. UFS - DComp - Prof. Kenia Kodel
  19. 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/2080Acha e 128col com a28 . Eacha e 8 5 col com a3 9. v idiu 4 v 4 idiu 3
  20. 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 1101 284 lápis 1.20 voyage 08/2049 935 1202 935 apontador 1.50 dantena 08/2030 128 1103 128 régua 2.20 xavier 06/2038 443 0104 443 caneta 2.50 vitória 04/2041 339 0005 339 caderno 6.50 voyage 04/2031 845 0006 845 borracha 1.90 alba 08/2050 223 0207 223 agenda 5.50 suzano 10/2060 695 0608 695 resma A4 15.00 chamex 04/2042 241 0709 241 calculadora 25.50 calc 05/2032 803 1010 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. 21. Hashing Sendo assim, para uso efetivo doHashing, é preciso decidir como tratar ascolisões/estouros. As soluções clássicas mantém umaestrutura auxiliar, denominada tabela hash,que relaciona chaves e endereços; paraidentificação, em especial, dos endereçosefetivos das chaves que sofrem colisão. UFS - DComp - Prof. Kenia Kodel
  22. 22. Hashing Perfeito Caso seja identificada uma função demapeamento que garanta a inexistência decolisões, não é preciso manter a tabelahash; o acesso a qualquer chave pode serefetuado estritamente pela aplicação dafunção. Neste caso teríamos o que sedenomina hashing perfeito. UFS - DComp - Prof. Kenia Kodel
  23. 23. Hashing As funções de mapeamento clássicasainda não evitam estouros; assim, ohashing é composto por dois processo: 1. aplicação da função de mapeamento 2. tratamento de colisão UFS - DComp - Prof. Kenia Kodel
  24. 24. Função de MapeamentoUma função hash deve mapear chaves eminteiros dentro do intervalo [0..M-1]sendo M o número máximo de registros aser manipulado pela aplicação, e/ou oespaço de memória disponível para aaplicação. UFS - DComp - Prof. Kenia Kodel
  25. 25. Funções de MapeamentoSão funções de mapeamento clássicas: Resto da Divisão onde: f(chave)=chave mod Msendo M o tamanho de memóriadisponível para armazenamento e/ounúmero máximo de dados manipuladospela aplicação computacional. UFS - DComp - Prof. Kenia Kodel
  26. 26. Funções de MapeamentoResto da Divisão Variante onde: (chave)=chave mod P UFS - DComp - Prof. Kenia Kodel
  27. 27. Funções deMapeamento UFS - DComp - Prof. Kenia Kodel
  28. 28. Tratamento de Colisão Definem o destino dos registrosque sofrem colisão. O métodos clássicos de tratamentode colisões são: 1. Coalescido 2. Amostragem Linear 3. Duplo UFS - DComp - Prof. Kenia Kodel
  29. 29. Hashing CoalescidoHavendo colisão, a chave associadaao seu respectivo endereço base, érelacionada a este, em tabela hash,por meio de um link. Desta forma, natabela hash são mantidos: chave,endereço e link. E a chave colidida éarmazenada na primeira posição livrelocalizada após o seu endereço base. UFS - DComp - Prof. Kenia Kodel
  30. 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 LINK01 284 lápis 1.20 voyage 08/2049 284 11 00 -102 935 apontador 1.50 dantena 08/2030 935 12 01 -103 128 régua 2.20 xavier 06/2038 128 1104 443 caneta 2.50 vitória 04/2041 443 01 02 -105 339 caderno 6.50 voyage 04/2031 03 -1 339 0006 845 borracha 1.90 alba 08/2050 04 -1 845 0007 223 agenda 5.50 suzano 10/2060 223 02 05 -108 695 resma A4 15.00 chamex 04/2042 06 -1 695 0609 241 calculadora 25.50 calc 05/2032 07 -1 241 0710 803 esquadro 2.30 vermelho 06/2080 08 -1 803 10 09 -1Hashing Coalescido: Havendo colisão, a chave associada ao seurespectivo endereço base, é relacionada a este, em tabela hash, 10 -1por meio de um link. Desta forma, na tabela hash são mantidos: 11 -1chave, endereço e link. E a chave colidida é armazenada naprimeira posição livre localizada após o seu endereço base. 12 -1
  31. 31. Hashing Aplicando a função hash: f(chave)=chave mod 13, e hashingCoalescido coalescido, obtém-se a tabela hash: CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE Tabela Hash01 284 lápis 1.20 voyage 08/2049 CHAVE LINK02 935 apontador 1.50 dantena 08/2030 00 128 0203 128 régua 2.20 xavier 06/2038 01 443 -104 443 caneta 2.50 vitória 04/2041 02 339 0305 339 caderno 6.50 voyage 04/2031 03 845 0406 845 borracha 1.90 alba 08/2050 04 223 -107 223 agenda 5.50 suzano 10/2060 05 -108 695 resma A4 15.00 chamex 04/2042 06 695 -109 241 calculadora 25.50 calc 05/2032 07 241 -110 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. 32. Hashing Aplicando a função hash: f(chave)=chave mod 13, e hashingCoalescido 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 -1Diz-se que o registro com chave 223 tem endereçobase 02, e endereço efetivo 04.
  33. 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 -1O método de tratamento de colisão em estudo é denominadocoalescido, por produzir uma coalha entre os dados, em meio 11 284 00aos endereços base e efetivo. Observar a chave 845, de 12 935 -1endereço 00, onde consta o 128, de endereço base 11.
  34. 34. Hashing Aplicando a função hash: f(chave)=chave mod 13, e hashingCoalescido coalescido, obtém-se a tabela hash e CÓDIGO PRODUTO PREÇO arquivo de dados abaixo. o FORNECEDOR VALIDADE Tabela Hash00 128 régua 2.20 xavier 06/2038 CHAVE LINK01 443 caneta 2.50 vitória 04/2041 00 128 0202 339 caderno 6.50 voyage 04/2031 01 443 -103 845 borracha 1.90 alba 08/2050 02 339 0304 223 agenda 5.50 suzano 10/2060 03 845 0405 04 223 -106 695 resma A4 15.00 chamex 04/2042 05 -107 241 calculadora 25.50 calc 05/2032 06 695 -108 07 241 -109 08 -110 803 esquadro 2.30 vermelho 06/2080 09 -111 284 lápis 1.20 voyage 08/2049 10 803 -112 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. 35. Além da consulta, que outras operações são necessáriaspara manutenção de dadosmantidos em arquivos diretos organizados por hashing? UFS - DComp - Prof. Kenia Kodel
  36. 36. Operações sobre Arquivos Diretos1. Consulta2. Inserção3. Remoção4. Alteração UFS - DComp - Prof. Kenia Kodel 36
  37. 37. Hashing Aplicando a função hash: f(chave)=chave mod 13, e hashingCoalescido coalescido, obtém-se a tabela hash e CÓDIGO PRODUTO PREÇO arquivo de dados abaixo. o FORNECEDOR VALIDADE Tabela Hash00 128 régua 2.20 xavier 06/2038 CHAVE LINK01 443 caneta 2.50 vitória 04/2041 00 128 0202 339 caderno 6.50 voyage 04/2031 01 443 -103 845 borracha 1.90 alba 08/2050 02 339 0304 223 agenda 5.50 suzano 10/2060 03 845 0405 04 223 -106 695 resma A4 15.00 chamex 04/2042 05 -107 241 calculadora 25.50 calc 05/2032 06 695 -108 07 241 -109 08 -110 803 esquadro 2.30 vermelho 06/2080 09 -111 284 lápis 1.20 voyage 08/2049 10 803 -112 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. 38. Descrev a oper ç o de ins erç ão er aãem a o com orga ç o diret rquiv niza ã ama ido porha nt shing. UFS - DComp - Prof. Kenia Kodel
  39. 39. Hashing Aplicando a função hash: f(chave)=chave mod 13, e hashingCoalescido coalescido, obtém-se a tabela hash e CÓDIGO PRODUTO PREÇO arquivo de dados abaixo. o FORNECEDOR VALIDADE Tabela Hash00 128 régua 2.20 xavier 06/2038 CHAVE LINK01 443 caneta 2.50 vitória 04/2041 00 128 0202 339 caderno 6.50 voyage 04/2031 01 443 -103 845 borracha 1.90 alba 08/2050 02 339 0304 223 agenda 5.50 suzano 10/2060 03 845 0405 04 223 -106 695 resma A4 15.00 chamex 04/2042 05 -107 241 calculadora 25.50 calc 05/2032 06 695 -108 07 241 -109 08 -110 803 esquadro 2.30 vermelho 06/2080 09 -111 284 lápis 1.20 voyage 08/2049 10 803 -112 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. 40. Descrev aoper ç o de exc lus ão er aãem a o com orga ç o diret rquiv niza ã ama ido porha nt shing. UFS - DComp - Prof. Kenia Kodel
  41. 41. Hashing Aplicando a função hash: f(chave)=chave mod 13, e hashingCoalescido coalescido, obtém-se a tabela hash e CÓDIGO PRODUTO PREÇO arquivo de dados abaixo. o FORNECEDOR VALIDADE Tabela Hash00 128 régua 2.20 xavier 06/2038 CHAVE LINK01 443 caneta 2.50 vitória 04/2041 00 128 0202 339 caderno 6.50 voyage 04/2031 01 443 -103 845 borracha 1.90 alba 08/2050 02 339 0304 223 agenda 5.50 suzano 10/2060 03 845 0405 04 223 -106 695 resma A4 15.00 chamex 04/2042 05 -107 241 calculadora 25.50 calc 05/2032 06 695 -108 07 241 -109 08 -110 803 esquadro 2.30 vermelho 06/2080 09 -111 284 lápis 1.20 voyage 08/2049 10 803 -112 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. 42. O ha shing apresent v nt gens e/ desv nt gens em a aa ou aarel ç 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. 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. 44. Pat da respost fina da à quest o a er , rindo a l da ã nt ioresquemaiza 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. 45. Hashing por Amostragem LinearNeste 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. 46. Aplicando a função hash: Hashing por f(chave)=chave mod 13, e hashing porAmostragem Linear amostragem linear, montar tabela hash: Tabela CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE CHAVE Hash ENDEREÇO CHAVE01 284 lápis 1.20 voyage 08/2049 284 11 0002 935 apontador 1.50 dantena 08/2030 935 12 0103 128 régua 2.20 xavier 06/2038 128 1104 443 caneta 2.50 vitória 04/2041 443 01 0205 339 caderno 6.50 voyage 04/2031 03 339 0006 845 borracha 1.90 alba 08/2050 04 845 0007 223 agenda 5.50 suzano 10/2060 223 02 0508 695 resma A4 15.00 chamex 04/2042 06 695 0609 241 calculadora 25.50 calc 05/2032 07 241 0710 803 esquadro 2.30 vermelho 06/2080 08 803 10 09Hashing Coalescido: O registro colidido é armazenado na 10primeira posição livre encontrada a partir de ponto de 11colisão. Vale destacar que a busca por posição livreconsidera a estrutura circular. 12
  47. 47. Aplicando a função hash: Hashing por f(chave)=chave mod 13, e hashing porAmostragem 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
  48. 48. Aplicando a função hash: Hashing por f(chave)=chave mod 13, e hashing porAmostragem Linear amostragem linear, montar tabela hash: Tabela CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE 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
  49. 49. Hashing por Aplicando a função hash: f(chave)=chave mod 13, e hashing porAmostragem 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. 50. Hashing por Aplicando a função hash: f(chave)=chave mod 13, e hashing porAmostragem 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. 51. Háv nt gens e/ desv nt gens do méodo de t aa o aa ou a a t r t mentde col ã por a r gem l r em rel ç o a is o mosta inea, aã ocoaescido? J ifique: l ust C uidando do jardim!!! UFS - DComp - Prof. Kenia Kodel
  52. 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 rha 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. 53. Pat darespost da àquest o a er , esquemaiza rindo a da ã nt ior t ra excl õ da cha es 3 e 4 s us es s v 4 9. C uidando do jardim!!! UFS - DComp - Prof. Kenia Kodel
  54. 54. Hashing DuploMé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. 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)+1esquemaiza 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. 56. Efet raconsulaa regist com cha e 4 e ua t os ros v 9 45. UFS - DComp - Prof. Kenia Kodel
  57. 57. Efet rainser ã do regist com cha e ua ço ro v 14. UFS - DComp - Prof. Kenia Kodel
  58. 58. Efet raexcl ã do regist com cha e ua us o ro v 3. 4 UFS - DComp - Prof. Kenia Kodel
  59. 59. Metodo deTratamentode Colisão UFS - DComp - Prof. Kenia Kodel
  60. 60. RehashingO rehashing, como o próprio nome sugere, consiste em refazer a estrutura hash. UFS - DComp - Prof. Kenia Kodel
  61. 61. RehashingDada 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. 62. RehashingA 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. 63. Consider ndo: a2. 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 v4. Taa o de col ã pora r gem l r r t ment is o mosta inea5. Funç o ha de expa ã g(cha e)= cha e mod 19 ã sh ns o: v v6. 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(8Efet rprocesso de reha ua shing. UFS - DComp - Prof. Kenia Kodel [Fazer este coletivamente.]
  64. 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. 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. 66. Complementar Estudos... File Organization and Processing Allan L Tharp Capítulo 3 Direct File Organization66 UFS - DComp - Prof. Kenia Kodel
  67. 67. Próximo passo... Implementação com Aplicação de Arquivos Diretos Dicionáio ou Ha r shing UFS - DCOMP - Prof. Kenia 67 Kodel

×