Você está na página 1de 121

Busca

Outros tipos de Busca


Hashing

SCC-201 - Captulo 5
Mtodos de Busca [3]

Joo Lus Garcia Rosa1


1 Departamento de Cincias de Computao

Instituto de Cincias Matemticas e de Computao


Universidade de So Paulo - So Carlos
http://www.icmc.usp.br/~joaoluis

2009
Joo Lus G. Rosa
c 2009 - SCC-201: V. Mtodos de Busca 1/121
Busca
Outros tipos de Busca
Hashing

Sumrio

1 Busca
Introduo
Busca Sequencial
Busca Binria
2 Outros tipos de Busca
Busca por interpolao
Busca em rvores
3 Hashing
Conceitos
Funes hash
Tipos de hashing

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 2/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Sumrio

1 Busca
Introduo
Busca Sequencial
Busca Binria
2 Outros tipos de Busca
Busca por interpolao
Busca em rvores
3 Hashing
Conceitos
Funes hash
Tipos de hashing

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 3/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

A importncia em estudar busca

Busca uma tarefa muito comum em computao?


Vrios mtodos e estruturas de dados podem ser
empregados para se fazer busca:
Quais estruturas de dados?
Certos mtodos de organizao/ordenao de dados
podem tornar o processo de busca mais eficiente.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 4/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

A importncia em estudar busca

O problema da busca (ou pesquisa):


Dado um conjunto de elementos, onde cada um identificado
por uma chave, o objetivo da busca localizar, nesse conjunto,
o elemento que corresponde a uma chave especfica.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 5/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Terminologia bsica

Tabela ou Arquivo: termos genricos, pode ser qualquer


estrutura de dados usada para armazenamento interno e
organizao dos dados:
Uma tabela um conjunto de elementos, chamados
registros,
Existe uma chave associada a cada registro, usada para
diferenciar os registros entre si:
Chave interna: contida dentro do registro, em uma
localizao especfica,
Chave externa: contida em uma tabela de chaves separada
que inclui ponteiros para os registros,
Chave primria: para todo arquivo existe pelo menos um
conjunto exclusivo de chaves - dois registros no podem ter
o mesmo valor de chave,
Chave secundria: chaves no primrias, que no
precisam ter seus valores exclusivos. Para que servem?

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 6/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Terminologia bsica

Algoritmo de busca: formalmente, o algoritmo que


aceita um argumento a e tenta encontrar o registro cuja
chave seja a,
Operaes:
Insero: adicionar um novo elemento tabela,
Algoritmo de busca e insero: se no encontra o
registro, insere um novo,
Remoo: retirar um elemento da tabela,
Recuperao: procurar um elemento na tabela e, se
ach-lo, torn-lo disponvel.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 7/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Terminologia bsica

A tabela pode ser:


Um vetor de registros,
Uma lista encadeada,
Uma rvore,
Etc.
A tabela pode ficar:
Totalmente na memria (busca interna),
Totalmente no armazenamento auxiliar (busca externa),
Dividida entre ambos.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 8/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Tipos de busca

As tcnicas de busca em memria interna que


estudaremos sero:
Busca Sequencial,
Busca Binria,
Busca por Interpolao,
Busca em rvores,
Hashing.
O objetivo encontrar um dado registro com o menor
custo,
Cada tcnica possui vantagens e desvantagens.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 9/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Sumrio

1 Busca
Introduo
Busca Sequencial
Busca Binria
2 Outros tipos de Busca
Busca por interpolao
Busca em rvores
3 Hashing
Conceitos
Funes hash
Tipos de hashing

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 10/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

A busca sequencial a forma mais simples de busca,


aplicvel a uma tabela organizada como um vetor ou
como uma lista encadeada,
Busca mais simples que h,
Percorre-se registro por registro em busca da chave:

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 11/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 12/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 13/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 14/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 15/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 16/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 17/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Algoritmo de busca sequencial em um vetor A, com n


posies (0 at n 1), sendo x a chave procurada:

for (i=0; i<n; i++)


if (A[i]==x)
return(i); /*chave encontrada*/
return(-1); /*chave no encontrada*/

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 18/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Uma maneira de tornar o algoritmo mais eficiente usar


um sentinela:
Sentinela: consiste em adicionar um elemento de valor x
no final da tabela.
O sentinela garante que o elemento procurado ser
encontrado, o que elimina uma expresso condicional,
melhorando a performance do algoritmo:

A[n]=x;
for (i=0; x!=A[i]; i++);
if (i < n) return(i); /*chave encontrada*/
else return(-1); /*chave no encontrada*/

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 19/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Limitaes do vetor:
Tamanho fixo:
Pode desperdiar ou faltar espao.
Alternativa:
Lista encadeada:
O que muda na busca sequencial?
Complexidade:
Se o registro for o primeiro: 1 comparao,
Se o registro procurado for o ltimo: N comparaes,
Se for igualmente provvel que o argumento aparea em
qualquer posio da tabela, em mdia: (n+1)
2 comparaes,
Se a busca for mal sucedida: N comparaes.
Logo, a busca sequencial, no pior caso, O(n).

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 20/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Arranjo no ordenado:
Insero no final do arranjo,
Remoo:
Realocao dos registros acima do registro removido.
Para aumentar a eficincia:
Reordenar continuamente a tabela de modo que os
registros mais acessados sejam deslocados para o incio:
1 Mtodo mover-para-frente: sempre que uma pesquisa
obtiver xito, o registro recuperado colocado no incio da
lista,
2 Mtodo da transposio: um registro recuperado com
sucesso trocado com o registro imediatamente anterior.
Ambos se baseiam no fenmeno da recuperao
recorrente de registros.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 21/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Desvantagens do mtodo mover-para-frente:


Uma nica recuperao no implica que o registro ser
frequentemente recuperado:
Perda de eficincia para os outros registros.
O mtodo mais caro em vetores do que em listas.
Vantagens do mtodo mover-para frente:
Possui resultados melhores para quantidades pequena e
mdia de buscas.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 22/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Busca sequencial em tabela ordenada:


A eficincia da operao de busca melhora se as chaves
dos registros estiverem ordenadas:
No pior caso (caso em que a chave no encontrada), so
necessrias N comparaes quando as chaves esto
desordenadas,
No caso mdio, N2 comparaes se as chaves estiverem
ordenadas, pois se para a busca assim que uma chave
maior do que a procurada encontrada.
Dificuldade do mtodo?

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 23/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Busca sequencial indexada:


Existe uma tabela auxiliar, chamada tabela de ndices,
alm do prprio arquivo ordenado,
Cada elemento na tabela de ndices contm uma chave
(kindex) e um indicador do registro no arquivo que
corresponde a kindex:
Faz-se a busca a partir do ponto indicado na tabela, sendo
que a busca no precisa ser feita desde o comeo.
Pode ser implementada como um vetor ou como uma lista
encadeada:
O indicador da posio na tabela pode ser um ponteiro ou
uma varivel inteira.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 24/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 25/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Busca sequencial indexada:


Se a tabela for muito grande, pode-se ainda usar a tabela
de ndices secundria:
O ndice secundrio um ndice para o ndice primrio.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 26/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 27/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Vantagem:
Os itens na tabela podero ser examinados
sequencialmente sem que todos os registros precisem ser
acessados:
O tempo de busca diminui consideravelmente.
Desvantagens:
A tabela tem que estar ordenada,
Exige espao adicional para armazenar a(s) tabela(s) de
ndices.
Algo mais?

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 28/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Remoo:
Remove-se o elemento e rearranja-se a tabela inteira e o(s)
ndice(s),
Marca-se a posio do elemento removido, indicando que
ela pode ser ocupada por um outro elemento futuramente:
A posio da tabela fica vazia.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 29/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Insero:
Se houver espao vago na tabela, rearranjam-se os
elementos localmente,
Se no houver espao vago:
Rearranjar a tabela a partir do ponto apropriado e
reconstruir o(s) ndice(s).

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 30/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Insero do elemento 512


com espao vago:

567 e 583 descem,

512 inserido.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 31/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Insero do elemento 512


com espao vago:

567 e 583 descem,

512 inserido.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 32/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Insero do elemento 512


sem espao vago:

Elementos a partir de
567 descem,

512 inserido,

ndice reconstrudo.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 33/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Insero do elemento 512


sem espao vago:

Elementos a partir de
567 descem,

512 inserido,

ndice reconstrudo.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 34/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Como montar o ndice primrio:


Se a tabela no estiver ordenada, ordene-a,
Divide-se o nmero de elementos da tabela pelo tamanho
do ndice desejado: n/tamanho-ndice,
Para montar o ndice, recuperam-se da tabela os
elementos 0, 0+n/tamanho-ndice, 0+2*n/tamanho-ndice,
etc.,
Cada elemento do ndice representa n/tamanho-ndice
elementos da tabela.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 35/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Exemplo:
Divide-se o nmero de elementos da tabela pelo tamanho
do ndice desejado:
Se a tabela tem 1.000 elementos e deseja-se um ndice
primrio de 10 elementos, faz-se 1.000/10=100.
Para montar o ndice, recuperam-se da tabela os
elementos 0, 0+n/tamanho-ndice, 0+2*n/tamanho-ndice,
etc.:
O ndice primrio montado com os elementos das
posies 0, 100, 200, etc. da tabela.
Cada elemento do ndice representa n/tamanho-ndice
elementos da tabela:
Cada elemento do ndice primrio aponta para o comeo de
um grupo de 100 elementos da tabela.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 36/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca sequencial

Para montar um ndice secundrio, aplica-se raciocnio


similar sobre o ndice primrio,
Em geral, no so necessrios mais do que 2 ndices.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 37/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Sumrio

1 Busca
Introduo
Busca Sequencial
Busca Binria
2 Outros tipos de Busca
Busca por interpolao
Busca em rvores
3 Hashing
Conceitos
Funes hash
Tipos de hashing

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 38/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca binria

Se os dados estiverem ordenados em um arranjo, pode-se


tirar vantagens dessa ordenao:
Busca binria: A[i] A[i + 1], se ordem crescente;
A[i] A[i + 1], se ordem decrescente.
O elemento buscado comparado ao elemento do meio
do arranjo:
Se igual, busca bem-sucedida,
Se menor, busca-se na metade inferior do arranjo,
Se maior, busca-se na metade superior do arranjo.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 39/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca binria

Busca-se por 25:

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 40/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca binria

Busca-se por 25:

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 41/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca binria

Busca-se por 25:

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 42/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca binria

Busca-se por 25:

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 43/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca binria

Busca-se por 25:

Em cada passo, o tamanho do arranjo em que se busca


dividido por 2.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 44/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca binria

Complexidade:
O(log n), pois cada comparao reduz o nmero de
possveis candidatos por um fator de 2.
Vantagens:
Eficincia da busca,
Simplicidade da implementao.
Desvantagens:
Nem todo arranjo est ordenado,
Exige o uso de um arranjo para armazenar os dados:
Faz uso do fato de que os ndices do vetor so inteiros
consecutivos.
Insero e remoo de elementos so ineficientes:
Realocao de elementos.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 45/121
Busca Introduo
Outros tipos de Busca Busca Sequencial
Hashing Busca Binria

Busca binria

A busca binria pode ser usada com a organizao de


tabela sequencial indexada:
Em vez de pesquisar o ndice sequencialmente, pode-se
usar uma busca binria.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 46/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

Sumrio

1 Busca
Introduo
Busca Sequencial
Busca Binria
2 Outros tipos de Busca
Busca por interpolao
Busca em rvores
3 Hashing
Conceitos
Funes hash
Tipos de hashing

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 47/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

Busca por interpolao

Se as chaves estiverem uniformemente distribudas, esse


mtodo pode ser ainda mais eficiente do que a busca
binria,
Com chaves uniformemente distribudas, pode-se esperar
que x esteja aproximadamente na posio:
(xA[inf ])
meio = inf + (sup inf ) ( (A[sup]A[inf ]) )

sendo que inf e sup so redefinidos iterativamente como


na busca binria.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 48/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

Busca por interpolao

Complexidade:
O(log(log(n))) se as chaves estiverem uniformemente
distribudas:
Raramente precisar de mais comparaes.
Se as chaves no estiverem uniformemente distribudas, a
busca por interpolao pode ser to ruim quanto uma
busca sequencial.
Desvantagem:
Em situaes prticas, as chaves tendem a se aglomerar
em torno de determinados valores e no so
uniformemente distribudas:
Exemplo: h uma quantidade maior de nomes comeando
com S do que com Q.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 49/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

Sumrio

1 Busca
Introduo
Busca Sequencial
Busca Binria
2 Outros tipos de Busca
Busca por interpolao
Busca em rvores
3 Hashing
Conceitos
Funes hash
Tipos de hashing

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 50/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

Busca em rvores

rvores:
rvores binrias:
rvores binrias de busca,
AVLs: rvores binrias de busca balanceadas.
rvores multidirecionais:
rvores B.

Complexidade de tempo no pior caso?


Complexidade de tempo no melhor caso?

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 51/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

rvore binria de busca

Uma rvore binria um conjunto finito de ns que ou


est vazio ou consiste de um n raiz e duas rvores
binrias disjuntas chamadas de sub-rvores esquerda e
direita,
Uma rvore binria de busca uma rvore binria que
exibe a propriedade de ordenao. Satisfaz as seguintes
propriedades:
1 Todo elemento tem uma chave e no h dois elementos
com a mesma chave (i.e., as chaves so distintas),
2 As chaves (se houver) na sub-rvore esquerda so
menores do que a chave na raiz,
3 As chaves (se houver) na sub-rvore direita so maiores do
que a chave na raiz,
4 As sub-rvores esquerda e direita so tambm rvores
binrias.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 52/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

