Академический Документы
Профессиональный Документы
Культура Документы
HASHING
uma tcnica para realizar inseres, delees e buscas em
tempo constante - O(1).
TABELA HASHING
uma estrutura de dados vetorial de comprimento fixo,
contendo chaves. Em geral uma chave um STRING com
um valor associado.
TAM_ HASH - uma varivel que representa o tamanho
do vetor da tabela.
FUNO HASH
VK
(CHAVE): =
i=1
ORD ( CHAVE[ i ] )
1
F (VK): = VK MOD TAM_HASH
Se TAM_HASH < 3
27
COMPLETAR CHAVE
COM BRANCOS
729 = 272
Para o portugus, sugere-se uma funo que avalie at a
quinta casa.
n-1
X (i-1) 322
i=1
TRATAMENTO DE COLISES
OPEN HASHING`- COM LISTAS
O tratamento das colises realizado logo aps a verificao de que
na clula da tabela h pelo menos um elemento inserido. Aqui, a
tabela implementada como um vetor de listas.
FATOR DE CARGA = a quantidade de elementos na maior
lista interna criada pela coliso. Quanto maior for pior o
desempenho da tabela HASH. Neste caso a tabela deve ser
bem grande e a funo de distribuio deve ser tal que =1
Ex: S= {0,1,85,6,36,46,89,112,44}
0
=3
44
46 89
112 85
36
0
10
=2
0
46 36
44 89 112
85
Desantagens
TRATAMENTO DE COLISES
OPEN HASHING COM AVL
Aqui, a tabela implementada como um vetor de AVL. Neste caso,
porm a HASHING se comporta como uma estrutura de busca.
FATOR DE BALANCEAMENTO (FB) = a medida que
indica como est a distribuio dos dados na tabela. Ou seja:
TH1
FB
i0
TH
Onde,
i a carga (Altura+1) da AVL na clula i;
TH o tamanho da tabela hashing;
- o fator de carga da Tabela (clula com rvore de maior
altura da tabela)
Ex: S= {0,1,85,6,36,46,89,112,44}
0
112 1
36
44
46
89
85
1
FB
0.571
7
Vantagens
Deleo e busca O(log n)
Desantagens
Insero O(log n)
No aceita elementos repetidos
ind : tipo_indice;
esq, dir : ^Avl;
End;
TCNICAS DE TENTATIVAS
A . TENTATIVA LINEAR
B . TENTATIVA QUADRTICA
C . DUPLO HASHING
A . TENTATIVA LINEAR
f (i) = i, e h(x)= (x + i) mod TH, , i=0,..., TH-1;
Nmero esperado de tentativas = 1/2 (1+1/(1+)2 )para as
inseres e pesquisas mal sucedidas e 1/2(1+1/1- ) para
pesquisas bem sucedidas.
Ex: S = {89,18,49,60,69}
0
18
89
60
49
Colide com 18
em 4
18
89
18
89
60
(60 mod 7 = 4)
(60+1 mod 7 = 5)
49
60
(60+2 mod 7 = 6)
0
49
69
...
69 mod 7 = 6
69+1 mod 7 = 0
69+2 mod 7 = 1
B. TENTATIVA QUADRTICA
f(i) = i2, ou h(x)=(x + i2 ) mod TH, i=0,..., TH div 2;
Ex: S = {89,18,49,60,69}
0
49
18
89
(60 mod 7 = 4)
(60+12 mod 7 = 5)
(60+22 mod 7 = 1)
0
49
60
18
89
69
C. DUPLO HASHING
f(i) = i * hd (CHAVE)
Aplica-se aqui uma segunda funo hashing sobre a chave,
diferente de f(chave), de modo que se mantenha as tentativas.
Ex: {89,18,49,60,69}
0
60
(60 mod 7 = 4), r =5 (tomar r como sendo o prox primo depois de 4).
hd(60) =(5-60 mod 5) = 5,
f(1) = (1 * 5) mod 7 =5 (coliso)
f(2) = (2 * 5) mod 7 =3
0
49
60
18
89
69
Ex: {89,18,49,60,69}
60
49
18
89
69
Ex: S = {13,15,24,6,23}
0
6 15 23 24
13
13
15
10
11
12
23 24
Tabela nova para um primo
prximo ao dobro do primeiro
(reduz chances de coliso)
Ex: S = (13,15,24,6,23,55, 42, 28, 37, 52, 68, 29, 13, 66, 31),
TH=3, =1. Como ficaria a tabela hashing aps a incluso de
S.
55
42
Estrutura de Dados
AVL = record
ind : tipo_indice;
h
: word;
Variveis:
lambda, Tho, limite : integer;
Vantagens
Insero, Busca e Deleo O(1)
Desvantagem
Rehashing O(n)
Distribuio de Poisson
Distribuio uniforme
f(X)
1
se
a
P
(
X
)
b
0
, fora
de
[
a
,b
]
1/(b-a)