Frage: Wie kann man bei einer natürlichen Bit-Zahl nur mit (Bit) und berechnen ?N ⌈ √O(n)
Der Tipp ist die binäre Suche. Ich konnte jedoch die erforderliche Komplexität nicht erreichen (ich habe ).
Was bedeutet es mit using only $O(n)$ (bit) additions and shifts
:
Dies ist eine Übung in einem Algorithmusbuch.
Meiner Meinung nach bedeutet dies, dass das Addieren von zwei natürlichen Zahlen , beispielsweise Bit, kostet und das Verschieben einer natürlichen Zahl von beispielsweise Bit ebenfalls kostet . Dann dürfen wir solche -Operationen nur -mal verwenden.
Die Vergleichskosten werden nicht erwähnt. Ich denke, wir können es ignorieren oder davon ausgehen, dass der Vergleich von zwei natürlichen Zahlen , beispielsweise Bit, ebenfalls kostet .O ( 1 ) n O ( 1 ) , O ( 1 ) , O ( n ) n O ( 1 )
Mein -Algorithmus :
- Bestimmen Sie den Bereich der Anzahl der Bits von :
Daher ist
t_1 \ triangleq \ lfloor \ frac {n-1} {2} \ rfloor + 1 \ le t \ le \ lceil \ frac {n} {2} \ rceil + 1 \ triangleq t_2.⌈ √2 n - 1t1≜⌊n-1
- Binäre Suche: Finden Sie zwischen und mithilfe der binären Suche. Für jede Zahl , zu berechnen Additionen und Verschiebungen als Primitive verwendet und vergleicht ihn mit .
Die Komplexität ist somit für Zeiten der binären Suche und Berechnung von , von denen jede wiederum Additionen und Verschiebungen benötigt.O ( n ) × 2 O ( n )