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

Post on 07-Apr-2016

219 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Clique para adicionar texto

Métodos de Pesquisa: Sequencial e Binária

Roteiro Contextualização

Pesquisa Sequencial

Pesquisa Binária

Roteiro Contextualização

Pesquisa Sequencial

Pesquisa 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.

Roteiro Contextualização

Pesquisa Sequencial

Pesquisa 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

Características Extremamente simples o algoritmo;

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

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 ?

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 ?

Perguntas Seria possível melhorarmos a eficiência do

método apresentado? Como !?

Roteiro Contextualização

Pesquisa Sequencial

Pesquisa 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.

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!

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?

Exemplo

Exemplo

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

.....

.....

.....

.....

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)

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

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

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.

top related