No pior caso, o número de acessos numa busca binária num arr...

Próximas questões
Com base no mesmo assunto
Q1978798 Algoritmos e Estrutura de Dados
No pior caso, o número de acessos numa busca binária num array ordenado, com N chaves distintas, é da ordem de:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A - log2 N

Vamos entender por que a alternativa correta é a A e, em seguida, explicar por que as demais alternativas estão incorretas.

A busca binária é um algoritmo eficiente para encontrar um valor em um array ordenado. No pior caso, a busca binária acessa o array de forma logarítmica, ou seja, o número máximo de acessos é da ordem de log2 N, onde N é o número de elementos no array.

Justificativa da alternativa correta (A): A busca binária funciona dividindo o array ao meio repetidamente até encontrar o elemento desejado ou determinar que ele não está presente. A cada divisão, o tamanho do intervalo a ser pesquisado é reduzido pela metade, levando a um total de log2 N comparações no pior caso.

Por que as outras alternativas estão incorretas:

B - log2 N . N: Esta alternativa sugere que o número de acessos é proporcional a N multiplicado pelo logaritmo de N. Isso é incorreto, pois a busca binária não necessita de um número de acessos linearmente proporcional ao tamanho do array multiplicado pelo logaritmo. O número de acessos cresce apenas de forma logarítmica, não linear.

C - N: Esta alternativa sugere que o número de acessos no pior caso é linear, ou seja, igual ao tamanho do array. Isso descreve a busca sequencial, não a busca binária. Em uma busca sequencial, cada elemento seria verificado até o fim do array, resultando em um tempo de execução linear.

D - N/2: Esta alternativa sugere que o número de acessos é proporcional a metade do tamanho do array. No entanto, enquanto a busca binária reduz o intervalo a ser pesquisado pela metade a cada passo, o número total de acessos realizados no pior caso ainda é logarítmico, não linear.

E - N2: Esta alternativa sugere um crescimento quadrático no número de acessos. Esse comportamento é típico de algoritmos de força bruta ou certos algoritmos de ordenação, mas não da busca binária. A busca binária é muito mais eficiente, com um número de acessos muito menor.

Conclusão: A alternativa A é correta porque reflete precisamente a natureza logarítmica do crescimento do número máximo de acessos em uma busca binária em um array ordenado com N chaves distintas. As outras alternativas não representam adequadamente a complexidade do algoritmo de busca binária.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Chutei a de amor

gab) A

O número de acessos numa busca binária num array ordenado, com N chaves distintas, é da ordem de O(log N).

A busca binária divide o array ao meio a cada passo, reduzindo o espaço de busca pela metade. Por esse motivo, o número de acessos é logarítmico em relação ao tamanho do array. O logaritmo base 2 de N é o número de passos necessários para encontrar a chave procurada, sendo que, no pior caso, o número de acessos será log2(N).

by: chatGPT

Complementando a resposta do Luís Gustavo, o algoritmo aproveita como vantagem o fato de o array estar ordenado e o divide em dois, buscando o elemento do meio. Se o valor buscado for igual ao do elemento do meio, a pesquisa é encerrada, se for menor então a chave estará a esquerda e se for maior à direita, eliminando assim, a cada passo, a pesquisa em metade do array.

No pior caso, o número de acessos em uma busca binária em um array ordenado com N chaves distintas é da ordem de log₂(N).

A busca binária funciona dividindo o array em dois subarrays a cada iteração. Se o elemento que estamos buscando está na metade superior do array, descartamos a metade inferior. Se o elemento está na metade inferior, descartamos a metade superior.

Esse processo se repete até que o subarray que estamos examinando tenha apenas um elemento, que é o elemento que estamos buscando.

O número máximo de iterações que a busca binária pode realizar é quando o elemento que estamos buscando não está presente no array. Nesse caso, a busca binária percorrerá todo o array, descartando metade do array a cada iteração.

O número de elementos no array após cada iteração é dado pela seguinte sequência:

N, N/2, N/4, N/8, ..., 1

Essa sequência é uma progressão geométrica com razão 1/2. O número de termos nessa sequência é o número de iterações da busca binária.

A fórmula para a soma de uma progressão geométrica é:

S = a * (1 - r^n) / (1 - r)

Onde:

  • S é a soma da progressão geométrica
  • a é o primeiro termo
  • r é a razão
  • n é o número de termos

No nosso caso, a = N, r = 1/2, e n é o número de iterações.

Queremos encontrar o número de iterações, então vamos resolver a equação para n:

n = log₂(a * (1 - r) / (1 - r^S))

Substituindo os valores que conhecemos:

n = log₂(N * (1 - 1/2) / (1 - 1/2^S))

Simplificando a expressão:

n = log₂(N)

Portanto, o número máximo de iterações da busca binária é log₂(N).

Conclusão:

No pior caso, o número de acessos em uma busca binária em um array ordenado com N chaves distintas é da ordem de log₂(N). Isso significa que o número de acessos aumenta de forma logarítmica com o tamanho do array.

Exemplo:

Se o array tiver 1024 elementos, o número máximo de acessos em uma busca binária será:

log₂(1024) = 10

Isso significa que a busca binária precisará fazer no máximo 10 comparações para encontrar o elemento que está buscando, mesmo que o elemento não esteja presente no array.

gamini

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo