You are on page 1of 13

An alise do Algoritmo de Busca Bin aria

Jo ao Paulo Buback1 , Lorran Pegorreti 1 ,Ricardo da Hora Sobrinho1 Universidade Vila Velha (UVV) CEP 29102-920 Vila Velha ES Brasil
1

Resumo. Este artigo realiza uma an alise matem atica e te orica do algoritmo de busca bin aria. Inicialmente realizamos uma an alise passo a passo do algoritmo bem como sua an alise matem atica (relac a encia, func a o de recorr o de complexidade e somat oria dos termos). Em seguida realizamos uma an alise assint otica do algoritmo determinando suas classes assint oticas. Testes de execuc a o de tempo s ao realizados e nalmente sugest oes de melhoria do algoritmo s ao sugeridas.

1. Vis ao Geral
o o algoritmo de busca bin um algoritmo usado para enNa ci encia da computac a aria e o de um valor dentro de um vetor ordenado. Em cada passo, o algoritmo contrar a posic a compara o valor da chave de busca com o valor do elemento do meio do vetor. Se a chave o e retornada e o for igual ao elemento do meio, o elemento foi encontrado, sua posic a algoritmo termina. Entretanto, se a chave de busca for menor que o elemento do meio es no sub-vetor a esquerda do elemento, se a chave de busca o algoritmo repete suas ac o ` direita do elemento do meio. Se o espac for maior, no sub-vetor a o de busca restante do vetor for reduzido a zero, isso signica que a chave de busca n ao existe no vetor e uma o especial de n retornado, terminando o algoritmo. indicac a ao encontrado e O algoritmo de busca bin aria diminui o espac o de busca do vetor pela metade a o, dessa forma a localizac o de um item (ou a vericac o que ele n cada interac a a a ao consta alcanc no vetor) e ado em tempo logar tmico. Tal algoritmo pode ser caracterizado como um algoritmo determin stico de busca dicot omica, que utiliza-se do paradigma dividir e conquistar. quando a chave de busca e A performance do algoritmo no melhor dos casos e o, portanto o tempo de execuc o e da ordem encontrada imediatamente na primeira iterac a a constante de O(1). No pior dos casos, a chave de busca n ao constaria na massa de dados, portanto o algoritmo dividira a massa de dados pela metade at e chegar em uma massa de valor unit ario. O m aximo de vezes que se pode dividir um massa de dados de valor n pela logn, portanto a ordem de execuc o no pior dos casos e da ordem de O(logn). metade e a encontrado uma quantidade de vezes parecida com o No caso m edio o n umero e o do algoritmo caria na ordem de O(logn). pior caso. Neste caso o tempo de execuc a importante salientar que a busca bin E aria s o funciona em uma massa de dados ordenada (de prefer encia na ordem crescente). Portanto, dada uma massa de dados des o antes do procedimento de busca organizada, deve-se utilizar um algoritmo de ordenac a ser inicializado.

o usado deve ser escolhido com cautela, Dessa forma, o algoritmo de ordenac a pois a forma como a massa de dados se apresenta ir a inuenciar no tempo gasto para o errado pode ocasionar em tempos muitos organiza-la. Escolher o algoritmo de ordenac a o da busca bin altos, prejudicando o tempo de execuc a aria.

2. Algoritmo
A busca bin aria pode ser aplicada de forma iterativa ou de forma recursiva. A seguir mostramos exemplos das duas maneiras: Vers ao iterativa: i n t B i n a r y S e a r c h ( i n t A[ ] , i n t n , i n t K) { i n t L=0 , Mid , R= n 1; w h i l e ( L<=R) { Mid = ( L +R ) / 2 ; i f ( K= =A[ Mid ] ) r e t u r n Mid ; e l s e i f ( K > A[ Mid ] ) L = Mid + 1 ; else R = Mid 1 ; } return 1 ; }

Vers ao recursiva: i n t b i n a r y s e a r c h ( i n t A[ ] , i n t { / / t e s t i f array i s empty i f ( imax < i m i n ) : / / s e t i s empty , s o r e t u r n r e t u r n KEY NOT FOUND ; else { / / calculate midpoint to i n t i m i d = m i d p o i n t ( imin key , i n t imin , i n t imax )

value showing not found

cut set in half , imax ) ;

/ / t h r e e way c o m p a r i s o n i f (A[ i m i d ] > key ) / / key i s in lower s u b s e t r e t u r n b i n a r y s e a r c h (A, key , imin , imid 1 ) ; e l s e i f (A[ i m i d ] < key ) / / key i s in upper s u b s e t r e t u r n b i n a r y s e a r c h (A, key , i m i d +1 , imax ) ; else / / key has been found return imid ; } }

3. Caracter sticas do Algoritmo


A busca bin aria possu uma s erie de caracter sticas importantes de serem mencionadas ao se descrever o algoritmo. 3.1. Busca Dicot omica Dentro dos algoritmos de busca , a busca bin aria faz parte de uma categoria chamada de busca dicot omica. Na busca dicot omica os algoritmos operam selecionando entre duas alternativas distintas (dicotomias) a cada passo do seu funcionamento. 3.2. Determin stico O algoritmo de busca bin aria faz parte de uma categoria de algoritmos chamados de Determin sticos. Os algarismos determin sticos s ao aqueles que dado a mesma massa de dados como entrada garantem a mesma sa da corresponde no mesmo n vel complexidade assint otica. Dessa forma, dado uma massa de dados N e uma chave de busca K e funcionamento correto do algoritmo, a busca bin aria sempre retornar a o mesmo resultado de sa da o de constantes). com o mesmo comportamento assint otico (n ao considerando a variac a

3.3. Paradigma Dividir e Conquistar O algoritmo de busca bin aria utiliza-se do paradigma de dividir e conquistar. Tal paradigma consiste em resolver o problema principal, o dividindo em subproblemas o menores que em tese s ao mais simples de serem resolvidos. Dessa forma, as soluc a o do problema principal. dos subproblemas podem ser somadas para encontrar a soluc a A busca bin aria entra neste paradigma ao dividir pela metade a massa de dados a o, diminuindo pela metade o espac cada iterac a o de busca da massa, at e que o elemento buscado seja encontra ou at e que o espac o de busca seja reduzido a um valor unit ario.

4. An alise passo a passo


Na an alise passo observamos o comportamento do algoritmo a medida que a sua massa de es e L o n es dados cresce. Se considerarmos C como o n umero de operac o umero de iterac o es ser que a busca bin aria realiza, podemos determinar que o n umero total de operac o aC es por iterac o se manter x L. Como o n umero de comparac o a a o mesmo, para simplicar es em relac o a massa de dados. os c alculos vamos considerar somente as iterac o a es s alterado em Em uma an alise geral vericamos que o n umero de alterac o oe m ultiplos de 2, portanto para simplicar vamos somente manter os m ultiplos de dois na tabela. Melhor Caso Pior Caso es es N umero de elementos Iterac o N umero de elementos Iterac o 2 1 2 2 4 1 4 3 8 1 8 4 16 1 16 5 32 1 32 6 64 1 64 7 n 1 n log(n)+1 Caso M edio es N umero de elementos Iterac o 2 2 4 3 8 4 16 5 32 6 64 7 n log(n)+1

5. An alise Assint otica


um m A an alise assint otica e etodo matem atico, dentro da an alise matem atica, usado para o ela e usada para descrever o comportamento de limites. Dentro da ci encia da computac a analisar algoritmos levando em conta sua performance quando aplicados a uma grande massa de dados. Para determinarmos a performance de qualquer algoritmo usando a an alise assint otica, precisamos observar seu comportamento em tr es casos especiais: quando ele

es para terminar o alapresenta o seu pior caso (realiza o m aximo poss vel de operac o es para terminar goritmo), o caso m edio (realiza, aproximadamente a m edia de operac o o algoritmo), ou o melhor caso (realiza aproximadamente o menor n umero poss vel de es para terminar o algoritmo). operac o Analisando estes casos especiais podemos determinar os limites m aximo e m nimo do comportamento de performance do algoritmo, dada uma massa sucientemente grande de dados. 5.1. An alise da complexidade assint otica da busca bin aria Nesta sess ao iremos realizar a analise de complexidade da busca bin aria que ir a determinar o comportamento do algoritmo a medida que a sua massa de dados cresce. Tomando es realizadas em cada a vers ao iterativa do algoritmo como base vamos analisar as operac o caso especial para uma massa de dados n. 5.2. Melhor Caso encontrado O melhor caso da busca bin aria acontece quando o elemento a ser procurado e encontrado na primeira tentativa, o algoritmo passa na primeira tentativa. Se o elemento e o do elemento encontrado. pelo loop somente uma vez e termina retornando a posic a es que trabalham com a massa de dados, Levando em conta somente as operac o es por casa passado pelo loop. vemos que o algoritmo realiza duas operac o es realizadas Uma vez que o algoritmo s o funciona uma vez, o n umero de operac o constante e o tamanho da massa de dados n es ree ao inuencia no n umero de operac o es sua classe assint alizadas. Como o algoritmo realiza somente duas operac o otica no de: melhor caso e O(2) Logo o melhor caso da busca bin aria apresenta um comportamento constante. 5.3. Pior Caso O pior caso da busca bin aria acontece quando o elemento a ser procurado n ao existe na es de busca poss massa de dados forc ando o algoritmo a realizar o m aximo de operac o veis at e retornar o valor especial de n ao encontrado. Vamos considerar uma massa de dados o do algoritmo. n = 64 em cada iterac a A cada passada pelo loop a massa de dados ira ter o seu espac o de busca diminu do pela metade at e que o espac o de busca unit ario seja alcanc ado e o algoritmo termine. reduzido para n = 32 Loop 1 n = 64 e reduzido para n = 16 Loop 2 n = 32 e reduzido para n = 8 Loop 3 n = 16 e reduzido para n = 4 Loop 4 n = 8 e reduzido para n = 2 Loop 5 n = 4 e reduzido para n = 1 Loop 6 n = 2 e es para um n = 64. Perceba Podemos ver que ocorrem um total de 6 iterac o que 64 = 26 .

importante notar o mesmo se aplica as subdivis Tamb em e oes do espac o de busca: n = 32 = 25 , n = 16 = 24 , etc. Dessa forma podemos considerar um caso mais geral onde n = 2k . Como j a foi mencionado anteriormente, a cada passada pelo loop o algoritimo re es, logo o n es ser es aliza duas operac o umero total de operac o a a quantidade total de iterac o es por iterac o, em outras palavras 2 k . vezes o n umero de operac o a O valor de k pode ser deduzido da seguinte express ao: n = 2k Aplicando o logaritmo nos dois lados da igualdade temos que k = logn es realizadas pelo o algoritmo ser Logo o n umero total de operac o a de 2 logn Eliminando a constante 2, uma vez que ela n ao inuenciar a o resultado para n de: muito grandes a classe assint otica da busca bin aria no pior caso e O(logn) 5.3.1. Caso M edio O caso m edio ser a um valor entre O(1) e O(logn). Pode ser tentador armar que o caso m edio para que um elemento dentro de uma massa de dados seja encontrado leve o o fato de que cada (1 + logn)/2. Entretanto, essa f ormula n ao leva em considerac a es antes de ser enconelemento da massa de dados requer um n umero diferente de iterac o trado. Imagine uma massa de dados representada por um vetor de 15 elementos como um exemplo:

Figure 1. Um vetor de 15 elementos.

o o valor do meio e calComo mostrado no algoritmo acima, em cada interac a o 7, por exemplo, sempre culado (meio = (inicio + f inal)/2). O elemento no posic a nica iterac o para ser encontrado. Entretanto, um elemento na posic o 14 levar a uma u a a es para ser encontrado. A gura abaixo mostra a a rvore bin leva 4 iterac o aria ilustra os quatro casos de uma busca bin aria executada com sucesso, cada uma levando um n umero es. Por exemplo, elementos nas posic es 1,5,9 e 13 levam 3 iterac es diferente de iterac o o o o 3 e 11 levam somente duas para serem encontrados, enquanto que elementos na posic a es para serem encontrados. iterac o o ao seus respectivo A tabela abaixo resume os elementos do vetor em relac a es que leva para eles serem encontrados. A coluna na extrema direita n umero de iterac o mostra a porcentagem dos elementos de cada caso. Por exemplo, aproximadamente 50% es no vetor levam 4 iterac es para serem encontrados. (8 de 15) dos conjuntos de posic o o

Figure 2. Arvore representando a quantidade de iterac oes para encontrar um elemento em uma espec posic ao ca.

es N umero de Iterac o Vetor de elementos Porcentagem 1 A[7] 6,25% 2 A[3],A[11] 12,5% 3 A[1],A[5],A[9], A[13] 25% 4 A[0],A[2],A[4],A[6],A[8],A[10],A[12],A[14] 50% Dessa forma podemos deduzir a seguinte an alise: Para simplicar os c alculo seja n = 2k 1 (k = logn). A f ormula correta para es para um busca de sucesso e mostrado abaixo. calcular o n umero m edio de iterac o

Figure 3. formula

Calculando para o valor de 15 elementos tempos que

Figure 4. formula

logar Portanto o caso m edio da busca bin aria tamb em e tmico. O(logn)

igual ao pior caso da busca Consequentemente percebemos o que caso m edio, e bin aria. o Casos especias Func a Melhor Caso O(logn) Caso M edio O(logn) Pior Caso O(2) Classe Assint otica Logar tmica Logar tmica Constante

o 6. Teste de tempo de execuc a


Para suportar as conclus oes feitas na parte da analise assint otica do algoritmo, testes de o foram realizados para fornecer evidencias emp execuc a ricas do comportamento do algoritmo em testes controlados. A metodologia dos testes foi desenvolvida da seguinte forma: o a massa de dados Em relac a No primeiro momento geramos uma s erie de massas de dados de tamanhos diferentes para serem usadas pelo algoritmo de busca bin aria. A menor massa de dados apresentava um tamanho minimo de 100 elementos enquanto que a maior massa de dados foi de 100 milh oes de elementos. Dessa forma as massas de dados foram dividas nas seguintes categorias: 10 elementos 103 elementos 104 elementos 105 elementos 106 elementos 107 elementos
2

Os valores usados na massa de dados foram gerados aleatoriamente e ordenados o, para s por um algoritmo de ordenac a o ent ao serem usados na busca bin aria. o a simulac o dos casos especiais 6.1. Em relac a a Para simular o comportamento do algoritmo no melhor caso, realizamos a busca sempre pelo elemento do meio da massa de dados. Para simularmos o comportamento do pior caso, sempre buscamos por um elemento que n ao existia na massa de dados. E para simular o caso m edio buscamos por um elemento aleat orio da massa de dados. Destes teste, uma s erie de dado foram gerados que suporte emp rico a analise te orica mostrada na sess ao anterior.

6.2. Testes para o melhor caso Abaixo seguem os dados realizados nos teste simulando o melhor caso:

do Melhor Caso. Figure 5. Tempo de execuc ao

o gr como se segue: A representac a aca desses dados e

do Melhor Caso. Figure 6. Graco de execuc ao

Pela an alise do gr aco, a medida que a quantidade de n umeros da massa de dados aumenta, n ao ocorre nenhuma mudanc a no tempo gasto para encontra a chave a ser bus es no melhor caso e constante e o cada. Disso podemos concluir que o n umero de operac o o do algoritmo. Tal tamanho da massa de dados n ao ir a inuenciar no tempo de execuc a o emp resultado fornece conrmac a rica para a an alise teorica do algoritimo no melhor constante, caso, mostrando que neste caso especial da busca bin aria seu comportamento e ou seja, O(1). 6.3. Testes para o pior caso Abaixo seguem os dados realizados nos teste simulando o pior caso:

do Pior Caso. Figure 7. Tempo de execuc ao

o gr A representac a aca dos dados segue a baixo:

Figure 8. Graco do Pior Caso.

Pela analise do gr aco, a medida que a quantidade de n umeros na massa de dados ngulo, apresentando comportamento comaumenta, a curvatura do gr aco diminu de a pat vel com o de um comportamento logar tmico. Os testes pr aticos portanto, d ao suporte emp rico a an alise te orica, mostrando que o pior caso da busca bin aria e O(logn)

6.4. Teste para o caso m edio Abaixo seguem os dados realizados nos teste simulando o caso m edio:

do Caso Medio. Figure 9. Tempo de execuc ao

o gr A representac a aca dos dados segue a baixo:

Figure 10. Graco do Caso Medio.

Pela an alise do gr aco vemos que o algoritmo de busca bin aria se comporta de forma similar ao melhor caso que possu um comportamento logar tmico. Os testes pr aticos fornecem evid encias emp ricas que d ao suporte a an alise teorica, mostrando que de: no caso m edio a busca bin aria e O(logn)

7. Melhorias
O algoritmo da busca bin aria em si tem uma qualidade excelente. Entretanto, ainda poss o. Uma forma de faze-lo seria adicionar duas e vel melhorar sua implementac a o do vetor, o outro guardaria o valor da vari aveis, uma guardaria o valor da primeira posic a o do vetor. Visto que a busca bin ultima posic a aria necessita que a massa de dados esteja ordenada, conseguir esses dados e algo simples e perfeitamente poss vel.

Algoritmo melhorado: i n t B i n a r y S e a r c h ( i n t A[ ] , i n t n , i n t K) { i n t L=0 , Mid , R= n 1; i f (A[R] == K) { return R; } e l s e i f (K > A[R ] ) { r e t u r n 1; } e l s e i f (A[ 0 ] == K) { return 0; } e l s e i f (K < A [ 0 ] ) { r e t u r n 1; } w h i l e ( L<=R) { Mid = ( L +R ) / 2 ; i f ( K= =A[ Mid ] ) r e t u r n Mid ; e l s e i f ( K > A[ Mid ] ) L = Mid + 1 ; else R = Mid 1 ; } return 1 ; } o, se o numero a ser procurado for maior que Perceba que com essa modicac a o do vetor ou menor que o valor da primeira posic o o algoo valor da ultima posic a a ritmo ir a retorna o resultado de n ao encontrado. O mesmo acontece caso o valor a ser es pesquisado seja igual ao primeiro ou igual ao ultimo. Isso permite que nessas situac o es sejam poupadas. O que seria o pior caso, ou seja, o algoritmo executaria varias operac o LogN vezes, se transformaria em O(1). Mudando sua classe assint otica de logar tmica para constante em determinados casos. Outro aspecto de melhorais tem a ver com a corretude do algoritmo. Em es pr implementac o aticas do algoritmo as vari aveis usadas para representar os ndices ter ao um tamanho nito, logo ser ao somente capazes de representar uma s erie nita de valores. Por exemplo inteiros de 32-bits somente suportam valores na faixa de -2147483648 a es ingenuas do algo2147483647. Isso pode causar s erios problemas em implementac o ritmo. Se o meio do vetor for calculado como meio = (inicio + f inal)/2 , ent ao o valor (inicio+nal) ir a exceder o limite da faixa de n umeros suportados se o valor da vari avel

nal for maior que 2147483647/2 (usando inteiros como exemplo) e busca seja realizada nos extremos da parte direita do vetor, ultrapassado o limite da faixa, gerando um erro. Tal problema pode ser contornado modicando o c alculo da vari avel meio da seguinte forma: meio = (f inal?inicio)/2 + inicio.

8. Conclus ao
Realizamos a analise te orica e matem atica da algoritmo de busca bin aria. Conduzimos o apresentamos melhorias ao algoritmo. teste de tempo de execuc a

9. Refer encias
http://www.brpreiss.com/books/opus5/html/page449.html Algoritmos : teoria e pr atica - Thomas H. Cormen http://rosettacode.org/wiki/Binary_search