SlideShare une entreprise Scribd logo
1  sur  67
Hashing
    Organização Direta de
          Arquivos

Unida 0
     de 8
            UFS - DComp - Prof. Kenia Kodel   1
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
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
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
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
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
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
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
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
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
Hashing
Aplicando a função hash: f(chave)=chave mod 13,
obtém-se os endereços que seguem, para os
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
  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
Hashing
      CÓDIGO   PRODUTO       PREÇO      FORNECEDOR       VALIDADE
01    284         lápis       1.20          voyage        08/2049    Considerando os
02    935      apontador      1.50         dantena        08/2030    endereços obtidos a
03    443        caneta       2.50           vitória      04/2041    partir da aplicação da
04    339       caderno       6.50          voyage        04/2031    função hash
05    223       agenda        5.50          suzano        10/2060    f(chave)=chave mod
06    695      resma A4      15.00          chamex        04/2042    13 a base de dados
07    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
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
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
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?
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
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
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
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
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
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
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
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
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
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
Funções de
     Mapeamento

Resto da Divisão Variante onde:


     (chave)=chave mod P

           UFS - DComp - Prof. Kenia Kodel
Funções de
Mapeamento


      UFS - DComp - Prof. Kenia Kodel
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
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
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
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
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.
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.
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?
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
Operações
                 sobre Arquivos Diretos
1.   Consulta
2.   Inserção
3.   Remoção
4.   Alteração




                    UFS - DComp - Prof. Kenia Kodel   36
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?
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
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?        ?
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
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 ?
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
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
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
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
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
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
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
   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
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 ?
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         ?
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
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
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
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
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
Efet raconsulaa regist com cha e 4 e
   ua       t os     ros      v 9
  45.




        UFS - DComp - Prof. Kenia Kodel
Efet rainser ã do regist com cha e
   ua       ço         ro       v
  14.




 UFS - DComp - Prof. Kenia Kodel
Efet raexcl ã do regist com cha e
   ua     us o        ro       v
  3.
   4




 UFS - DComp - Prof. Kenia Kodel
Metodo de
Tratamento
de Colisão


      UFS - DComp - Prof. Kenia Kodel
Rehashing

O rehashing, como o próprio
 nome sugere, consiste em
 refazer a estrutura hash.



        UFS - DComp - Prof. Kenia Kodel
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
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
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.]
Descrev os pa ger is de execuç o do processo de
        a    ssos a           ã
rehashing.




           C uidando
                 do
            jardim!!!
             UFS - DComp - Prof. Kenia Kodel
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
Complementar
       Estudos...
       File Organization and Processing
                 Allan L Tharp


              Capítulo 3
       Direct File Organization

66           UFS - DComp - Prof. Kenia Kodel
Próximo passo...

 Implementação com Aplicação
      de Arquivos Diretos
       Dicionáio ou Ha
              r       shing
          UFS - DCOMP - Prof. Kenia   67
                   Kodel

Contenu connexe

En vedette

EDII03 [2012.1] Manipulação de Arquivos em Pascal
EDII03 [2012.1]  Manipulação de Arquivos em PascalEDII03 [2012.1]  Manipulação de Arquivos em Pascal
EDII03 [2012.1] Manipulação de Arquivos em Pascal
KianeLedok
 
EDII12 [2012.1] Recupera Chaves Secundárias - Árvores de Assinaturas
EDII12 [2012.1]   Recupera Chaves Secundárias - Árvores de AssinaturasEDII12 [2012.1]   Recupera Chaves Secundárias - Árvores de Assinaturas
EDII12 [2012.1] Recupera Chaves Secundárias - Árvores de Assinaturas
KianeLedok
 
EDII10 [2012.1] Recuperação de Chave Secundária - Multilista
EDII10 [2012.1]   Recuperação de Chave Secundária - MultilistaEDII10 [2012.1]   Recuperação de Chave Secundária - Multilista
EDII10 [2012.1] Recuperação de Chave Secundária - Multilista
KianeLedok
 
EDII11 [2012.1] Recuperação de Chave Secundária - Arquivos Invertidos
EDII11 [2012.1]  Recuperação de Chave Secundária - Arquivos InvertidosEDII11 [2012.1]  Recuperação de Chave Secundária - Arquivos Invertidos
EDII11 [2012.1] Recuperação de Chave Secundária - Arquivos Invertidos
KianeLedok
 
EDII13 [2012.1] Estruturas de Busca em Texto
EDII13 [2012.1]   Estruturas de Busca em TextoEDII13 [2012.1]   Estruturas de Busca em Texto
EDII13 [2012.1] Estruturas de Busca em Texto
KianeLedok
 
EDII09 [2012.1] Arquivos Sequenciais Indexados
EDII09 [2012.1]   Arquivos Sequenciais IndexadosEDII09 [2012.1]   Arquivos Sequenciais Indexados
EDII09 [2012.1] Arquivos Sequenciais Indexados
KianeLedok
 
EDII15 [2012.1] Classificação Externa
EDII15 [2012.1]   Classificação ExternaEDII15 [2012.1]   Classificação Externa
EDII15 [2012.1] Classificação Externa
KianeLedok
 
