clique para adicionar texto métodos de pesquisa: sequencial e binária

21
Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Upload: iasmin-branco-gil

Post on 07-Apr-2016

219 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Clique para adicionar texto

Métodos de Pesquisa: Sequencial e Binária

Page 2: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Roteiro Contextualização

Pesquisa Sequencial

Pesquisa Binária

Page 3: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Roteiro Contextualização

Pesquisa Sequencial

Pesquisa Binária

Page 4: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Contextualização Apresentaremos e discutiremos diferentes

estratégias para efetuarmos a pesquisa (busca) de um elemento específico em um conjunto de dados.

Esta operação é muito importante, pois é encontrada com muita frequência em diversas aplicações.

Apresentaremos os métodos de pesquisa sequencial e binária sobre a estrutura de dados vetor.

Page 5: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Roteiro Contextualização

Pesquisa Sequencial

Pesquisa Binária

Page 6: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Pesquisa sobre Vetores Pesquisa Seqüencial (PS)

Forma mais simples de realizar pesquisas.

Metodologia: Percorre o vetor, elemento por elemento, verificando se o elemento desejado está presente no vetor.

Pergunta: Como verificar se o elemento 90 está presente no vetor acima?Pergunta: Quantas comparações são necessárias para achar o elemento 90?

14 24 2 1 15 90 47534698312 8645521 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Page 7: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Características Extremamente simples o algoritmo;

Pode ser muito ineficiente quando o conjunto de dados é muito grande.

Page 8: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Desempenho Computacional Pior Caso: é quando é necessário realizar n

comparações (onde n é o número de elementos);

Melhor Caso: é quando é necessário realizar somente uma comparação;

Qual o cenário de pior caso possível ?

Qual o cenário de melhor caso possível ?

Caso Médio: é quando é necessário realizar cerca de n/2 comparações.

Qual o cenário de caso médio possível ?

Page 9: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Análise de Complexidade da PS Pode-se desconsiderar os casos extremos

(melhor e pior caso).

Portanto, qual a complexidade do algoritmo de busca sequencial sobre vetores ?

Page 10: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Perguntas Seria possível melhorarmos a eficiência do

método apresentado? Como !?

Page 11: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Roteiro Contextualização

Pesquisa Sequencial

Pesquisa Binária

Page 12: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Pesquisa sobre Vetores Pesquisa Binária (PB)

Forma mais eficiente de realizar pesquisas em relação ao método de PS.

Metodologia: Consiste em comparar alguns itens do vetor com

o dado (chave alvo) que deseja-se encontrar.

Premissa: os dados contidos no vetor já estão ordenados segundo um critério.

Page 13: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Pesquisa sobre Vetores Metodologia (Cont...):

Passos do processo:1) Checar onde está o ponto médio do vetor.2) Comparar o elemento do ponto médio (EPM) com a

chave alvo (CA).3) Caso não encontre o dado no passo 2, continuar a

pesquisa da seguinte forma: Caso CA<EPM realizar a pesquisa no sub-vetor a esquerda

do EPM, partindo do passo 1. Caso CA>PM realizar a pesquisa no sub-vetor a direita do

EPM, partindo do passo 1. Caso CA=EPM, então a pesquisa para com sucesso, pois

achou o dado desejado!

Page 14: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Exemplo de Pesquisa Binária

14 24 2 1 15 90 47534698312 8645521 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Pergunta: Como verificar se o elemento 90 está presente no vetor acima?

Exemplo Inicial:

Após ordenação:

1 46 47 53 86 90 984524211412 15532 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Pergunta: Quantas comparações são necessárias para achar o elemento 90?

!!!???

Pergunta: Como verificar se o elemento 71 está presente no vetor acima?Pergunta: Quantas comparações são necessárias para achar o elemento 71?

Page 15: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Exemplo

Page 16: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Exemplo

Page 17: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Ilustração de pesquisa usando PB

(n-7)/8 1 (n-7)/8 (n-7)/8 1 (n-7)/8 (n-7)/8 1 (n-7)/8(n-7)/8 1 (n-7)/8

(n-3)/4 1 (n-3)/4 (n-3)/4 1 (n-3)/4

n

(n-1)/2 (n-1)/21

.....

.....

.....

.....

Page 18: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Complexidade da Pesquisa Binária Pior Caso: quando o dado desejado encontra-se na

folha da árvore ou não existe. Portanto: O(log2n)

Melhor Caso: quando o dado desejado encontra-se na raiz da árvore. Portanto: O(1)

Caso Médio: quando o dado desejado encontra-se próximo do “meio” da árvore. Portanto: O(log2n)

Page 19: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Complexidade da Pesquisa Binária

Nível da partição Segmentos Comparações

0 1 n – 1 1 2 n – 3 = (((n - 1) / 2) - 1) * 22 4 n – 7 = (((n - 3) / 4) - 1) * 43 8 n – 15 = (((n - 7) / 8) - 1) * 8 … … …

Total: (n - 1) + (n - 3) + (n - 7) + (n - 15) + …log2n vezes

Page 20: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Pesquisa Seqüencial versus Binária

2,33E+011,00E+0710.000.000

2,23E+015,00E+065.000.000

1,99E+011,00E+061.000.000

1,89E+015,00E+05500.000

1,66E+011,00E+05100.000

1,56E+015,00E+0450.000

1,33E+011,00E+0410.000

1,23E+015,00E+035.000

9,97E+001,00E+031.000

8,97E+005,00E+02500

6,64E+001,00E+02100

5,64E+005,00E+0150

3,32E+001,00E+0110

O(log2n)O(n)qtd de dados

2,33E+011,00E+0710.000.000

2,23E+015,00E+065.000.000

1,99E+011,00E+061.000.000

1,89E+015,00E+05500.000

1,66E+011,00E+05100.000

1,56E+015,00E+0450.000

1,33E+011,00E+0410.000

1,23E+015,00E+035.000

9,97E+001,00E+031.000

8,97E+005,00E+02500

6,64E+001,00E+02100

5,64E+005,00E+0150

3,32E+001,00E+0110

O(log2n)O(n)qtd de dados

Page 21: Clique para adicionar texto Métodos de Pesquisa: Sequencial e Binária

Exercícios1) Faça um programa em C que realize a pesquisa sequencial em uma lista de números inteiros. Peça para o programa ler os números até que o valor -999 seja digitado. Em seguida o programa deve pedir para o usuário digitar o número a ser procurado na lista e efetuar a busca sequencial, informando se o mesmo foi ou não encontrado e se foi, em qual posição da lista este se encontra.

2) Refaça o programa anterior para usar o algoritmo de busca binária.

3) Escreva uma versão recursiva do algoritmo de busca binária.