rvore binria de busca

Uma rvore binria de busca pode suportar as operaes


de localizao, insero e excluso,
Um algoritmo de busca aquele que aceita um
argumento a e tenta encontrar o registro cuja chave a,
O algoritmo pode retornar o registro inteiro ou, mais
comum, um ponteiro para o registro,
Uma tabela de registros na qual uma chave usada para
recuperao chamada de tabela de busca ou
dicionrio.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 53/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

rvores AVL

rvores AVL1 so rvores binrias de busca balanceadas


e ordenadas:
A rvore balanceada se a altura da sub-rvore esquerda
de qualquer n no difere de mais de uma unidade da
altura da sub-rvore direita,
O relacionamento hierrquico prev que o dado em cada
n da rvore maior do que todos dados da sua
sub-rvore esquerda e menor ou igual aos dados da
sub-rvore direita.

1
O termo AVL devido a proposta de Adelson-Velskii e Landis, de 1962.
Joo Lus G. Rosa
c 2009 - SCC-201: V. Mtodos de Busca 54/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

rvores AVL

Seja a seguinte rvore AVL:

Fator de equilbrio = He - Hd
He = altura da sub-rvore esquerda,
Hd = altura da sub-rvore direita.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 55/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

Operaes com rvores AVL

As operaes bsicas com rvores AVL so as mesmas


operaes com as rvores binrias de busca:
inserir um n na rvore,
localizar um n na rvore (maior prioridade),
remover um n da rvore.
O problema que com a insero e/ou remoo, a rvore
pode deixar de ser AVL,
Neste caso, deve-se transform-la.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 56/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

rvores AVL

Vantagem: a rvore AVL uma rvore balanceada, ou


seja, a distncia mdia dos ns at a raiz mnima. Isto
contribui para que, na mdia, os ns sejam localizados
mais rapidamente,
Aplicao: tabelas dinmicas, onde elementos podem ser
inseridos e removidos freqentemente.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 57/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

rvore de Busca Multidirecional

As rvores de busca no binrias dividem-se em:


rvore de busca multidirecionais (que inclui rvores-B),
rvores de busca digitais.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 58/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

rvore de Busca Multidirecional

rvore de busca multidirecional de ordem n:


cada n possui n ou menos sub-rvores e contm uma
chave a menos que a quantidade de sub-rvores,
Se s0 , s1 , s2 , ... , sm1 so m sub-rvores de um n
contendo as chaves k0 , k1 , ..., km2 , em ordem crescente,

todas as chaves em s0 sero menores ou iguais k0 , todas


as chaves em s1 sero menores ou iguais k1 e maiores
que k0 e assim por diante,
uma ou mais sub-rvores de um n podem estar vazias.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 59/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

rvore de Busca Multidirecional

Exemplo de rvore de ordem 4: 4 sub-rvores no mximo


mximo 3 chaves por n:

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 60/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

rvores-B

Uma rvore-B de ordem m uma rvore de busca


multidirecional balanceada que satisfaz as seguintes
condies:
todo n possui m ou menos sub-rvores (mximo m),
todo n, exceto o raiz, possui no mnimo m/2 sub-rvores
(maior inteiro),
o raiz possui no mnimo duas sub-rvores no vazias,
todas as folhas esto no mesmo nvel,
um n com k sub-rvores armazena k 1 registros,
todos os ns pai (de derivao) possuem exclusivamente
sub-rvores no vazias.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 61/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

rvores-B

Um n com j registros e j + 1 filhos pode ser representado


por:
E0 C1 E1 C2 ... Ej1 Cj Ej

onde:
C1 < C2 < ... < Cj so chaves dos registros,
Ei o endereo da sub-rvore que contm os registros
com chaves compreendidas entre Ci e Ci+1 .
Exemplo de rvore-B de ordem 5: prximo slide.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 62/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

rvores-B

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 63/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

Eficincia

Acesso sequencial = O(n):


Quanto mais as estruturas (tabelas, arquivos, etc.)
crescem, mais acessos h,
Quando armazenamento em disco, reduzir acessos
essencial.
Busca binria = O(log(n)):
Restrita a arranjos.
rvores AVL (no melhor caso) = O(log(n)):
No importa o tamanho da tabela.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 64/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

Eficincia

Estrutura localizao insero remoo


de Dados
rvore binria O(n) (pc) O(n) (pc) O(n) (pc)
de busca O(log n) (m) O(log n) (m) O(log n) (m)
rvore AVL O(log n) (pc) O(log n) (pc) O(log n) (pc)
rvore-B O(log n) (pc) O(log n) (pc) O(log n) (pc)
Resumo de algumas implementaes de dicionrios. Legenda: pc = pior
caso, m = caso mdio. [2]

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 65/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

