No pior caso, o número de acessos numa busca binária num arr...
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
A alternativa correta é a **A**.
A complexidade de uma busca binária no pior caso é da ordem de **log₂ N**.
### Análise do Algoritmo
1. **O que é a Busca Binária?** A busca binária é um algoritmo eficiente para encontrar um item em um array **ordenado**. Ela funciona dividindo repetidamente o intervalo de busca pela metade.
2. **Como Funciona?**
* O algoritmo começa comparando o elemento do meio do array com o valor procurado.
* Se o valor procurado for menor, a busca continua na metade inferior do array.
* Se o valor procurado for maior, a busca continua na metade superior.
* Esse processo de "dividir para conquistar" se repete até que o valor seja encontrado ou o intervalo de busca se esgote.
3. **Análise do Pior Caso:** O pior caso ocorre quando o elemento não está no array ou é o último a ser encontrado após o número máximo de divisões. A cada passo (acesso ou comparação), o tamanho do problema (o número de elementos a serem considerados) é reduzido pela metade.
4. **A Matemática por Trás:** A pergunta fundamental é: "Quantas vezes podemos dividir `N` por 2 até que sobre apenas 1 elemento?" Essa é exatamente a definição de um **logaritmo na base 2**.
* Se temos `N` elementos, após 1 acesso, sobram `N/2`.
* Após 2 acessos, sobram `N/4`.
* Após `k` acessos, sobram `N / 2^k`.
* No pior caso, paramos quando `N / 2^k ≈ 1`, o que significa que `2^k ≈ N`. Resolvendo para `k`, temos `k ≈ log₂ N`.
Portanto, o número de acessos cresce de forma logarítmica com o tamanho do array, tornando a busca binária extremamente eficiente para grandes conjuntos de dados.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo