![Page 1: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/1.jpg)
Profª Valéria de Carvalho Santos
BCC702 - Programação de Computadores II
Algoritmos de BuscaComparação de Algoritmos
1
![Page 2: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/2.jpg)
O problema de busca
❏ Imagine um vetor de alunos, sendo que aluno é um registro com os campos matrícula, nome e curso.
❏ Como você faria para localizar um determinado aluno?
2
![Page 3: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/3.jpg)
O problema de busca
❏ O objetivo da busca (ou pesquisa) é encontrar uma ou mais ocorrências de registros com valores iguais ao valor procurado.
❏ Existem vários métodos de pesquisa. A escolha do método mais adequado depende, principalmente:❏ da quantidade de dados envolvidos;❏ da possibilidade de o arquivo sofrer inserções e/ou
retiradas.3
![Page 4: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/4.jpg)
Algoritmos de busca
❏ Busca sequencial❏ Busca binária
4
![Page 5: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/5.jpg)
Busca sequencial
❏ É o método de pesquisa mais simples que existe.❏ Funcionamento:
❏ a partir do primeiro registro, pesquise sequencialmente até encontrar o valor procurado ou até chegar ao fim do vetor;
❏ então pare.
5
![Page 6: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/6.jpg)
Busca sequencial - Exemplo
❏ Valor procurado: 7
6
6 1 5 7 0
![Page 7: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/7.jpg)
Busca sequencial - Exemplo
❏ Valor procurado: 7
7
6 1 5 7 0 6 == 7?
![Page 8: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/8.jpg)
Busca sequencial - Exemplo
❏ Valor procurado: 7
8
6 1 5 7 0 1 == 7?
![Page 9: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/9.jpg)
Busca sequencial - Exemplo
❏ Valor procurado: 7
9
6 1 5 7 0 5 == 7?
![Page 10: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/10.jpg)
Busca sequencial - Exemplo
❏ Valor procurado: 7
10
6 1 5 7 0 7 == 7?
![Page 11: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/11.jpg)
Algoritmo de busca sequencial
bool busca_sequencial(int v[], int n, int procurado){for(int i = 0; i < n; i++){
if(v[i] == procurado){return true;
}}return false;
}
11
![Page 12: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/12.jpg)
Busca binária
❏ Método de busca eficiente para um vetor ordenado❏ Esse método é semelhantes ao que usávamos para
procurar uma palavra no dicionário, por exemplo.
12
![Page 13: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/13.jpg)
Busca binária
❏ Compare o elemento procurado com o elemento que está na posição do meio do vetor:❏ Se o elemento foi encontrado, termine a busca.❏ Se o elemento procurado é menor do que o elemento do
meio, repita a busca para a primeira metade do vetor.❏ Se o elemento procurado é maior do que o elemento do
meio, repita a busca para a segunda metade do vetor.❏ Esse processo se repete até que o elemento seja encontrado
ou até que todo vetor tenha sido consultado sem sucesso13
![Page 14: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/14.jpg)
Busca binária - Exemplo
❏ Valor procurado: 7
14
0 1 5 6 7 meioesq dir
![Page 15: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/15.jpg)
Busca binária - Exemplo
❏ Valor procurado: 7
15
0 1 5 6 7 meioesq dir
0 1 2 3 4
![Page 16: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/16.jpg)
Busca binária - Exemplo
❏ Valor procurado: 7
16
0 1 5 6 7
meioesq dir
0 1 2 3 4
![Page 17: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/17.jpg)
Busca binária - Exemplo
❏ Valor procurado: 7
17
0 1 5 6 7
meioesqdir
0 1 2 3 4
![Page 18: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/18.jpg)
Algoritmo de busca binária bool busca_binária(int v[], int n, int procurado){
int esq = 0, dir = n-1, meio;while(esq <= dir){
meio = (esq+dir)/2;if(v[meio] == procurado)
return true;else if(v[meio] > procurado)
dir = meio-1;else
esq = meio+1;}return false;
} 18
![Page 19: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/19.jpg)
Busca binária
❏ Se o elemento procurado estiver ou não no vetor, a busca binária apresenta resultado melhores do que a busca sequencial
❏ Porém, é preciso manter o vetor ordenado (alto custo computacional)
❏ Adequada quando a quantidade de consultas realizadas é bem maior do que a quantidade de inserções feitas no conjunto de elementos
19
![Page 20: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/20.jpg)
Comparação de Algoritmos
20
![Page 21: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/21.jpg)
Comparação de algoritmos
❏ Dado um determinado problema, pode haver diferentes soluções algorítmicas para ele
❏ Como determinar qual solução é mais eficiente?❏ O que é um algoritmo eficiente?❏ Como “medir” a eficiência de um algoritmo?
21
![Page 22: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/22.jpg)
Eficiência de algoritmos
❏ Eficiência de espaço❏ Refere-se à quantidade de memória requerida pelo
algoritmo, além do espaço necessário para entradas e saídas
❏ Eficiência de tempo❏ Indica quão rápido um algoritmo é executado
22
![Page 23: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/23.jpg)
Eficiência de algoritmos
❏ Eficiência de espaço❏ Refere-se à quantidade de memória requerida pelo
algoritmo, além do espaço necessário para entradas e saídas
❏ Eficiência de tempo❏ Indica quão rápido um algoritmo é executado❏ A maioria das pesquisas focam em melhorar a eficiência
de tempo23
![Page 24: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/24.jpg)
Tamanho da entrada
❏ Um algoritmo vai demorar mais para executar entradas maiores❏ Exemplo: percorrer um vetor de 10 ou 1000 elementos
❏ Em geral, a eficiência do algoritmo é analisada em função do tamanho da sua entrada. Exemplo:
❏ tamanho do vetor para problemas que trabalham com vetores: ordenação, buscar, encontrar o menor elemento, etc.
❏ polinômio: grau do polinômio 24
![Page 25: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/25.jpg)
Como medir o tempo?
❏ Unidades de tempo (minutos, segundos…)❏ depende do computador❏ depende do compilador
❏ Contar quantas vezes cada operação é executada❏ muito difícil❏ desnecessário
❏ Identificar a operação mais importante: operação básica
25
![Page 26: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/26.jpg)
Como medir o tempo?
❏ Operação básica❏ operação que impacta mais no tempo de execução❏ em geral, é a operação no laço mais interno do algoritmo❏ contar quantas vezes ela é executada
❏ Qual é a operação básica da busca sequencial?
26
![Page 27: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/27.jpg)
Pior caso, melhor caso e caso médio
❏ A eficiência de alguns algoritmos dependem não apenas do tamanho da entrada, mas também de uma entrada específica
❏ Exemplo: busca sequencial
27
![Page 28: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/28.jpg)
Pior caso
❏ É uma entrada de tamanho n para a qual o algoritmo gastará o maior tempo possível entre todas as entradas do mesmo tamanho
❏ Como calcular a eficiência no pior caso:❏ verificar o tipo de entrada(s) que resulta no maior valor de
vezes que a operação básica vai ser executada❏ Qual é o pior caso da busca sequencial?
28
![Page 29: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/29.jpg)
Melhor caso
❏ É uma entrada de tamanho n para a qual o algoritmo gastará o menor tempo possível entre todas as entradas do mesmo tamanho
❏ Como calcular a eficiência no melhor caso:❏ verificar o tipo de entrada(s) que resulta no menor valor de
vezes que a operação básica vai ser executada❏ Qual é o melhor caso da busca sequencial?
29
![Page 30: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/30.jpg)
Caso médio
❏ Representa uma entrada comum ou aleatória❏ Mais complexa de calcular❏ Divide todas as instâncias de tamanho n em várias classes,
sendo que para cada instância da classe, o número de vezes que a operação básica do algoritmo é executada é a mesma
30
![Page 31: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/31.jpg)
Ordem de crescimento
❏ Avalia o quanto o tempo de execução de um algoritmo aumenta, de acordo com o aumento do tamanho da entrada n
❏ Considera valores grandes de n❏ Para comparar a ordem de crescimento dos algoritmos, há três
notações: O, 𝛺 e 𝜃❏ Vamos ver a definição da notação O
31
![Page 32: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/32.jpg)
Notação O
❏ Considere uma função g(n) que representa um algoritmo❏ Informalmente, O(g(n)) é o conjunto de todas as funções com
ordem de crescimento menor ou igual a g(n). ❏ Exemplo:
❏ n ∈ O(n2)❏ 100n+5 ∈ O(n2)❏ n(n-1) ∈ O(n2)❏ n3 ∉ O(n2)
32
![Page 33: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/33.jpg)
Notação O
❏ Definição: Uma t(n) pertence a O(g(n)), t(n) ∈ O(g(n)), se t(n) é limitada acima por alguma constante múltipla de g(n), se existe alguma constante positiva c e algum inteiro não-negativo n0, tal que:
t(n) ≤ c(g(n)), para todo n ≥ n0
33
![Page 34: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/34.jpg)
Notação O
34
![Page 35: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/35.jpg)
Classes de algoritmo
35
![Page 36: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/36.jpg)
Exercício 1
❏ Considere a função que calcula o maior elemento de um vetor.
36
bool maior(int v[], int n){int maior = v[0];for(int i=1; i<n; i++){
if(v[i]>maior) maior = v[i];
}return maior;
}
● Qual é a operação básica?● Quantas vezes a operação
básica é executada?● Qual é a classe desse
algoritmo?
![Page 37: Algoritmos de Busca Comparação de Algoritmos€¦ · da quantidade de dados envolvidos; da possibilidade de o arquivo sofrer inserções e/ou retiradas. 3. Algoritmos de busca Busca](https://reader035.vdocuments.site/reader035/viewer/2022070808/5f0753517e708231d41c6d4a/html5/thumbnails/37.jpg)
Exercício 2
❏ Considere a operação de atribuição destacada.
37
bool maior(int v[], int n){int maior = v[0];for(int i=1; i<n; i++){
if(v[i]>maior) maior = v[i];
}return maior;
}
● Em que situação ele será executada o menor número de vezes?
● Em que situação ele será executada o maior número de vezes?