You are on page 1of 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 Outros tipos de Busca Busca por interpolao Busca em rvores Hashing Conceitos Funes hash Tipos de hashing

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

2/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Sumrio
1

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

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

3/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 eciente.

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

4/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

A importncia em estudar busca

O problema da busca (ou pesquisa): Dado um conjunto de elementos, onde cada um identicado por uma chave, o objetivo da busca localizar, nesse conjunto, o elemento que corresponde a uma chave especca.

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

5/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 especca, 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Terminologia bsica

A tabela pode ser:


Um vetor de registros, Uma lista encadeada, Uma rvore, Etc.

A tabela pode car:


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 Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Sumrio
1

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

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

10/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

12/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

13/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

14/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

15/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

16/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

17/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial
Uma maneira de tornar o algoritmo mais eciente usar um sentinela:
Sentinela: consiste em adicionar um elemento de valor x no nal 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial
Limitaes do vetor:
Tamanho xo:
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) comparaes, 2 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial
Arranjo no ordenado:
Insero no nal do arranjo, Remoo:
Realocao dos registros acima do registro removido.

Para aumentar a ecincia:


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, 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial

Desvantagens do mtodo mover-para-frente:


Uma nica recuperao no implica que o registro ser frequentemente recuperado:
Perda de ecincia 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial

Busca sequencial em tabela ordenada:


A ecincia 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, N comparaes se as chaves estiverem 2 ordenadas, pois se para a busca assim que uma chave maior do que a procurada encontrada.

Diculdade do mtodo?

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

23/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

25/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca sequencial

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

27/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 ca vazia.

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

29/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Sumrio
1

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

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

38/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca binria

Busca-se por 25:

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

40/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca binria

Busca-se por 25:

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

41/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca binria

Busca-se por 25:

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

42/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca binria

Busca-se por 25:

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

43/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Introduo Busca Sequencial Busca Binria

Busca binria
Complexidade:
O(log n), pois cada comparao reduz o nmero de possveis candidatos por um fator de 2.

Vantagens:
Ecincia 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 inecientes:


Realocao de elementos.

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

45/121

Busca Outros tipos de Busca Hashing

Introduo Busca Sequencial 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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

Sumrio
1

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

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

47/121

Busca Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

Busca por interpolao

Se as chaves estiverem uniformemente distribudas, esse mtodo pode ser ainda mais eciente 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 redenidos iterativamente como na busca binria.

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

48/121

Busca Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

Sumrio
1

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

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

50/121

Busca Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

rvore binria de busca


Uma rvore binria um conjunto nito 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), As chaves (se houver) na sub-rvore esquerda so menores do que a chave na raiz, As chaves (se houver) na sub-rvore direita so maiores do que a chave na raiz, As sub-rvores esquerda e direita so tambm rvores binrias.
52/121

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

Busca Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

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.

O termo AVL devido a proposta de Adelson-Velskii e Landis, de 1962.


54/121

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

Busca Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

rvores-B

Um n com j registros e j + 1 lhos 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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

rvores-B

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

63/121

Busca Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

Ecincia

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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

Ecincia

Estrutura de Dados rvore binria de busca rvore AVL rvore-B

localizao O(n) (pc) O(log n) (m) O(log n) (pc) O(log n) (pc)

insero O(n) (pc) O(log n) (m) O(log n) (pc) O(log n) (pc)

remoo O(n) (pc) O(log n) (m) 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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

Reexo

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 Outros tipos de Busca Hashing

Busca por interpolao Busca em rvores

Reexo

Endereamento direto:
Vantagem: Acesso direto e, portanto, rpido:
Via indexao do arranjo.

Desvantagem: Uso ineciente 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Reexo

Hashing:
Acesso direto, mas endereamento indireto:
Funo de mapeamento h(k ) = k , em geral, Resolve uso ineciente do espao de armazenamento.

Ideal: O(1), em mdia, independente do tamanho do arranjo, Hash signica (Websters New World Dictionary):
1 2

Fazer picadinho de carne e vegetais para cozinhar, Fazer uma baguna.

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

68/121

Busca Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Sumrio
1

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

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

69/121

Busca Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing: Conceitos e denies

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 innito) em um nmero nito 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing: Conceitos e denies


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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing: Conceitos e denies

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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing: Conceitos e denies


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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Sumrio
1

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

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

75/121

Busca Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Funes hash

s vezes, deseja-se que chaves prximas sejam armazenadas em locais prximos:


Por exemplo, em um compilador, os identicadores 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Sumrio
1

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

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

86/121

Busca Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Tipos de Hashing
Esttico:
Espao de endereamento no muda, Fechado: Permite armazenar um conjunto de informaes de tamanho limitado:
Tcnicas de rehash para tratamento de colises, Overow 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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:


Overow progressivo, 2a . funo hash.

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

88/121

Busca Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing esttico
Overow 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing esttico
Overow 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing esttico

Exemplo de diculdade: 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing esttico

Exemplo de diculdade: 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing esttico
Exemplo de diculdade: 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing esttico

Overow 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing esttico

Overow progressivo:
Vantagem:
Simplicidade.

Desvantagens: 1 2 3 Agrupamento de dados (causado por colises), Com estrutura cheia a busca ca lenta, Diculta inseres e remoes. overow progressivo

hashing fechado

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

96/121

Busca Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing esttico

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


Diculdade deste mtodo?

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

102/121

Busca Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Hashing esttico: Ecincia


Hashing fechado:
Depende da tcnica de rehash:
Com overow progressivo, aps vrias inseres e remoes, o nmero de acessos aumenta.

A tabela pode car 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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) recupera a parte fracionria de k A, Knuth sugere A = 51 = 0, 6180 . . . 2

Joo Lus G. Rosa c 2009 - SCC-201: V. Mtodos de Busca

105/121

Busca Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 unicadas como uma nica funo hash nal. 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 suciente 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash 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 Outros tipos de Busca Hashing

Conceitos Funes hash Tipos de hashing

Mtodos de Busca: Resumo

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


Ecincia da busca, Ecincia de outras operaes:
Insero e remoo, Listagem e ordenao de elementos, Outras?

Frequncia das operaes realizadas, Diculdade 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

Bibliograa

Bibliograa 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

Bibliograa

Bibliograa 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

You might also like