Buscar

Algoritmos de Busca em Memória Interna

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

18/04/2012
1
Prof. Debora Medeiros
UTFPR – Universidade Tecnológica Federal do Paraná
*Slides baseados no material do Prof. Thiago A. S. Pardo (USP)
� Análise
� Assumindo que todos os elementos são distintos
� Pior caso
▪ Ordenado reversamente
▪ T(n) = T(n-1)+O(n) (série aritmética)
=O(n2)
� Análise – pior caso
� Árvore de recursão
� Análise – melhor caso
� Se a escolha do pivô divide o arquivo em partes 
iguais
� Recorrência:
▪ T(n) = 2T(n/2) + O(n) = O(n log n) 
� Igual ao mergesort
43
� Complexidade
� Caso médio
▪ Supor particionamento 9-por-1
44
� Análise - Caso médio
18/04/2012
2
45
� Complexidade
� Um dos algoritmos mais rápidos para uma variedade de 
situações, sendo provavelmente mais utilizado do que 
qualquer outro algoritmo
� Geralmente 2x mais rápido do que o Mergesort
� Pergunta: como evitar o pior caso?
▪ Boa abordagem: escolher 3 elementos quaisquer do vetor e usar a 
mediana deles como pivô
▪ Alternativa: escolha aleatória do pivô
� Cormen, T.; Lieserson, C.; Rivest, R. 
Introduction to Algorithms. MIT Press, 1991.
� Leiserson, Charles, and Erik Demaine. 6.046J 
Introduction to Algorithms (SMA 5503), Fall 
2005. (Massachusetts Institute of Technology: 
MIT OpenCourseWare), http://ocw.mit.edu. 
License: Creative Commons BY-NC-SA
Prof. Debora Medeiros
UTFPR – Universidade Tecnológica Federal do Paraná
*Slides baseados no material do Prof. Thiago A. S. Pardo (USP)
48
� Importância em estudar busca
� Busca é uma tarefa muito comum?
� Certos métodos de organização/ordenação de 
dados podem tornar o processo de busca mais 
eficiente
49
� 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 específica”
50
� Algumas técnicas de busca são
� Busca Seqüencial
� Busca Binária
� Busca por Interpolação
� Busca em Árvores
� Hashing
� O objetivo é encontrar um dado registro com o menor
custo
� Cada técnica possui vantagens e desvantagens
18/04/2012
3
51
� Algumas técnicas de busca em memória interna são
� Busca Seqüencial
� Busca Binária
� Busca por Interpolação
� Busca em Árvores
� Hashing
� O objetivo é encontrar um dado registro com o menor
custo
� Cada técnica possui vantagens e desvantagens
52
� Busca mais simples que há
� Percorre-se registro por registro em busca da 
chave
12 25 33 37 48 57 86 92
0 (N-1)=7
53
� Busca mais simples que há
� Percorre-se registro por registro em busca da 
chave
12 25 33 37 48 57 86 92
0 (N-1)=7
54
� Busca mais simples que há
� Percorre-se registro por registro em busca da 
chave
12 25 33 37 48 57 86 92
0 (N-1)=7
Procure por 48
55
� Busca mais simples que há
� Percorre-se registro por registro em busca da 
chave
12 25 33 37 48 57 86 92
0 (N-1)=7
Procure por 48
56
� Busca mais simples que há
� Percorre-se registro por registro em busca da 
chave
12 25 33 37 48 57 86 92
0 (N-1)=7
Procure por 48
18/04/2012
4
57
� Busca mais simples que há
� Percorre-se registro por registro em busca da 
chave
12 25 33 37 48 57 86 92
0 (N-1)=7
Procure por 48
58
� Busca mais simples que há
� Percorre-se registro por registro em busca da 
chave
12 25 33 37 48 57 86 92
0 (N-1)=7
Procure por 48
59
� Busca mais simples que há
� Percorre-se registro por registro em busca da 
chave
12 25 33 37 48 57 86 92
0 (N-1)=7
Procure por 48
60
� Implementação
� Algoritmo de busca seqüencial em um vetor A, com N posições (0 
até N-1), sendo x a chave procurada
61
� Uma maneira de tornar o algoritmo mais 
eficiente é usar um sentinela
� Sentinela: consiste em adicionar um elemento de valor 
x no final da tabela
� Qual a vantagem de se usar um nó sentinela?
62
� 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 será encontrado, 
o que elimina um teste, melhorando a performance do 
algoritmo
18/04/2012
5
63
� Implementação
� Busca seqüencial com sentinela
64
� Complexidade
� Se o registro for o primeiro: 1 comparação
� Se o registro procurado for o último: N comparações
� Se for igualmente provável que o argumento apareça em qualquer 
posição da tabela, em média: (n+1)/2 comparações
� Se a busca for mal sucedida: N comparações
� Logo, a busca seqüencial, no pior caso, é O(n)
65
� Para aumentar a eficiência
� Reordenar continuamente a tabela de modo que os registros 
mais acessados sejam deslocados para o início
▪ A) Método mover-para-frente: sempre que uma pesquisa obtiver êxito, 
o registro recuperado é colocado no início da lista
▪ B) Método da transposição: um registro recuperado com sucesso é 
trocado com o registro imediatamente anterior
▪ Ambos se baseiam no fenômeno da recuperação recorrente de registros
66
� Desvantagens do método mover-para-frente
� Uma única recuperação não implica que o registro será 
freqüentemente recuperado
▪ Perda de eficiência para os outros registros
� O método é mais “caro” em vetores do que em listas
▪ Por quê?
� Vantagens do método mover-para frente
� Possui resultados melhores para quantidades pequena e 
média de buscas
67
� Busca seqüencial em tabela ordenada
� A eficiência da operação de busca melhora se as chaves 
dos registros estiverem ordenadas
▪ No pior caso (caso em que a chave não é encontrada), são 
necessárias N comparações quando as chaves estão desordenadas
▪ No caso médio, N/2 comparações se as chaves estiverem 
ordenadas, pois se para a busca assim que uma chave maior do que 
a procurada é encontrada
� Dificuldade do método?

Outros materiais