Antworten:
Mit der schnellen Fourier-Transformation können Multiplikationen mit Bit-Zahlen in der Zeit ˜ O ( k ) durchgeführt werden (wobei die Tilde anzeigt, dass wir polylogarithmische Faktoren ignorieren). Durch wiederholtes Quadrieren können wir n n 2 mit O ( log n ) -Multiplikationen berechnen , und jede Multiplikation beinhaltet keine Zahl größer als n n 2 , die ungefähr n 2 log 2 n Bits hat. Die Gesamtzeit beträgt also ˜ O ( n 2 ( .
Als Antwort auf Kommentare bearbeitet Die Zeit zum Berechnen von kann in die Zeit zerlegt werden, die zum Berechnen von f 1 ( n ) = n 2 erforderlich ist, und die Zeit, die zum Ausführen von n f 1 ( n ) erforderlich ist . Ich gehe davon aus, dass das Multiplizieren einer m- Bit-Zahl mit einer n- Bit-Zahl nach der Schulbuchmethode genau m n Zeit benötigt. Ergänzungen usw. sind konstante Zeit. Als Ergebnis der Berechnung n 2 nimmt log 2Zeit.
Angenommen, wir verwenden die binäre Exponentiation zur Berechnung von . Die binäre Exponentiation führt bei der Berechnung von f ( n ) zwei Arten von Operationen aus : Quadrieren des aktuellen Produkts und Multiplizieren des aktuellen Produkts mit n , je nachdem, ob das aktuelle Bit in der binären Erweiterung von n 2 0 oder 1 ist. Im schlimmsten Fall n 2 ist eine Zweierpotenz ist , so daß binäre Potenzierung wiederholt Quadrate seine aktuelle Produkt , bis er die answer.Note erreicht , dass n 2 ist m ' = ⌈ 2 log 2 ( n Bits, so dass die Anzahl solcher Quadrate m = m ' - 1 ist . Dies ist der Fall, den wir weiter unten analysieren.
Das erste Quadrieren dauert , was zu einem o 1 = 2 log 2 ( n ) -Bit-Produkt führt. Das zweite Quadrieren nimmt zwei o 1 -Bit-Zahlen auf und läuft in t 2 = o 2 1- mal, was zu einem o 2 = 2 o 1- Bit-Produkt führt. Wenn Sie fortfahren, dauert der i- te Schritt t i = 4 i - 1 logZeit und gibt einoi=2ilog2(n)-Bit-Produkt aus. Dieser Vorgang stoppt beimm-ten Schritt; Infolgedessen braucht es Zeit
.
Wenn die anfänglichen Quadrierungskosten enthalten sind, brauchen wir höchstens Zeit
Hinweis