EDII14 [2012.1] Árvores B e B+
EDII14 [2012.1]   Árvores B e B+EDII14 [2012.1]   Árvores B e B+
EDII14 [2012.1] Árvores B e B+
KianeLedok
 
Secretariado Executivo Aula 3 E 4
Secretariado Executivo  Aula  3 E 4Secretariado Executivo  Aula  3 E 4
Secretariado Executivo Aula 3 E 4
egildofarias
 

En vedette (20)

EDII03 [2012.1] Manipulação de Arquivos em Pascal
EDII03 [2012.1]  Manipulação de Arquivos em PascalEDII03 [2012.1]  Manipulação de Arquivos em Pascal
EDII03 [2012.1] Manipulação de Arquivos em Pascal
 
Arquivos
ArquivosArquivos
Arquivos
 
EDII12 [2012.1] Recupera Chaves Secundárias - Árvores de Assinaturas
EDII12 [2012.1]   Recupera Chaves Secundárias - Árvores de AssinaturasEDII12 [2012.1]   Recupera Chaves Secundárias - Árvores de Assinaturas
EDII12 [2012.1] Recupera Chaves Secundárias - Árvores de Assinaturas
 
EDII10 [2012.1] Recuperação de Chave Secundária - Multilista
EDII10 [2012.1]   Recuperação de Chave Secundária - MultilistaEDII10 [2012.1]   Recuperação de Chave Secundária - Multilista
EDII10 [2012.1] Recuperação de Chave Secundária - Multilista
 
EDII11 [2012.1] Recuperação de Chave Secundária - Arquivos Invertidos
EDII11 [2012.1]  Recuperação de Chave Secundária - Arquivos InvertidosEDII11 [2012.1]  Recuperação de Chave Secundária - Arquivos Invertidos
EDII11 [2012.1] Recuperação de Chave Secundária - Arquivos Invertidos
 
EDII13 [2012.1] Estruturas de Busca em Texto
EDII13 [2012.1]   Estruturas de Busca em TextoEDII13 [2012.1]   Estruturas de Busca em Texto
EDII13 [2012.1] Estruturas de Busca em Texto
 
EDII09 [2012.1] Arquivos Sequenciais Indexados
EDII09 [2012.1]   Arquivos Sequenciais IndexadosEDII09 [2012.1]   Arquivos Sequenciais Indexados
EDII09 [2012.1] Arquivos Sequenciais Indexados
 
Aula 08 secretariado
Aula 08 secretariadoAula 08 secretariado
Aula 08 secretariado
 
Abcvida mapa linux
Abcvida mapa linuxAbcvida mapa linux
Abcvida mapa linux
 
Aula 02 secretariado
Aula 02 secretariadoAula 02 secretariado
Aula 02 secretariado
 
Arquivos gerenciamento e organizacao de arquivos
Arquivos gerenciamento e organizacao de arquivosArquivos gerenciamento e organizacao de arquivos
Arquivos gerenciamento e organizacao de arquivos
 
EDII15 [2012.1] Classificação Externa
EDII15 [2012.1]   Classificação ExternaEDII15 [2012.1]   Classificação Externa
EDII15 [2012.1] Classificação Externa
 
Aula 05 secretariado
Aula 05 secretariadoAula 05 secretariado
Aula 05 secretariado
 
Aula 04 secretariado
Aula 04 secretariadoAula 04 secretariado
Aula 04 secretariado
 
Aula 09 secretariado
Aula 09 secretariadoAula 09 secretariado
Aula 09 secretariado
 
Aula 10 secretariado
Aula 10 secretariadoAula 10 secretariado
Aula 10 secretariado
 
EDII14 [2012.1] Árvores B e B+
EDII14 [2012.1]   Árvores B e B+EDII14 [2012.1]   Árvores B e B+
EDII14 [2012.1] Árvores B e B+
 
Secretariado Executivo Aula 3 E 4
Secretariado Executivo  Aula  3 E 4Secretariado Executivo  Aula  3 E 4
Secretariado Executivo Aula 3 E 4
 
Aula 03 secretariado
Aula 03 secretariadoAula 03 secretariado
Aula 03 secretariado
 
Aula 07 secretariado
Aula 07 secretariadoAula 07 secretariado
Aula 07 secretariado
 

Dernier

A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
AntonioVieira539017
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 

Dernier (20)

O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
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
  • 11. Hashing Aplicando a função hash: f(chave)=chave mod 13, obtém-se os endereços que seguem, para os 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 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. Hashing CÓDIGO PRODUTO PREÇO FORNECEDOR VALIDADE 01 284 lápis 1.20 voyage 08/2049 Considerando os 02 935 apontador 1.50 dantena 08/2030 endereços obtidos a 03 443 caneta 2.50 vitória 04/2041 partir da aplicação da 04 339 caderno 6.50 voyage 04/2031 função hash 05 223 agenda 5.50 suzano 10/2060 f(chave)=chave mod 06 695 resma A4 15.00 chamex 04/2042 13 a base de dados 07 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. 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
  • 27. Funções de Mapeamento 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
  • 36. Operações sobre Arquivos Diretos 1. Consulta 2. Inserção 3. Remoção 4. Alteração UFS - DComp - Prof. Kenia Kodel 36
  • 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
  • 48. 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 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. 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
  • 59. Metodo de Tratamento de Colisão 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