Реферат: Применение алгоритма RSA для шифрования потоков данных
Если , то есть искомое число.
Если , то заменим пару чисел парой и перейдем к
шагу 1.
Теорема 1. При вычислении наибольшего общего делителя с помощью алгоритма Евклида будет выполнено не более операций деления с остатком, где есть количество цифр в десятичной записи меньшего из чисел и .
Доказательство. Положим и определим - последовательность делителей, появляющихся в процессе выполнения шага 1 алгоритма Евклида. Тогда
.
Пусть также , , , , - последовательность Фибоначчи. Индукцией по от до легко доказывается неравенство . А так как , то имеем неравенства и .
Немного подправив алгоритм Евклида, можно достаточно быстро решать сравнения при условии, что . Эта задача равносильна поиску целых решений уравнения .
2.2.3. Алгоритм решения уравнения
0) Определим матрицу .
1) Вычислим - остаток от деления числа на , , .
-
Если , то второй столбец матрицы даёт вектор
решений уравнения. -
Если , то заменим матрицу матрицей .
-
Заменим пару чисел парой и перейдем к шагу 1.
Если обозначить через матрицу , возникающую в процессе работы алгоритма перед шагом 2 после делений с остатком (шаг 1), то в обозначениях из доказательства теоремы 1 в этот момент выполняется векторное равенство . Поскольку числа и взаимно просты, имеем , и это доказывает, что алгоритм действительно даёт решение уравнения . Буквой мы обозначили количество делений с остатком, которое в точности такое же, как и в алгоритме Евклида.
Три приведённых выше алгоритма относятся к разряду так называемых полиномиальных алгоритмов. Это название носят алгоритмы, сложность которых оценивается сверху степенным образом в зависимости от длины записи входящих чисел. Если наибольшее из чисел, подаваемых на вход алгоритма, не превосходит , то сложность алгоритмов этого типа оценивается величиной , где - некоторая абсолютная постоянная. Во всех приведённых выше примерах .
Полиномиальные алгоритмы в теории чисел - большая редкость. Да и опенки сложности алгоритмов чаше всего опираются на какие-либо не доказанные, но правдоподобные гипотезы, обычно относящиеся к аналитической теории чисел.
Для некоторых задач эффективные алгоритмы вообще не известны. Иногда в таких случаях все же можно предложить последовательность действий, которая, «если повезет», быстро приводит к требуемому результату. Существует класс так называемых вероятностных алгоритмов, которые дают правильный результат, но имеют вероятностную опенку времени работы. Обычно работа этих алгоритмов зависит от одного или нескольких параметров. В худшем случае они работают достаточно долго. Но удачный выбор параметра определяет быстрое завершение работы. Такие алгоритмы, если множество «хороших» значений параметров велико, на практике работают достаточно эффективно, хотя и не имеют хороших опенок сложности.
Мы будем иногда использовать слова детерминированный алгоритм, чтобы отличать алгоритмы в обычном смысле от вероятностных алгоритмов.
Как пример, рассмотрим вероятностный алгоритм, позволяющий эффективно находить решения полиномиальных сравнений по простому модулю. Пусть — простое число, которое предполагается большим, и - многочлен, степень которого предполагается ограниченной. Задача состоит в отыскании решений сравнения
. (8)
Например, речь может идти о решении квадратичных сравнений, если степень многочлена равна 2. Другими словами, мы должны отыскать в поле все элементы, удовлетворяющие уравнению .
Согласно малой теореме Ферма, все элементы поля являются однократными корнями многочлена . Поэтому, вычислив наибольший общий делитель , мы найдем многочлен , множество корней которого в поле совпадает с множеством корней многочлена , причем все эти корни однократны. Если окажется, что многочлен имеет нулевую степень, т. е. лежит в поле , это будет означать, что сравнение (8) не имеет решений.
Для вычисления многочлена удобно сначала вычислить многочлен ,