Você está na página 1de 25

Introduo ` Organizao de Arquivos: Aula 23 ca a ca

Departamento de Cincia da Computao e ca Instituto de Cincias Exatas e Universidade de Bras lia

1 / 25

Sumrio a

Hashing
1

Hashing Extens vel.

2 / 25

Hashing Extens e Dinmico vel a

Por que Usar Hashing Extens e Dinmico: vel a


No usam reas de overow a a Permitem o crescimento ou decrscimo do nmero de registros do arquivo sem e u alterar a performance.
Grande descoberta nessa rea, no nal dos anos 70 e in dos 80. a cio

Idia bsica: e a

3 / 25

Hashing Extens (HE): Trie e Base da Trie vel

Trie (Radix Searching Trees)


Arvore de pesquisa (de prexos). Fator de ramicao o nmero de s ca e u mbolos alternativos (base do alfabeto) que pode ocorrer em cada posio de uma chave. ca Radix (raiz ou base do alfabeto). Busca baseada em parte da chave apenas. e
Usa-se uma parte maior se houver necessidade de mais informao para completar a ca busca.

Trie para pesquisa alfabtica tem base (radix) 26. e


A busca realizada letra a letra da chave. e

4 / 25

Exemplo de Trie Alfabtica e

Armazenar as chaves abigail, abrao, ado, anderson, andr e bernardo. a a e

5 / 25

Exemplo de Trie de Base 10

Armazena chaves numricas. e Cada n pode ter at 10 lhos. o e

6 / 25

Hashing Extens vel

As chaves so colocadas em baldes (como no hashing esttico). a a As chaves cujo endereo hash gerado tem com o mesmo prexo compartilham o c mesmo balde. Usa uma trie com base 2 para acesso rpido aos baldes: a
Usa-se o prexo do endereo gerado por H(chave) (normalmente na ordem inversa) c para localizar o balde desejado. A representao da trie na forma de um diretrio (vetor) permite o aumento do ca o nmero usado de bits do endereo. u c

Observao ca
A busca no feita em termos de chaves individuais, mas em termos de baldes contendo a e chaves, como no hashing esttico. a

7 / 25

Representao de Trie como Diretrio ca o

Balde A contm chaves cujos endereos iniciam com 01, ou 00. e c Balde B contm chaves iniciando com 10. e Balde C contm chaves iniciando com 11. e

Como representar a Trie? Estrutura de rvore? a

8 / 25

Representao de Trie como Diretrio ca o

Como representar amos a Trie? Se representarmos como uma estrutura de rvore, somos forados a fazer vrias a c a comparaoes conforme vamos descendo na rvore. c a Pior ainda, se a trie se tornar muito grande e for armazenada em disco, enfrentaremos os mesmos problemas associados ao armazenamento de rvores em a disco. Nesse caso, seria melhor voltar pra as rvores-B e esquecer hashing extens a vel.

9 / 25

Representao de Trie como Diretrio ca o


1) Transforme-o em uma rvore binria completa (g. a). a a 2) Gere as chaves para o diretrio (g. b). o
Profundidade do diretrio: nmero de bits. o u Nmero de entradas: 2prof undidade . u

Figura: Cada balde contm um conjunto de e ndices. Note que as chaves geram a mesma entrada para o diretrio. o

10 / 25

Hashing Extens vel

Implementao ca
Porque usar hashing? Porque no utilizar o prexo na chave para fazer a trie? a
Porque a funo hasing deve gerar uma distribuio mais uniforme. ca ca

Como fazer o hasinhg?


Exemplo: Podemos fazer o mesmo algoritmo de hasing simples (dividir e somar) visto anteriormente. No precisa ser limitado a um nmero de endereos (o tamanho dinmico). a u c e a Logo, utilizamos como sa da funo hasing a soma das partes simplesmeste limitada da ca a preciso (16 bits, 32 bits, etc.). a

11 / 25

Hashing Extens vel

Uma vez obtida a soma utilizamos uma quantidade de bits (2 no exemplo anterior), para fazer a Trie. Normalmente, so utilizados os bits menos signicativos em ordem reversa. Porque? a Os bits menos signicativos variam mais.

12 / 25

Tratamento de Overow

O objetivo do Hashing extens proporcionar uma maneira de aumentar o espao vel e c de endereos em resposta a um overow, ao invs de criar longas seqncias c e ue overow (baldes e/ou registros) que precisam ser pesquisadas linearmente.

13 / 25

Tratamento de Overow: Redistribuio de Chaves ca

Suponha overow no balde A:


Redistribua as chaves com prexo de endereos 01 para um novo balde D. c No h necessidade de usar reas de overow encadeadas ou estender o diretrio. a a a o

Figura: A redistribuio de chaves do balde A determinada pela congurao de bits 00 e 01. ca e ca

14 / 25

Tratamento de Overow: Extenso do Diretrio a o

Suponha overow no balde B:


1) H necessidade de ampliar o nmero de bits considerados para diferenciar as chaves a u com prexo 10. 2) Aloca D e redistribui as chaves do balde B.

Figura: A redistribuio das chaves de B baseada nas conguraes de bits 100 e 101. ca e co

15 / 25

Tratamento de Overow: Extenso do Diretrio a o

3) Transforma a rvore binria em uma rvore binria completa. a a a a


Gera chaves para baldes com 3 bits.

16 / 25

Tratamento de Overow: Extenso do Diretrio a o

4) Achata a rvore binria completa e expande o diretrio usando os prexos como a a o endereos de baldes. c

17 / 25

Hashing Extens vel: Uma Idia Completa e

Aplica-se a funo hash a uma chave: ca


Seleciona-se alguns bits em ordem inversa do resultado binrio, para maior disperso. a a

Esses bits funcionaro como endereos para busca no diretrio extens a c o vel.
O diretrio pode expandir ou encolher, se o arquivo for muito voltil. o a
Nos exemplos mostrados, a rvore comeou com dois n a c veis e depois foi expandida para trs e n veis, quando o balde B encheu.

18 / 25

Hashing Extens vel: Concatenao de Baldes ca

Apenas se so baldes a companheiros.


Possuem o mesmo endereo c exceto pelo ultimo bit. So descendentes imediatos a de um mesmo n na trie. o

Achata (reduz) o diretrio se o cada par associado aponta para um mesmo balde.

19 / 25

Hashing Extens vel: Concatenao de Baldes ca

Elimina chave
Se chaves de B e D cabem em um balde, concatena B e D. Se diretrio pode ser achatado: o
Copia referncias de baldes de apenas e um dos baldes associados. Reduz tamanho para metade.

20 / 25

Hashing Extens vel: Desempenho

Tempo
Diretrio na memria: O(1). o o Diretrio paginado (muito grande para car em memria): O(2). o o

Espao c
Fator de utilizao para os baldes. ca
Fator de utilizao = em mdia 69%. ca e

No h overow! O tempo de acesso independe do tamanho do arquivo. a a

21 / 25

Hashing Dinmico a

Similar ao Hashing Extens vel. A diferena chave que o Hashing dinmico: c e a


Inicia com funo hash que gera um espao de endereos de tamanho xo (como o ca c c hashing esttico). a Quando um balde enche, ele divide gerando uma trie que cresce para baixo. Expressa o diretrio como uma estrutura lincada (trie) ao invs de um vetor. o e
Apresenta um crescimento mais harmnico (mais lento e mais gradual) do diretrio. No o o Hashing extens vel, toda vez que estendemos o diretrio ele dobra de tamanho. o Mesma performance que o hashing extens vel.

Similar a hash esttico com rea de overow na forma de rvore com referncias para a a a e baldes.

22 / 25

Hashing Dinmico a

23 / 25

Hashing Linear

No utiliza a estrutura de diretrio. a o


A funo de hash aponta para baldes. ca

Quando ocorre overow em um balde:


O espao de endereamento estendido. c c e O balde da sequncia linear redistribu e e do.
Em geral no aquele onde ocorreu overow. a e Nesse caso criada uma rea de encadeamento de baldes para armazenar as chaves e a sinnimas. o Somente ocorrer a redistribuio das chaves sinnimas segundo a funo linear a ca o ca A cadeia de overow no cresce muito. a

Utiliza a mesma funo de hash. ca A funo linear apresenta a ordem em que os baldes devem ser redistribu ca dos.

24 / 25

Hashing Linear

25 / 25

Você também pode gostar