Вы находитесь на странице: 1из 29

Algoritmos: Ordenao e Busca

Prof. Marcelo Quinta Prof. Marcos Roriz

Roteiro
Aula Anterior Funes Hash Prxima aula

Aula Anterior
Funes Hash

Motivao
Pesquisa sequencial Pesquisa binria
Ineficientes para tabelas muito grandes

Motivao
Pesquisa sequencial Pesquisa binria Ideal
Indexao direta (transformao chave-ndice)
pesq (T:tabela, C:chave) elemento

Ineficientes para tabelas muito grandes

Hash
Significa:

Hash
Significa:
Fazer picadinho de carne e vegetais para cozinhar;

Hash
Significa:
Fazer picadinho de carne e vegetais para cozinhar; Fazer uma baguna;

Funo Hash
Funo de disperso ou de espalhamento. h(chave) [min .. max]

Funo Hash
Funo de disperso ou de espalhamento. h(chave) [min .. max]

c : chave

Funo Hash
Funo de disperso ou de espalhamento. h(chave) [min .. max]

c : chave

h(c)

Funo Hash
Funo de disperso ou de espalhamento. h(chave) [min .. max]
min c : chave

h(c)

max

Roteiro
Aula Anterior Funes Hash Prxima aula

Funo de Transformao
Uma funo de transformao deve mapear chaves em inteiros dentro do intervalo [min .. max]. Geralmente: min = 0 e max = M M o tamanho da tabela.

Funo de Transformao
A funo de transformao ideal aquela que:
1. Seja simples de ser computada. 2. Para cada chave de entrada, qualquer uma das sadas possveis igualmente provvel de ocorrer.

Funo de Transformao
Como as transformaes sobre as chaves so aritmticas, deve-se transformar as chaves no-numricas em nmeros. Em Java, basta realizar uma converso de cada caractere da chave no numrica para um nmero inteiro.

Funo mais usada


Usa o resto da diviso por M .
h(K) = K mod M
Onde K um inteiro correspondente chave. M o tamanho da tabela.

Funo mais usada


Usa o resto da diviso por M .
h(K) = K mod M
Onde K um inteiro correspondente chave. M o tamanho da tabela.
K mod M

Transformao de chaves no numricas

Transformao de chaves no numricas

Transformao de chaves no numricas

Coliso
Funo de disperso ou de espalhamento. h(chave) [min .. max]

c : chave

h(c)

Coliso
Funo de disperso ou de espalhamento. h(chave) [min .. max]
min c : chave

h(c)

max

Coliso
Funo de disperso ou de espalhamento. h(chave) [min .. max]
min c : chave

h(c)

max

Coliso
Funo de disperso ou de espalhamento. h(chave) [min .. max]
min c : chave

h(c)

max

Lista Linear
Uma das formas de resolver as colises simplesmente construir uma lista linear encadeada para cada endereo da tabela. Assim, todas as chaves com mesmo endereo so encadeadas em uma lista linear.

Lista Linear

Lista Linear

Lista Linear
Trabalho:
Implementar uma funo hash simples que recebe strings como entrada e usa a estrutura de lista linear para tratar colises. Use a funo geraPeso e h para os pesos e hash da funo respectivamente. Use M como 31, 79, 151. Entrada: 100, 1000, 10000 strings. Sada: Nmero de colises e tempo de execuo.

Вам также может понравиться