Der Satz von Gabriel Lame begrenzt die Anzahl der Schritte durch log (1 / sqrt (5) * (a + 1/2)) - 2, wobei die Basis des log (1 + sqrt (5)) / 2 ist. Dies ist das Worst-Case-Szenario für den Algorithmus und tritt auf, wenn die Eingaben aufeinanderfolgende Fibanocci-Zahlen sind.
Eine etwas liberalere Grenze ist: log a, wobei die Basis des log (sqrt (2)) von Koblitz impliziert wird.
Für kryptografische Zwecke berücksichtigen wir normalerweise die bitweise Komplexität der Algorithmen, wobei berücksichtigt wird, dass die Bitgröße ungefähr durch k = loga gegeben ist.
Hier ist eine detaillierte Analyse der bitweisen Komplexität des Euklid-Algorithmus:
Obwohl in den meisten Referenzen die bitweise Komplexität des Euklid-Algorithmus durch O (loga) ^ 3 gegeben ist, gibt es eine engere Grenze, die O (loga) ^ 2 ist.
Erwägen; r0 = a, r1 = b, r0 = q1.r1 + r2. . . , ri-1 = qi.ri + ri + 1 ,. . . , rm-2 = qm-1.rm-1 + rm rm-1 = qm.rm.
Beachten Sie Folgendes: a = r0> = b = r1> r2> r3 ...> rm-1> rm> 0 .......... (1)
und rm ist der größte gemeinsame Teiler von a und b.
Durch eine Behauptung in Koblitz 'Buch (Ein Kurs in Zahlentheorie und Kryptographie) kann bewiesen werden, dass: ri + 1 <(ri-1) / 2 ................. ( 2)
Wiederum in Koblitz wird die Anzahl der Bitoperationen, die erforderlich sind, um eine positive k-Bit-Ganzzahl durch eine positive l-Bit-Ganzzahl (unter der Annahme von k> = l) zu teilen, wie folgt angegeben: (k-l + 1) .l ...... .............(3)
Nach (1) und (2) ist die Anzahl der Teilungen O (loga), und nach (3) ist die Gesamtkomplexität O (loga) ^ 3.
Dies kann nun durch eine Bemerkung in Koblitz auf O (loga) ^ 2 reduziert werden.
Betrachten Sie ki = logri +1
durch (1) und (2) haben wir: ki + 1 <= ki für i = 0,1, ..., m-2, m-1 und ki + 2 <= (ki) -1 für i = 0 , 1, ..., m-2
und durch (3) sind die Gesamtkosten der m Divisionen begrenzt durch: SUMME [(ki-1) - ((ki) -1))] * ki für i = 0,1,2, .., m
Neuordnung: SUM [(ki-1) - ((ki) -1))] * ki <= 4 * k0 ^ 2
Die bitweise Komplexität von Euklids Algorithmus ist also O (loga) ^ 2.
a%b
. Der schlimmste Fall ist, wenna
undb
sind aufeinanderfolgende Fibonacci-Zahlen.