Reflexo

Acesso em tempo constante:


Tradicionalmente, endereamento direto em um arranjo:
Cada chave k mapeada na posio k do arranjo:
Funo de mapeamento f (k ) = k .

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 66/121
Busca
Busca por interpolao
Outros tipos de Busca
Busca em rvores
Hashing

Reflexo

Endereamento direto:
Vantagem: Acesso direto e, portanto, rpido:
Via indexao do arranjo.
Desvantagem: Uso ineficiente do espao de
armazenamento:
Declara-se um arranjo do tamanho da maior chave?
E se as chaves no forem contnuas? Por exemplo, {1 e
100},
Pode sobrar espao? Pode faltar?

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 67/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Reflexo

Hashing:
Acesso direto, mas endereamento indireto:
Funo de mapeamento h(k ) 6= k , em geral,
Resolve uso ineficiente do espao de armazenamento.
Ideal: O(1), em mdia, independente do tamanho do
arranjo,
Hash significa (Websters New World Dictionary):
1 Fazer picadinho de carne e vegetais para cozinhar,
2 Fazer uma baguna.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 68/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Sumrio

1 Busca
Introduo
Busca Sequencial
Busca Binria
2 Outros tipos de Busca
Busca por interpolao
Busca em rvores
3 Hashing
Conceitos
Funes hash
Tipos de hashing

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 69/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing: Conceitos e definies

Tambm conhecido como tabela de espalhamento ou de


disperso,
Hashing uma tcnica que utiliza uma funo h para
transformar uma chave k em um endereo:
O endereo usado para armazenar e recuperar registros.
Ideia: particionar um conjunto de elementos
(possivelmente infinito) em um nmero finito de classes:
B classes, de 0 a B 1,
Classes so chamadas de buckets.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 70/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing: Conceitos e definies


Conceitos relacionados:
A funo h chamada de funo hash,
h(k ) retorna o valor hash de k :
Usado como endereo para armazenar a informao cuja
chave k .
k pertence ao bucket h(k ).

A funo hash utilizada para inserir, remover ou buscar


um elemento:
Deve ser determinstica, ou seja, resultar sempre no
mesmo valor para uma determinada chave.
Joo Lus G. Rosa
c 2009 - SCC-201: V. Mtodos de Busca 71/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing: Conceitos e definies

Coliso: ocorre quando a funo hash produz o mesmo


endereo para chaves diferentes:
As chaves com mesmo endereo so ditas sinnimos.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 72/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing: Conceitos e definies


Distribuio uniforme muito difcil:
Dependente de clculos matemticos e estatsticos
complexos.
Funo que aparente gerar endereos aleatrios:
Existe chance de alguns endereos serem gerados mais
de uma vez e de alguns nunca serem gerados.
Existem alternativas melhores que a puramente aleatria,
Segredos para um bom hashing:
Escolher uma boa funo hash (em funo dos dados):
Distribui uniformemente os dados, na medida do possvel:
Hash uniforme.
Evita colises,
fcil/rpida de computar.
Estabelecer uma boa estratgia para tratamento de
colises.
Joo Lus G. Rosa
c 2009 - SCC-201: V. Mtodos de Busca 73/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Exemplo de funo hash

Tcnica simples e muito utilizada que produz bons


resultados:
Para chaves inteiras, calcular o resto da diviso k /B (k %B),
sendo que o resto indica a posio de armazenamento:
k = valor da chave, B = tamanho do espao de
endereamento.
Para chaves tipo string, tratar cada caractere como um
valor inteiro (ASCII), som-los e pegar o resto da diviso
por B,
B deve ser primo, preferencialmente.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 74/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Sumrio

1 Busca
Introduo
Busca Sequencial
Busca Binria
2 Outros tipos de Busca
Busca por interpolao
Busca em rvores
3 Hashing
Conceitos
Funes hash
Tipos de hashing

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 75/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Exemplo de funo hash

Exemplo:
Seja B um arranjo de 7 elementos:
Insero dos nmeros 1, 5, 10, 20, 25, 24.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 76/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Exemplo de funo hash

Exemplo:
Seja B um arranjo de 7 elementos:
Insero dos nmeros 1, 5, 10, 20, 25, 24.

1%7=1

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 77/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Exemplo de funo hash

Exemplo:
Seja B um arranjo de 7 elementos:
Insero dos nmeros 1, 5, 10, 20, 25, 24.

5%7=5

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 78/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Exemplo de funo hash

Exemplo:
Seja B um arranjo de 7 elementos:
Insero dos nmeros 1, 5, 10, 20, 25, 24.

