Pergunta: Dada umanúmero natural bits , como calcular usando apenas adições e turnos de (bit)?
A dica é usar a pesquisa binária. No entanto, não consegui atingir a complexidade necessária (obtive ).
O que isso significa por using only $O(n)$ (bit) additions and shifts
:
Este é um exercício em um livro de algoritmos.
Na minha opinião, significa que adicionar dois números naturais , digamos bits, custa e mudar um número natural digamos bits, também custa . Então, só podemos usar essas operações vezes.
Não menciona o custo da comparação. Acho que podemos ignorá-lo ou assumir que comparar dois números naturais , digamos bits, também custa .
Minhas algoritmo :
- Determinar o intervalo do número de bits do :
Portanto,
- Pesquisa binária: Encontre entre e usando a pesquisa binária. Para cada número , para calcular usando adições e desvios quanto primitivas e compará-lo com .
A complexidade é, portanto, para tempos de pesquisa binária e computação , cada um dos quais, por sua vez, recebe adições e turnos.