métodos de busca -...
TRANSCRIPT
![Page 1: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/1.jpg)
Métodos de Busca Parte 1
Introdução à Ciência da Computação II Prof. Diego Raphael Amancio
Baseado no material do Prof. Rudinei Goularte e do Prof. Thiago A. S. Pardo
![Page 2: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/2.jpg)
2
Introdução
n Importância em estudar busca n Busca é uma tarefa muito comum?
n Vários métodos e estruturas de dados podem ser empregados para se fazer busca n Quais estruturas de dados?
n Certos métodos de organização/ordenação de dados podem tornar o processo de busca mais eficiente
![Page 3: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/3.jpg)
3
Introdução
n 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”
![Page 4: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/4.jpg)
4
Termos Relacionados
n Tabela: termo genérico, pode ser qualquer estrutura de dados usada para armazenamento interno e organização dos dados
n Uma tabela é um conjunto de elementos, chamados registros
![Page 5: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/5.jpg)
5
Termos Relacionados n Existe uma chave associada a cada registro, usada para diferenciar
os registros entre si
n Chave interna: chave está contida dentro do registro, em uma localização específica
n Chave externa: essas chaves estão contidas em uma tabela de chaves separada que inclui ponteiros para os registros
n Chave primária: para todo arquivo existe pelo menos um conjunto exclusivo de chaves
n Dois registros não podem ter o mesmo valor de chave
n Chave secundária: são as chaves não primárias n Chaves que não precisam ter seus valores exclusivos
![Page 6: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/6.jpg)
6
Termos Relacionados
n Algoritmo de busca
n Formalmente, é o algoritmo que aceita um argumento a e tenta encontrar o registro cuja chave seja a
![Page 7: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/7.jpg)
7
Termos Relacionados n Operações na tabela
n Inserção: adicionar um novo elemento à tabela
n Algoritmo de busca e inserção: se não encontra o registro, insere um novo
n Remoção: retirar um elemento da tabela
n Recuperação: procurar um elemento na tabela e, se achá-lo, torná-lo disponível
![Page 8: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/8.jpg)
8
Tipos de Busca n A tabela pode ser:
n Um vetor de registros n Uma lista encadeada n Uma árvore n Etc.
n A tabela pode ficar: n Totalmente na memória (busca interna) n Totalmente no armazenamento auxiliar (busca
externa) n Dividida entre ambos
![Page 9: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/9.jpg)
9
Tipos de Busca n Algumas técnicas de busca em memória interna
são n Busca Seqüencial n Busca Binária n Busca por Interpolação n Busca em Árvores n Hashing
n O objetivo é encontrar um dado registro com o menor custo n Cada técnica possui vantagens e desvantagens
![Page 10: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/10.jpg)
10
Busca Seqüencial n A busca seqüencial é a forma mais simples de busca
n É aplicável a uma tabela organizada como um vetor ou como uma lista encadeada
![Page 11: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/11.jpg)
11
Busca Seqüencial
n Busca mais simples que há n Percorre-se registro por registro em busca
da chave
12 25 33 37 48 57 86 92 1 N=8
![Page 12: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/12.jpg)
12
Busca Seqüencial
n Busca mais simples que há n Percorre-se registro por registro em busca
da chave
12 25 33 37 48 57 86 92 1 N=8
Procure por 48
![Page 13: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/13.jpg)
13
Busca Seqüencial
n Busca mais simples que há n Percorre-se registro por registro em busca
da chave
12 25 33 37 48 57 86 92 1 N=8
Procure por 48
![Page 14: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/14.jpg)
14
Busca Seqüencial
n Busca mais simples que há n Percorre-se registro por registro em busca
da chave
12 25 33 37 48 57 86 92 1 N=8
Procure por 48
![Page 15: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/15.jpg)
15
Busca Seqüencial
n Busca mais simples que há n Percorre-se registro por registro em busca
da chave
12 25 33 37 48 57 86 92 1 N=8
Procure por 48
![Page 16: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/16.jpg)
16
Busca Seqüencial
n Busca mais simples que há n Percorre-se registro por registro em busca
da chave
12 25 33 37 48 57 86 92 1 N=8
Procure por 48
![Page 17: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/17.jpg)
17
Busca Seqüencial
n Busca mais simples que há n Percorre-se registro por registro em busca
da chave
12 25 33 37 48 57 86 92 1 N=8
Procure por 48
![Page 18: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/18.jpg)
18
Busca Seqüencial n Implementação
n Algoritmo de busca seqüencial em um vetor A, com N posições (0 até N-1), sendo x a chave procurada
![Page 19: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/19.jpg)
19
Busca Seqüencial
n Uma maneira de tornar o algoritmo mais eficiente é usar um sentinela
n Sentinela: consiste em adicionar um elemento de valor x no final da tabela
n Qual a vantagem de se usar um nó sentinela?
![Page 20: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/20.jpg)
20
Busca Seqüencial
n Uma maneira de tornar o algoritmo mais eficiente é usar um sentinela
n Sentinela: consiste em adicionar um elemento de valor x no final da tabela
n O sentinela garante que o elemento será encontrado, o que elimina um teste, melhorando a performance do algoritmo
![Page 21: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/21.jpg)
21
Busca Seqüencial n Implementação
n Busca seqüencial com sentinela
![Page 22: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/22.jpg)
22
Busca Seqüencial
n Limitações do vetor n Tamanho fixo
n Pode desperdiçar ou faltar espaço
n Alternativa n Lista encadeada
n O que muda na busca seqüencial?
![Page 23: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/23.jpg)
23
Busca Seqüencial
![Page 24: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/24.jpg)
24
Busca Seqüencial
n Complexidade
n Se o registro for o primeiro: 1 comparação
n Se o registro procurado for o último: N comparações
n Se for igualmente provável que o argumento apareça em qualquer posição da tabela, em média: (n+1)/2 comparações
n Se a busca for mal sucedida: N comparações
n Logo, a busca seqüencial, no pior caso, é O(n)
![Page 25: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/25.jpg)
25
Busca Seqüencial
n Arranjo não ordenado
n Inserção no final do arranjo
n Remoção n Realocação dos registros acima do registro
removido
![Page 26: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/26.jpg)
26
Busca Seqüencial
n Para aumentar a eficiência
n Reordenar continuamente a tabela de modo que os registros mais acessados sejam deslocados para o início
n A) Método mover-para-frente: sempre que uma pesquisa obtiver êxito, o registro recuperado é colocado no início da lista
n B) Método da transposição: um registro recuperado com sucesso é trocado com o registro imediatamente anterior
n Ambos se baseiam no fenômeno da recuperação recorrente de registros
![Page 27: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/27.jpg)
27
Busca Seqüencial
n Desvantagens do método mover-para-frente n Uma única recuperação não implica que o registro
será freqüentemente recuperado n Perda de eficiência para os outros registros
n O método é mais “caro” em vetores do que em listas n Por quê?
n Vantagens do método mover-para frente n Possui resultados melhores para quantidades
pequena e média de buscas
![Page 28: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/28.jpg)
28
Busca Seqüencial n Busca seqüencial em tabela ordenada
n A eficiência da operação de busca melhora se as chaves dos registros estiverem ordenadas
n No pior caso (caso em que a chave não é encontrada), são necessárias N comparações quando as chaves estão desordenadas
n 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
![Page 29: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/29.jpg)
29
Busca Seqüencial n Busca seqüencial indexada
n Existe uma tabela auxiliar, chamada tabela de índices, além do próprio arquivo ordenado
n Cada elemento na tabela de índices contém uma chave (kindex) e um indicador do registro no arquivo que corresponde a kindex
n Faz-se a busca a partir do ponto indicado na tabela, sendo que a busca não precisa ser feita desde o começo
n Pode ser implementada como um vetor ou como uma lista encadeada
n O indicador da posição na tabela pode ser um ponteiro ou uma variável inteira
![Page 30: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/30.jpg)
30
Busca Seqüencial
321
592
876
...
kindex
Tabela de índices ....
14
38
115
321
387
512
567
583
592
611
741
811
876
....
Chave Registro
![Page 31: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/31.jpg)
31
Busca Seqüencial
n Busca seqüencial indexada
n Se a tabela for muito grande, pode-se ainda usar a tabela de índices secundária
n O índice secundário é um índice para o índice primário
![Page 32: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/32.jpg)
32
Busca Seqüencial
321
592
876
...
kindex
Índice primário ....
14
38
115
321
387
512
567
583
592
611
741
811
876
....
Chave Registro
321
876
...
kindex
Índice secundário
![Page 33: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/33.jpg)
33
Busca Seqüencial n Vantagem
n Os itens na tabela poderão ser examinados seqüencialmente sem que todos os registros precisem ser acessados
n O tempo de busca diminui consideravelmente
n Desvantagens
![Page 34: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/34.jpg)
34
Busca Seqüencial n Vantagem
n Os itens na tabela poderão ser examinados seqüencialmente sem que todos os registros precisem ser acessados
n O tempo de busca diminui consideravelmente
n Desvantagens n A tabela tem que estar ordenada
![Page 35: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/35.jpg)
35
Busca Seqüencial n Vantagem
n Os itens na tabela poderão ser examinados seqüencialmente sem que todos os registros precisem ser acessados
n O tempo de busca diminui consideravelmente
n Desvantagens n A tabela tem que estar ordenada n Exige espaço adicional para armazenar a(s) tabela(s) de
índices
n Algo mais?
![Page 36: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/36.jpg)
36
Busca Seqüencial n Vantagem
n Os itens na tabela poderão ser examinados seqüencialmente sem que todos os registros precisem ser acessados
n O tempo de busca diminui consideravelmente
n Desvantagens n A tabela tem que estar ordenada n Exige espaço adicional para armazenar a(s) tabela(s) de
índices
n Cuidados com inserção e remoção
![Page 37: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/37.jpg)
37
Busca Seqüencial
n Remoção
n Remove-se o elemento e rearranja-se a tabela inteira e o(s) índice(s)
n Marca-se a posição do elemento removido, indicando que ela pode ser ocupada por um outro elemento futuramente
n A posição da tabela fica vazia
![Page 38: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/38.jpg)
38
Busca Seqüencial
n Inserção
n Se houver espaço vago na tabela, rearranjam-se os elementos localmente
n Se não houver espaço vago n Rearranjar a tabela a partir do ponto
apropriado e reconstruir o(s) índice(s)
![Page 39: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/39.jpg)
39
Busca Seqüencial
n Inserção do elemento 512 com espaço vago n 567 e 583 descem n 512 é inserido
321
592
876
...
kindex
....
14
38
115
321
387
567
583
592
611
741
811
876
....
Chave Registro
![Page 40: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/40.jpg)
40
Busca Seqüencial
n Inserção do elemento 512 com espaço vago n 567 e 583 descem n 512 é inserido
321
592
876
...
kindex
....
14
38
115
321
387
512
567
583
592
611
741
811
876
....
Chave Registro
![Page 41: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/41.jpg)
41
Busca Seqüencial
n Inserção do elemento 512 sem espaço vago n Elementos a partir
de 567 descem n 512 é inserido n Índice é re-
construído
321
592
876
...
kindex
....
14
38
115
321
387
567
583
585
592
611
741
811
876
....
Chave Registro
![Page 42: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/42.jpg)
42
Busca Seqüencial
n Inserção do elemento 512 sem espaço vago n Elementos a partir
de 567 descem n 512 é inserido n Índice é re-
construído
321
592
876
...
kindex
....
14
38
115
321
387
512
567
583
585
592
611
741
811
....
Chave Registro
![Page 43: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/43.jpg)
43
Busca Seqüencial n Como montar o índice primário
n Se a tabela não estiver ordenada, ordene-a
n Divide-se o número de elementos da tabela pelo tamanho do índice desejado: n/tamanho-índice
n Para montar o índice, recuperam-se da tabela os elementos 0, 0+n/tamanho-índice, 0+2*n/tamanho-índice, etc.
n Cada elemento do índice representa n/tamanho-índice elementos da tabela
![Page 44: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/44.jpg)
44
Busca Seqüencial n Exemplo
n Divide-se o número de elementos da tabela pelo tamanho do índice desejado
n Se a tabela tem 1.000 elementos e deseja-se um índice primário de 10 elementos, faz-se 1.000/10=100
n Para montar o índice, recuperam-se da tabela os elementos 0, 0+n/tamanho-índice, 0+2*n/tamanho-índice, etc.
n O índice primário é montado com os elementos das posições 0, 100, 200, etc. da tabela
n Cada elemento do índice representa n/tamanho-índice elementos da tabela
n Cada elemento do índice primário aponta para o começo de um grupo de 100 elementos da tabela
![Page 45: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/45.jpg)
45
Busca Seqüencial
n Para montar um índice secundário, aplica-se raciocínio similar sobre o índice primário
n Em geral, não são necessários mais do que 2 índices
![Page 46: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/46.jpg)
46
Busca Seqüencial
n Exercício n Escrever em C a sub-rotina para produzir o
índice primário de um vetor ordenado void criaIndice
n bloco_indice indice[] n int tamanho_indice n int v[] n int n
kindex
pos
![Page 47: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/47.jpg)
Implementação
47
![Page 48: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/48.jpg)
48
Busca Seqüencial
n Exercício (nota adicional)
n Escrever em C uma sub-rotina de busca sequencial indexada por um elemento em uma tabela com índice primário
n int bsi à retorna posicao n int v[], int n n bloco_indice indice[], int tamanho_indice n int x
![Page 49: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/49.jpg)
Implementação
49
![Page 50: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/50.jpg)
50
Busca Binária
n Se os dados estiverem ordenados em um arranjo, pode-se tirar vantagens dessa ordenação n Busca binária
A[i]<=A[i+1], se ordem crescente
A[i]>=A[i+1], se ordem decrescente
![Page 51: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/51.jpg)
51
Busca Binária
n O elemento buscado é comparado ao elemento do meio do arranjo n Se igual, busca bem-sucedida n Se menor, busca-se na metade inferior do
arranjo n Se maior, busca-se na metade superior do
arranjo
![Page 52: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/52.jpg)
52
12 25 33 37 48 57 86 92 inf=1 sup=N=8
Busca Binária
n Busca-se por 25
![Page 53: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/53.jpg)
53
12 25 33 37 48 57 86 92
25 < 37
meio inf=1 sup=N=8
n Busca-se por 25
Busca Binária
![Page 54: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/54.jpg)
54
12 25 33 37 48 57 86 92 sup=3 inf=1 N=8
Busca Binária
n Busca-se por 25
![Page 55: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/55.jpg)
55
12 25 33 37 48 57 86 92 N=8
=25
meio sup=3 inf=1
n Busca-se por 25
Busca Binária
![Page 56: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/56.jpg)
56
12 25 33 37 48 57 86 92 N=8
=25
meio sup=3 inf=1
n Busca-se por 25
Em cada passo, o tamanho do arranjo em que se busca é dividido por 2
Busca Binária
![Page 57: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/57.jpg)
57
Busca Binária
n Exercício
n Escrever em C uma sub-rotina de busca binária por um elemento em um arranjo ordenado
n Versão recursiva n Versão não recursiva
![Page 58: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/58.jpg)
58
![Page 59: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/59.jpg)
59
![Page 60: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/60.jpg)
60
Busca Binária
n Complexidades?
![Page 61: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/61.jpg)
61
Busca Binária
n Complexidades? n O(log(n)), pois cada comparação reduz o
número de possíveis candidatos por um fator de 2
![Page 62: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/62.jpg)
62
Busca Binária
n Vantagens n Eficiência da busca n Simplicidade da implementação
n Desvantagens n Nem todo arranjo está ordenado
![Page 63: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/63.jpg)
63
Busca Binária
n Vantagens n Eficiência da busca n Simplicidade da implementação
n Desvantagens n Nem todo arranjo está ordenado n Exige o uso de um arranjo para armazenar os dados
n Faz uso do fato de que os índices do vetor são inteiros consecutivos
n Inserção e remoção de elementos são ineficientes n Realocação de elementos
![Page 64: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/64.jpg)
64
Busca Binária
n A busca binária pode ser usada com a organização de tabela seqüencial indexada n Em vez de pesquisar o índice seqüencialmente,
pode-se usar uma busca binária
![Page 65: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/65.jpg)
65
Busca por Interpolação n Se as chaves estiverem uniformemente distribuídas,
esse método pode ser ainda mais eficiente do que a busca binária
n Com chaves uniformemente distribuídas, pode-se esperar que x esteja aproximadamente na posição
meio = inf + (sup – inf) * ((x – A[inf]) / (A[sup] – A[inf]))
sendo que inf e sup são redefinidos iterativamente como na busca binária
![Page 66: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/66.jpg)
66
Busca por Interpolação
n Complexidade
n O(log(log(n))) se as chaves estiverem uniformemente distribuídas
n Raramente precisará de mais comparações
n Se as chaves não estiverem uniformemente distribuídas, a busca por interpolação pode ser tão ruim quanto uma busca seqüencial
![Page 67: Métodos de Busca - wiki.icmc.usp.brwiki.icmc.usp.br/images/1/12/SCC-601-Aula_12-Métodos_de_Busca-… · 3 Introdução ! O problema da busca (ou pesquisa) “Dado um conjunto de](https://reader033.vdocuments.pub/reader033/viewer/2022042318/5f0753517e708231d41c6d49/html5/thumbnails/67.jpg)
67
Busca por Interpolação
n Desvantagem
n Em situações práticas, as chaves tendem a se aglomerar em torno de determinados valores e não são uniformemente distribuídas
n Exemplo: há uma quantidade maior de nomes começando com “S” do que com “Q”