10 % 7 = 3

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 79/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Exemplo de funo hash

Exemplo:
Seja B um arranjo de 7 elementos:
Insero dos nmeros 1, 5, 10, 20, 25, 24.

20 % 7 = 6

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 80/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Exemplo de funo hash

Exemplo:
Seja B um arranjo de 7 elementos:
Insero dos nmeros 1, 5, 10, 20, 25, 24.

25 % 7 = 4

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 81/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Exemplo de funo hash

Exemplo:
Seja B um arranjo de 7 elementos:
Insero dos nmeros 1, 5, 10, 20, 25, 24.

24 % 7 = 3

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 82/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Exemplo de funo hash

Exemplo com string: mesmo raciocnio:


Seja B um arranjo de 13 elementos:
LOWEL = 76 79 87 69 76,
L+O+W+E+L = 387,
h(LOWEL) = 387 % 13 = 10.
Qual a idia por trs da funo hash que usa o resto?
Os elementos sempre caem no intervalo entre 0 e n 1
Outras funes hash?
Como voc trataria colises?

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 83/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Funes hash

s vezes, deseja-se que chaves prximas sejam


armazenadas em locais prximos:
Por exemplo, em um compilador, os identificadores de
variveis pt e pts.
Normalmente, no se quer tal propriedade:
Questo da aleatoriedade aparente:
Hash uniforme, com menor chance de coliso.
Funo hash escolhida deve espelhar o que se deseja.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 84/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Funes hash

Pergunta: supondo que se deseja armazenar n elementos


em uma tabela de m posies, qual o nmero esperado de
elementos por posio na tabela?
Fator de carga = n/m.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 85/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Sumrio

1 Busca
Introduo
Busca Sequencial
Busca Binria
2 Outros tipos de Busca
Busca por interpolao
Busca em rvores
3 Hashing
Conceitos
Funes hash
Tipos de hashing

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 86/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Tipos de Hashing

1 Esttico:
Espao de endereamento no muda,
Fechado: Permite armazenar um conjunto de informaes
de tamanho limitado:
Tcnicas de rehash para tratamento de colises,
Overflow progressivo,
2a . funo hash.
Aberto: Permite armazenar um conjunto de informaes de
tamanho potencialmente ilimitado:
Encadeamento de elementos para tratamento de colises.
2 Dinmico:
Espao de endereamento pode aumentar.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 87/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Hashing fechado:
Uma tabela de buckets utilizada para armazenar
informaes:
Os elementos so armazenados na prpria tabela:
Normalmente conhecido como endereamento aberto.
Colises: aplicar tcnicas de rehash:
Overflow progressivo,
2a . funo hash.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 88/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Tcnicas de rehash:
Se posio h(k ) est ocupada (lembre-se de que h(k )
um ndice da tabela), aplicar funo de rehash sobre h(k ),
que deve retornar o prximo bucket livre: rh(h(k )),
Caractersticas de uma boa funo de rehash:
Cobrir o mximo de ndices entre 0 e B 1,
Evitar agrupamentos de dados.
Alm de utilizar o ndice resultante de h(k ) na funo de
rehash, pode-se usar a prpria chave k e outras funes
hash.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 89/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Overflow progressivo:
rh(h(k )) = (h(k ) + i)%B, com i variando de 1 a B 1 (i
incrementado a cada tentativa).

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 90/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Overflow progressivo:
rh(h(k )) = (h(k ) + i)%B, com i variando de 1 a B 1 (i
incrementado a cada tentativa).

Como saber que a informao procurada no est


armazenada?

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 91/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Exemplo de dificuldade: busca pelo nome Smith:

Pode ter que percorrer muitos campos.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 92/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Exemplo de dificuldade: busca pelo nome Smith:

A remoo do elemento no ndice 9 pode causar uma


falha na busca.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 93/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Exemplo de dificuldade: busca pelo nome Smith:

Soluo para remoo de elementos: no eliminar


elemento, mas indicar que a posio foi esvaziada e que a
busca deve continuar.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 94/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Overflow progressivo:
Exemplo anterior: rh(h(k )) = (h(k ) + i)%B, com
i = 1...B 1:
Chamada sondagem linear, pois todas as posies da
tabela so checadas, no pior caso.
Outro exemplo: rh(h(k )) = (h(k ) + c1 i + c2 i 2 )%B, com
i = 1...B 1 e constantes c1 e c2 :
Chamada sondagem quadrtica, considerada melhor do
que a linear, pois evita mais o agrupamento de elementos.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 95/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Overflow progressivo:
Vantagem:
Simplicidade.
Desvantagens:
1 Agrupamento de dados o
overflow progressivo
(causado por colises),
2 Com estrutura cheia )
a busca fica lenta,
hashing fechado
3 Dificulta inseres
e remoes.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 96/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

