El teorema de Gabriel Lame limita el número de pasos por log (1 / sqrt (5) * (a + 1/2)) - 2, donde la base del log es (1 + sqrt (5)) / 2. Esto es para el peor escenario del algoritmo y ocurre cuando las entradas son números de Fibanocci consecutivos.
Un límite ligeramente más liberal es: log a, donde la base del logaritmo es (sqrt (2)) está implícita en Koblitz.
Para fines criptográficos, solemos considerar la complejidad bit a bit de los algoritmos, teniendo en cuenta que el tamaño de bit viene dado aproximadamente por k = loga.
Aquí hay un análisis detallado de la complejidad bit a bit del algoritmo Euclid:
Aunque en la mayoría de las referencias la complejidad bit a bit del algoritmo de Euclides viene dada por O (loga) ^ 3, existe un límite más estricto que es O (loga) ^ 2.
Considerar; 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
observe que: a = r0> = b = r1> r2> r3 ...> rm-1> rm> 0 .......... (1)
y rm es el máximo común divisor de ay b.
Mediante una afirmación en el libro de Koblitz (Un curso de Teoría de números y Criptografía) se puede probar que: ri + 1 <(ri-1) / 2 ................. ( 2)
Nuevamente en Koblitz, el número de operaciones de bits requeridas para dividir un entero positivo de k bits por un entero positivo de 1 bit (suponiendo que k> = l) se da como: (k-l + 1) .l ...... ............. (3)
Por (1) y (2) el número de divisiones es O (loga) y así por (3) la complejidad total es O (loga) ^ 3.
Ahora bien, esto puede reducirse a O (loga) ^ 2 mediante una observación en Koblitz.
considere ki = logri +1
por (1) y (2) tenemos: ki + 1 <= ki para i = 0,1, ..., m-2, m-1 y ki + 2 <= (ki) -1 para i = 0 , 1, ..., m-2
y por (3) el costo total de las m divisiones está acotado por: SUM [(ki-1) - ((ki) -1))] * ki para i = 0,1,2, .., m
reorganizando esto: SUM [(ki-1) - ((ki) -1))] * ki <= 4 * k0 ^ 2
Entonces, la complejidad bit a bit del algoritmo de Euclides es O (loga) ^ 2.
a%b
. El peor de los casos es cuandoa
yb
son números de Fibonacci consecutivos.