Теорема Габриэля Ламе ограничивает число шагов логарифмом (1 / sqrt (5) * (a + 1/2)) - 2, где основание логарифма (1 + sqrt (5)) / 2. Это для худшего варианта сценария для алгоритма, и это происходит, когда входные данные являются последовательными числами Фибанокки.
Несколько более либеральная граница: log a, где основание журнала (sqrt (2)) подразумевается Коблицем.
В криптографических целях мы обычно учитываем побитовую сложность алгоритмов, принимая во внимание, что размер битов приблизительно равен k = loga.
Вот подробный анализ побитовой сложности алгоритма Евклида:
Хотя в большинстве ссылок побитовая сложность алгоритма Евклида дается O (loga) ^ 3, существует более жесткая граница O (loga) ^ 2.
Рассмотрим; 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
Обратите внимание, что: a = r0> = b = r1> r2> r3 ...> rm-1> rm> 0 .......... (1)
и rm - наибольший общий делитель a и b.
Утверждением в книге Коблица (Курс теории чисел и криптографии) можно доказать, что: ri + 1 <(ri-1) / 2 ............... .. (2) </p>
Снова в Коблице число битовых операций, необходимое для деления k-битного натурального числа на l-битное натуральное число (при условии, что k> = l) задается как: (k-l + 1) .l ... ................ (3)
По (1) и (2) количество делений равно O (loga) и, следовательно, по (3) общая сложность равна O (loga) ^ 3.
Теперь это можно уменьшить до O (loga) ^ 2 с помощью замечания в Коблице.
рассмотрим ki = logri + 1
согласно (1) и (2) имеем: ki + 1 <= ki для i = 0,1, ..., m-2, m-1 и ki + 2 <= (ki) -1 для = 0,1, ..., т-2 </p>
и (3) общая стоимость m делений ограничена: SUM [(ki-1) - ((ki) -1))] * ki для i = 0,1,2, .., м
перестановка: SUM [(ki-1) - ((ki) -1))] * ki <= 4 * k0 ^ 2 </p>
Таким образом, побитовая сложность алгоритма Евклида равна O (loga) ^ 2.