Buscar

pesquisa sequencial e binária

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 30 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

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 6, do total de 30 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

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 9, do total de 30 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

Prévia do material em texto

Algoritmos e Estruturas de Dados I
Análise de Complexidade de Algoritmos
Curso de Engenharia de Computação
CEFET-MG
2015/1
Análise de complexidade de algoritmos
 O problema da Pesquisa
 Verificar a presença ou não de um dado elemento em um 
conjunto
 Algoritmos para o problema da pesquisa
 Pesquisa sequencial em vetor não ordenado
 Pesquisa sequencial em vetor ordenado
 Pesquisa binária
 Soluções mais avançadas
Problema: busca/pesquisa/procura em vetor
 Problema
 dado um conjunto de elementos, verificar se um dado 
elemento ocorre no conjunto
 pesquisa ou busca ou procura – search
 Há vários algoritmos e estruturas de dados para este problema:
 pesquisa sequencial em vetor (array) não ordenado
 pesquisa sequencial em vetor ordenado
 pesquisa binária
 hashing 
 árvores de pesquisa (AEDS2)
Classificação dos resultados da pesquisa 
 Duas respostas possíveis
 o elemento está presente => sucesso
 o elemento não está presente => insucesso
 Dois casos para análise de complexidade
 pesquisa com sucesso
 o item procurado está presente no vetor ou arquivo
 pesquisa sem sucesso
 o item procurado não está presente no arquivo
 A análise de complexidade é feita separadamente para cada um 
destes casos
Algoritmos para o problema da pesquisa
 Pesquisa sequencial em vetor não ordenado
 Pesquisa sequencial em vetor ordenado
 Pesquisa binária
Pesquisa sequencial em vetor
 Vetor não ordenado: caso mais simples de pesquisa
 Entrada
 o vetor preenchido com os elementos do conjunto (registros ou 
estruturas)
 o item procurado: chave de um registro (estrutura)
 Algoritmo
 comparar sequencialmente cada elemento do vetor com o item 
procurado até que
 o item é encontrado: retornar o registro, a posição, etc.
 o fim do vetor é encontrado: indica pesquisa sem sucesso
Exemplo: pesquisar o elemento 22 no vetor
Sucesso: o elemento está presente
Algoritmo: pesquisa sequencial em vetor NÃO ordenado
       32      13       25        19     14       15       52      33       64      49      
Vetor não ordenado
Análise do algoritmo de pesquisa sequencial
 Pesquisa em vetor não ordenado
 Definição da operação relevante
 comparação do item procurado com os elementos do conjunto
 Seja f(n) o número de comparações realizado pelo algoritmo de 
pesquisa sequencial
 Análise dos casos: Pesquisa sem sucesso
 f(n) = n => todos os elementos precisam ser comparados 
para mostrar que o elemento procurado não está presente
       32      13       25        19     14       15       52      33       64      49      
Análise do algoritmo de pesquisa sequencial
 Pesquisa em vetor não ordenado
 Definição da operação relevante
 comparação do item procurado com os elementos do conjunto
 Seja f(n) o número de comparações realizado pelo algoritmo de 
pesquisa sequencial
 Análise dos casos: Pesquisa com sucesso
 Melhor caso: f(n) = 1 => o elemento está na 1a. posição
 Pior caso: f(n) = n => o elemento está na última posição
 Caso médio: média de todos os casos - a seguir
Análise do caso médio – pesquisa sequencial
 caso médio: é necessário conhecer a probabilidade de cada elemento do 
conjunto ser procurado
 Neste caso, expressamos a função f(n) da seguinte forma:
 onde p
i
 é a probabilidade do i-ésimo registro (elemento) ser procurado
 Portanto: precisamos conhecer a distribuição de probabilidades do conjunto
 Se cada elemento do conjunto tiver a mesma probabilidade de ser 
procurado, então 
Uso das probabilidades para melhoria da pesquisa
 Como encontrar as probabilidades?
 em geral é difícil conhecer as probabilidades de se pesquisar um elemento
 além disso, as probabilidades podem alterar-se com o tempo ou outros 
aspectos
 em muitas situações, mesmo não conhecendo a distribuição exata de 
probabilidades, sabemos que a probabilidade de busca de elementos no 
conjunto não é igual
 alguns elementos são muito mais procurados do que outros
 exemplos:
 as palavras mais procuradas no Google BR em 2014
 BBB 14, ENEM, eleições, Eduardo Campos, Amor à Vida, iPhone 6, Copa do 
Mundo, SISU, PROUNI, Lepo Lepo 
 A mais buscada no mundo: Robin Williams
 serviços mais usados pela população
 a sua lista de amigos: alguns são mais próximos
 tabelas: ex: imposto de renda
Uso das probabilidades para melhoria da pesquisa
 Listas auto-ajustáveis
 podemos usar as pesquisas com sucesso para alterar a lista e tornar ao 
caso médio mais rápido
 como?
 mover cada elemento encontrado para posições anteriores na lista
 abordagem conservativa: move uma posição para frente a cada hit
 Exemplo: lista => 1,2,3,4,5,6 => 1,2,4,3,5,6 após buscar o 4
 abordagem agressiva: move o elemento encontrado para a primeira posição
 Exemplo: lista => 1,2,3,4,5,6 => 4,1,2,3,5,6 após buscar o 4
 os elementos mais procurados contribuirão com menor peso para o caso médio
 na busca sequencial, o melhor é ter os elementos ordenados pela frequência de 
busca
Algoritmos para o problema da pesquisa
✔ Pesquisa sequencial em vetor não ordenado
 Pesquisa sequencial em vetor ordenado
 Pesquisa binária
Pesquisa sequencial em VETOR ORDENADO
 a pesquisa sequencial pode ser feita em vetor ordenado
      2        3         5          9         14       15       21      33      45       49      
Exemplos de busca: 1, 2, 4, 9, 50
Análise do algoritmo de pesquisa sequencial
 Pesquisa em VETOR ORDENADO
 Definição da operação relevante
 comparação do item procurado com os elementos do conjunto
 Seja f(n) o número de comparações realizado pelo algoritmo de 
pesquisa sequencial
 Benefício da ordenação ocorre apenas no caso de pesquisa SEM 
sucesso
 No caso de pesquisa COM sucesso:os custos são iguais ao caso 
do vetor não ordenado
Análise do algoritmo de pesquisa sequencial
 Pesquisa em VETOR ORDENADO
 Análise dos casos: Pesquisa sem sucesso => custo para descobrir 
que o elemento procurado não está presente
 Melhor caso: f(n) = 1 
 Pior caso: f(n) = n 
 Caso médio: média de todos os casos - a seguir
      2        3         5          9         14       15       21      33      45       49      
Análise do caso médio – pesquisa sequencial
 caso médio para pesquisa sem sucesso: o elemento procurado é um valor 
que não está presente no vetor.
 Neste caso, expressamos a função f(n) da seguinte forma:
 onde p
i
 é a probabilidade do elemento procurado ser menor do que vetor[i]
 Portanto: precisamos conhecer a distribuição de probabilidades do conjunto
 Se cada elemento no intervalo tiver a mesma probabilidade de ser 
procurado, então 
Busca linear em vetor
 Vantagens 
 Algoritmo simples e fácil de entender
 Vetor pode estar ordenado ou não ordenado
 Desvantagem
 Ineficiência: algoritmo lento
 Custo linear no pior caso e no caso médio O(n)
 Caso médio: examina em média n/2 elementos
Algoritmos para o problema da pesquisa
✔ Pesquisa sequencial em vetor não ordenado
✔ Pesquisa sequencial em vetor ordenado
 Pesquisa binária
Pesquisa binária
 Requer conjuntos ordenados de elementos
 familiar a todos que consultam listas telefônicas e dicionários
 algoritmo básico
 compare a chave pesquisada com o elemento do meio do conjunto
 se a chave for igual: ok, pesquisa com sucesso!
 se a chave for menor, repita o procedimento para a primeira metade do conjunto
 se a chave for maior, repita o procedimento para a segunda metade do conjunto
 até encontrar o elemento ou a posição onde ele deveria estar
 Requisitos
 o conjunto deve estar ordenado pela chave de pesquisa
 o conjunto deve estar em vetor poiso acesso é aleatório
 Pesquisa binária
A cada passo metade dos dados é eliminada da pesquisa
Etapas da busca pelo número 22
Pesquisa binária: algoritmo
      2        3         5          9         14       15       21      33      45       49      
1        2        3         4          5        6        7         8        9         10
Exemplo de 
algoritmo elegante
Etapas da busca pelo número 33
Desenhando o vetor como uma árvore binária
altura da
árvore é o número
de comparações
necessário 
para a busca
Pesquisa binária: análise do pior caso
 A cada comparação, eliminamos metade do conjunto
N
N/2
N/4
N/8
1
………… 1 comparação
………… 1 comparação
………… 1 comparação
………… 1 comparação
………… 1 comparação
...
Número máximo de 
comparações é 
O(log2 n)
Pesquisa binária: análise de complexidade
 Inicialmente suponha que n é uma potência de 2 => n = 2k
 Cada iteração do laço elimina metade do conjunto 
 n = 2k-1 n = 2k-2 n = 2k-3 … n = 2k-k = 20 = 1
 Número máximo de iterações = k + 1
 Em cada iteração: número constante de operações c
 f(n) = c
1
 * log
2
(n) + c
2
 Se n não for potência de 2: arredonde n para a próxima 
potência de 2: 
 N = 1000 => 210 => 10 comparações para buscar em 1000
Pesquisa em vetor: síntese
 encontrar o maior elemento de um conjunto de n elementos 
 Custo mínimo: n-1 => O(n)
 encontrar o maior e o menor elementos
 Custo mínimo: (3n -2 ) / 2 => O (n)
 encontrar um dado elemento em um conjunto: pesquisa ou busca
 Pesquisa linear 
 Melhor caso O(1)
 Pior caso O(n)
 Pesquisa binária 
 Melhor caso O(1)
 Pior caso O(log n) 
Diferença 
muito significativa
Aulas anteriores
Exercício
Calcule o número de comparações para buscar um elemento no conjunto
 acima para: (a) o melhor caso; (b) o pior caso; (c) o caso médio. Considere 
que todas as buscas são igualmente prováveis.
	Computabilidade
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30

Outros materiais