Question: Étant donné un -bit nombre naturel , comment calculer en utilisant seulement ajouts et changements (bits)?
L'astuce consiste à utiliser la recherche binaire. Cependant, je n'ai pas pu atteindre la complexité requise (j'ai obtenu ).
Qu'est-ce que cela signifie par using only $O(n)$ (bit) additions and shifts
:
Il s'agit d'un exercice dans un livre d'algorithmes.
À mon avis, cela signifie que l'ajout de deux nombres naturels , disons bits, coûte et le déplacement d'un nombre naturel , disons bits, coûte également . Ensuite , nous sommes seulement autorisés à utiliser ces opérations fois.
Il ne mentionne pas le coût de la comparaison. Je suppose que nous pouvons l'ignorer ou supposer que la comparaison de deux nombres naturels , disons bits, coûte également .
Mon algorithme :
- Déterminez la plage du nombre de bits de :
Par conséquent,
- Recherche binaire: recherchez entre et aide de la recherche binaire. Pour chaque nombre , pour calculer en utilisant des additions et des décalages comme primitives et le comparer avec .
La complexité est donc pour fois de recherche binaire et de calcul , chacun prenant à son tour additions et décalages.