2a . funo hash, ou hash duplo:


Uso de 2 funes:
h(k ): funo hash primria,
haux(k ): funo hash secundria.
Exemplo: rh(h(k )) = (h(k ) + i haux(k ))%B, com
i = 1...B 1.
Algumas boas funes:
h(k ) = k %B,
haux(k ) = 1 + k %(B 1).

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 97/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

2a . funo hash, ou hash duplo:


Vantagem:
Evita agrupamento de dados, em geral. Por qu?
Desvantagens:
Difcil achar funes hash que, ao mesmo tempo, satisfaam
os critrios de cobrir o mximo de ndices da tabela e evitem
agrupamento de dados,
Operaes de buscas, inseres e remoes so mais
difceis.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 98/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Alternativamente, em vez de fazer o hashing utilizando


uma funo hash e uma funo de rehash, podemos
representar isso em uma nica funo dependente do
nmero da tentativa (i),
Por exemplo: h(k , i) = (k + i)%B, com i = 0...B 1:
A funo h depende agora de dois fatores: a chave k e a
iterao i,
Note que i = 0 na primeira execuo, resultando na funo
hash tradicional de diviso que j conhecamos,
Quando i = 1...B 1, j estamos aplicando a funo de
rehash de sondagem linear.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 99/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Exerccio: implemente uma sub-rotina de insero


utilizando funo hash anterior:
#define B 100
#define h(k,i) (k+i)%B
int inserir(int T[], int k)
{
int i, j;
for (i=0; i<B; i++)
{
j=h(k,i);
if (T[j]==-1)
{
T[j]=k;
return(j);
}
}
return(-1) //tabela j est cheia
}

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 100/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Hashing aberto:
A tabela de buckets, indo de 0 a B 1, contm apenas
ponteiros para uma lista de elementos,
Quando h coliso, o sinnimo inserido no bucket como
um novo n da lista,
Busca deve percorrer a lista.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 101/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Se as listas estiverem ordenadas, reduz-se o tempo de


busca:
Dificuldade deste mtodo?

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 102/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico

Vantagens:
A tabela pode receber mais itens mesmo quando um
bucket j foi ocupado,
Permite percorrer a tabela por ordem de valor hash.
Desvantagens:
Espao extra para as listas,
Listas longas implicam em muito tempo gasto na busca:
Se as listas estiverem ordenadas, reduz-se o tempo de
busca,
Custo extra com a ordenao.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 103/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing esttico: Eficincia

Hashing fechado:
Depende da tcnica de rehash:
Com overflow progressivo, aps vrias inseres e
remoes, o nmero de acessos aumenta.
A tabela pode ficar cheia,
Pode haver mais espao para a tabela, pois no so
necessrios ponteiros e campos extras como no hashing
aberto.
Hashing aberto:
Depende do tamanho das listas e da funo hash:
Listas longas degradam desempenho,
Poucas colises implicam em listas pequenas.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 104/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Algumas boas funes hash

Diviso:
h(k ) = k %m, com m tendo um tamanho primo, de
preferncia.
Multiplicao:
h(k ) = (k A%1) m, com A sendo uma constante entre 0
e 1:
(k A%1) recuperaa parte fracionria de k A,
Knuth sugere A = 512
= 0, 6180 . . .

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 105/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Algumas boas funes hash

Hash universal:
A funo hash escolhida aleatoriamente no incio de
cada execuo, de forma que minimize/evite tendncias
das chaves,
Por exemplo, h(k ) = ((A k + B)%P)%m:
P um nmero primo maior do que a maior chave k ,
A uma constante escolhida aleatoriamente de um conjunto
de constantes {0, 1, 2, ..., P 1} no incio da execuo,
B uma constante escolhida aleatoriamente de um conjunto
de constantes {1, 2, ..., P 1} no incio da execuo.
Diz-se que h representa uma coleo de funes universal.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 106/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing

Hash perfeito:
Quando no h coliso:
Aplicvel em um cenrio em que o conjunto de chaves
esttico,
Exemplo de cenrio deste tipo?
Exemplo de hash perfeito:
Hashing em 2 nveis,
Uma primeira funo hash universal utilizada para
encontrar a posio na tabela, sendo que cada posio da
tabela contm uma outra tabela (ou seja, outro arranjo),
Uma segunda funao hash universal utilizada para indicar
a posio do elemento na nova tabela.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 107/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing dinmico

