Was ist die Komplexität der Berechnung ?
complexity-theory
integers
number-theory
Raphael
quelle
quelle
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 (k O~(k) nn2 O(logn) nn2 n2log2n .O~(n2(logn)2)=O~(n2)
quelle
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 2f(n)=nn2 f1(n)=n2 nf1(n) m n mn n2 Zeit.log22(n)
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 ( nf(n) f(n) n n2 n2 n2 Bits, so dass die Anzahl solcher Quadrate m = m ' - 1 ist . Dies ist der Fall, den wir weiter unten analysieren.m′=⌈2log2(n)⌉ m=m′−1
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 logt1=log22(n) o1=2log2(n) o1 t2=o21 o2=2o1 i Zeit und gibt einoi=2ilog2(n)-Bit-Produkt aus. Dieser Vorgang stoppt beimm-ten Schritt; Infolgedessen braucht es Zeitti=4i−1log22n oi=2ilog2(n) m
.Texp=∑[1..m]ti=log22(n)∑[1..m]4i=4m−13log22n
Wenn die anfänglichen Quadrierungskosten enthalten sind, brauchen wir höchstens Zeit
Hinweis
quelle