Documente Academic
Documente Profesional
Documente Cultură
R esumo
Este artigo aborda algumas características entre alguns dos mais conhecidos e
usados métodos de pesquisa, a seqüencial e a binária, mostrando as diferenças e
semelhança entre estes.
1. INTRODUCAO
Uma das tarefas mais habituais na programação é a pesquisa de informações, o que exige o
desenvolvimento de algoritmos eficientes de pesquisa [1] Neste trabalho discutiremos um pouco
sobre métodos de pesquisa seqüencial e binária.
Essas técnicas também são conhecidas como algoritmos de busca. Em ciência da
computação, um algoritmo de busca, em termos gerais, é um algoritmo que toma um problema
como entrada e retorna a solução para o problema, geralmente após resolver um número possível de
soluções. A maioria dos algoritmos estudados por cientistas da computação que resolvem
problemas são algoritmos de busca. O conjunto de todas as soluções possíveis para um problema é
chamado de espaço de busca [2].
Alguns tipos de pesquisa necessitam que haja uma organização da informação, como é o
caso da pesquisa binária, então para efeito de estudo desse método foi estudados alguns métodos de
ordenação e por fim escolhido o mais apropriado para nosso a abordagem, o quick sort.
Nesse artigo então falaremos sobre a pesquisa seqüencial(ou linear) e a busca binária,
mostrado características de ambas, situações onde diferem, como essas são implementadas alguns
resultados obtidos com testes de cada uma.
Com o objetivo de tornar as funções, o mais versátil possível, elas têm uma variável
de entrada que indica o índice do vetor onde deve começar a pesquisa. As funçõ es calculam
e devolvem o índice do elemento onde está armazenado o valor procurado. Podemos
observar isso melhor com o algoritmo abaixo:
A pesquisa ou busca binária (em inglês binary search algorithm ou binary chop) é
um algoritmo de busca em vetores que requer acesso aleatório aos elementos do mesmo. Ela
parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de
busca (Divisão e conquista) comparando o elemento buscado (chave) com o elemento no
meio do vetor. Se o elemento do meio do vetor for a chave, a busca termina com sucesso.
Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca
continua na metade posterior do vetor. E finalmente, se o elemento do meio vier depois da
chave, à busca continua na metade anterior do vetor. [3].
1.2.1. Implementação
Para melhorar nosso entendimento sobre a busca binária abaixo, Algoritmo 1, temos
o algoritmos que mostra a estratégia da busca binária:
Fim do enquanto
Para o mesmo vetor, o pior caso da pesquisa binária é quando se reduz o intervalo em
análise a apenas um elemento do vetor, o que exige a análise de log2(N+1) elementos do
vetor. Portanto, podemos definir a eficiência do algoritmo de pesquisa binária é de ordem
O(log2 N).
Partindo desses resultado então podemos afirmar que o método binário, com um
conjunto suficientemente grande de elementos, é mais vantajoso que o seqüencial, caso
nosso vetor esteja ordenado, caso o vetor não esteja ordenado isso se inverte. Por exemplo
se utilizamos o método quick sort para ordenar o vetor antes do processo de busca binária
teríamos O(log2 N) + O(N²), ou seja, nosso algoritmo agora teria complexidade O(N²), bem
maior que a O(N) do método seqüencial.
Foram realizados então testes utilizando cada um dos métodos aqui mostrados para
verificar essas afirmações:
O Elemento aleatório 932076 foi encontrado na posição 932076, com 932077 iterações
O Elemento aleatório 818878 foi encontrado na posição 818878, com 818879 iterações
O Elemento aleatório 874453 foi encontrado na posição 874453, com 874454 iterações
O Elemento aleatório 489119 foi encontrado na posição 489119, com 489120 iterações
O Elemento aleatório 138820 foi encontrado na posição 138820, com 138821 iterações
O Elemento aleatório 277097 foi encontrado na posição 277097, com 277098 iterações
O Elemento aleatório 954754 foi encontrado na posição 954754, com 954755 iterações
O Elemento aleatório 407988 foi encontrado na posição 407988, com 407989 iterações
O Elemento aleatório 952064 foi encontrado na posição 952064, com 952065 iterações
O Elemento aleatório 865820 foi encontrado na posição 865820, com 865821 iterações
Vemos aqui a eficiência de nossa busca binária, todos os tempos, tanto em pior
quanto melhor ou até mesmo o tempo de 10 buscas seguidas simulando um caso médio, não
chegou a alguma importância significante para o processamento de nossa busca.
Como dito anteriormente para que nossa busca binária funcione, o vetor de entrada
deve estar organizado previamente, caso essa ordenação não exista nosso algoritmo perde
sua eficiência vejamos a tabela 3 o resultado de buscas com ordenação.
user system total real
Busca binária c/ 84.078000 0.188000 84.266000 84.796000
Ordenação
(Melhor caso):
Busca binária c/ 86.860000 0.140000 87.000000 87.047000
Ordenação (Pior
caso)
Busca binária c/ 811.125000 1.657000 812.782000 816.063000
Ordenação
(Casos Médios
10x)
Total
Tabela 3: Busca Binária com ordenação
Verificamos agora o custo que a ordenação do vetor realiza sobre o tempo de
processamento do algoritmo, foi utilizada para esse teste a ordenação com a técnica quick
sort, até mesmo para o melhor caso não há grande diferença, pois o custo de processamento
que realmente importa é o de ordenação.
3. CONCLUSÃO
Os métodos de busca são ferramentas de grande auxilio e que são comumente utilizadas em
diversas áreas não só da computação, o estudo desses métodos se faz necessário para a melhor
compreensão e melhor utilização desses métodos em problemas do dia a dia. Algo que deve ser
focado sempre é em quais situações determinado método é melhor que outro, pois não há um
método que seja ideal para qualquer que seja a situação, o estudo da complexidade é uma das
melhor formas de escolher essas técnicas para sua melhor funcionalidade.
REFERÊNCIAS BIBLIOGRÁFICAS