Pregunta: Dado un bits número natural , cómo calcular utilizando sólo adiciones y cambios (BIT)?
El consejo es utilizar la búsqueda binaria. Sin embargo, no pude lograr la complejidad requerida (obtuve ).
¿Qué quiere decir con using only $O(n)$ (bit) additions and shifts
:
Este es un ejercicio en un libro de algoritmos.
En mi opinión, significa que agregar dos, digamos -bit, números naturales cuesta y cambiar a, digamos -bit, número natural también cuesta . Entonces solo se nos permite usar tales operaciones veces.
No menciona el costo de la comparación. Supongo que podemos ignorarlo o suponer que comparar dos, digamos -bit, números naturales también cuesta .
Mi algoritmo :
- Determine el rango del número de bits de :
Por lo tanto,
t_1 \ triangleq \ lfloor \ frac {n-1} {2} \ rfloor + 1 \ le t \ le \ lceil \ frac {n} {2} \ rceil + 1 \ triangleq t_2.
- Búsqueda binaria: busque entre y utilizando la búsqueda binaria. Para cada número , para calcular usando adiciones y cambios como primitivas y compararla con .
La complejidad es, por lo tanto, para veces de búsqueda binaria y computación , cada una de las cuales toma adiciones y desplazamientos.