O tamanho do espao de endereamento (nmero de


buckets) pode aumentar,
Exemplo de hashing dinmico:
Hashing extensvel: Conforme os elementos so inseridos
na tabela, o tamanho aumenta se necessrio:
Supondo que o nmero mximo de elementos por bucket
N, sempre que o elemento N + 1 surgir, o bucket dividido
juntamente com os elementos.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 108/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing dinmico

Hashing extensvel:
Em geral, trabalha-se com bits,
Aps h(k ) ser computada, uma segunda funo f
transforma o ndice h(k ) em uma sequncia de bits:
Os bits so utilizados para indexar de fato a chave.
Alternativamente, h e f podem ser unificadas como uma
nica funo hash final.
Funo hash computa sequncia de m bits para uma
chave k , mas apenas os i primeiro bits (i m) do incio da
sequncia so usados como endereo:
Se i o nmero de bits usados, a tabela de buckets ter 2i
entradas,
Portanto, tamanho da tabela de buckets cresce sempre
como potncia de 2.
N o nmero de ns permitidos por bucket,
Tratamento de colises: listas encadeadas, em geral.
Joo Lus G. Rosa
c 2009 - SCC-201: V. Mtodos de Busca 109/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing dinmico

Hashing extensvel: inicialmente, tabela vazia:


m = 4 (bits), N = 2.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 110/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing dinmico

Hashing extensvel: insero do elemento 0001:


m = 4 (bits), N = 2.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 111/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing dinmico

Hashing extensvel: insero do elemento 1001:


m = 4 (bits), N = 2.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 112/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing dinmico

Hashing extensvel: insero do elemento 1100:


m = 4 (bits), N = 2.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 113/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing dinmico

Hashing extensvel: insero do elemento 1010:


m = 4 (bits), N = 2.
N ultrapassado e a tabela precisa ser rearranjada, pois um
nico bit no suficiente para diferenciar os elementos,
sendo que o ndice em que houve problema tem seu bit
incrementado.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 114/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing dinmico

Hashing extensvel: rearranjando tabela:


m = 4 (bits), N = 2.
Nmero de posies (i) aumenta para observar a restrio
de N e chaves so rearranjadas.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 115/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing dinmico

Exemplo: Insira os elementos 0000, 0111 e 1000, nesta


ordem:
Hashing extensvel: resultado das inseres:

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 116/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Hashing dinmico

Vantagens:
Custo de acesso constante, determinado pelo tamanho de
N,
A tabela pode crescer.
Desvantagens:
Complexidade extra para gerenciar o aumento do arranjo e
a diviso das listas,
Podem existir sequncias de inseres que faam a tabela
crescer rapidamente, tendo, contudo, um nmero pequeno
de registros.
Quais so as principais desvantagens de hashing?
Os elementos da tabela no so armazenados
sequencialmente e nem sequer existe um mtodo prtico
para percorr-los em sequncia.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 117/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Mtodos de Busca: Resumo

Busca sequencial,
Busca sequencial indexada,
Busca binria,
Busca por interpolao,
Busca em rvores:
AVLs.
Hashing.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 118/121
Busca Conceitos
Outros tipos de Busca Funes hash
Hashing Tipos de hashing

Mtodos de Busca: Resumo

Critrios para se eleger um (ou mais) mtodo(s):


Eficincia da busca,
Eficincia de outras operaes:
Insero e remoo,
Listagem e ordenao de elementos,
Outras?
Frequncia das operaes realizadas,
Dificuldade de implementao,
Consumo de memria (interna),
Tempo de acesso a memria externa,
Outros?

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 119/121
Apndice Bibliografia

Bibliografia I

[1] Cormen, T. H., Leiserson, C. E., Rivest, R. L., Stein, C.


Algoritmos - Teoria e Prtica.
Ed. Campus, Rio de Janeiro, Segunda Edio, 2002.
[2] Horowitz, E., Sahni, S. Rajasekaran, S.
Computer Algorithms.
Computer Science Press, 1998.
[3] Pardo, Thiago A. S.
Mtodos de Busca. SCE-181 Introduo Cincia da
Computao II.
Slides. Cincia de Computao. ICMC/USP, 2008.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 120/121
Apndice Bibliografia

Bibliografia II

[4] Rosa, Joo Lus G.


Estrutura de Dados II.
Slides. Engenharia de Computao. PUC-Campinas, 2008.
[5] Tenenbaum, A. M., Langsam, Y., Augestein, M. J.
Estruturas de Dados Usando C.
Makron Books, 1995.
[6] Wirth, N.
Algoritmos e Estruturas de Dados.
LTC, 1989.

Joo Lus G. Rosa


c 2009 - SCC-201: V. Mtodos de Busca 121/121

Você também pode gostar