Domanda: Dato un -bit numero naturale , come calcolare utilizzando solo aggiunte e turni (bit)?
Il consiglio è di usare la ricerca binaria. Tuttavia, non sono riuscito a raggiungere la complessità richiesta (ho ottenuto ).
Cosa significa using only $O(n)$ (bit) additions and shifts
:
Questo è un esercizio in un libro sugli algoritmi.
A mio avviso, significa che aggiungere due, diciamo -bit, i numeri naturali costa e spostare a, diciamo -bit, il numero naturale costa anche . Poi ci sono solo permesso di utilizzare tale operazioni volte.
Non menziona il costo del confronto. Suppongo che possiamo ignorarlo o supporre che il confronto di due, diciamo bit, numeri naturali costa anche .
Il mio algoritmo :
- Determina l'intervallo del numero di bit di :
Pertanto,
- Ricerca binaria: trova tra e usando la ricerca binaria. Per ciascun numero , per calcolare con aggiunte e spostamenti come primitivi e confrontarlo con .
La complessità è quindi per tempi di ricerca binaria e calcolo , ciascuno dei quali a sua volta prende aggiunte e spostamenti.