В вычислительной теории чисел алгоритм Чиполлы представляет собой метод решения сравнения вида
где , так что n — квадрат x , а где — нечетное простое число . Здесь обозначает конечное поле с элементами ; . Алгоритм назван в честь Микеле Чиполлы , итальянского математика , который открыл его в 1907 году.
Помимо простых модулей, алгоритм Чиполлы также способен извлекать квадратные корни по модулю простых степеней. [1]
Алгоритм
Входные данные:
- , нечетное простое число,
- , который является квадратом.
Выходы:
- , удовлетворяющий
Шаг 1 — найти такое , которое не является квадратом. Не существует известного детерминированного алгоритма для нахождения такого , но можно использовать следующий метод проб и ошибок . Просто выберите и, вычислив символ Лежандра , можно увидеть, удовлетворяет ли условию. Вероятность того, что случайное число будет удовлетворять , составляет . При достаточно большом это около . [2] Таким образом, ожидаемое число попыток до нахождения подходящего составляет около 2.
Шаг 2 — вычислить x , вычислив внутри расширения поля . Этот x будет удовлетворяющим
Если , то также выполняется. И поскольку p нечетно, . Поэтому всякий раз, когда находится решение x , всегда есть второе решение, -x .
Пример
(Примечание: все элементы до шага два рассматриваются как элементы , а все элементы на шаге два рассматриваются как элементы .)
Найдите все x такие, что
Перед применением алгоритма необходимо проверить, что действительно является квадратом в . Следовательно, символ Лежандра должен быть равен 1. Это можно вычислить с помощью критерия Эйлера : это подтверждает, что 10 является квадратом, и, следовательно, алгоритм можно применять.
- Шаг 1: Найдите a , такое, что не является квадратом. Как уже говорилось, это должно быть сделано методом проб и ошибок. Выберите . Тогда становится 7. Символ Лежандра должен быть −1. Опять же, это можно вычислить с помощью критерия Эйлера: Так что является подходящим выбором для a .
- Шаг 2: Вычислить за :
Так же как и решение, а также . Действительно,
Доказательство
Первая часть доказательства заключается в проверке того, что действительно является полем. Для простоты обозначений определяется как . Конечно, является квадратичным невычетом, поэтому в нет квадратного корня . Это можно грубо рассматривать как аналог комплексного числа i . Арифметика поля вполне очевидна. Сложение определяется как
- .
Умножение также определяется как обычно. Имея в виду, что , становится
- .
Теперь нужно проверить свойства поля. Свойства замкнутости относительно сложения и умножения, ассоциативности , коммутативности и дистрибутивности легко увидеть. Это потому, что в этом случае поле несколько напоминает поле комплексных чисел (при этом являясь аналогом i ).
Аддитивное тождество равно , или более формально : Пусть , тогда
- .
Мультипликативное тождество имеет вид , или более формально :
- .
Единственное, что осталось для того, чтобы быть полем, — это существование аддитивных и мультипликативных обратных элементов . Легко видеть, что аддитивный обратный элемент — это , который является элементом , поскольку . Фактически, это аддитивные обратные элементы x и y . Чтобы показать, что каждый ненулевой элемент имеет мультипликативный обратный элемент, запишите и . Другими словами,
- .
Итак, должны выполняться два равенства и . Детализация дает выражения для и , а именно
- ,
- .
Обратные элементы, которые показаны в выражениях и существуют, поскольку все они являются элементами . Это завершает первую часть доказательства, показывая, что является полем.
Вторая и средняя часть доказательства показывает, что для каждого элемента . По определению, не является квадратом в . Критерий Эйлера тогда говорит, что
- .
Таким образом . Это, вместе с малой теоремой Ферма (которая гласит, что для всех ) и знанием того, что в полях характеристики p уравнение выполняется, соотношение, иногда называемое мечтой первокурсника , показывает желаемый результат
- .
Третья и последняя часть доказательства — показать, что если , то .
Вычислить
- .
Обратите внимание, что это вычисление произошло в , так что это . Но с теоремой Лагранжа , утверждающей, что ненулевой многочлен степени n имеет не более n корней в любом поле K , и знанием того, что имеет 2 корня в , эти корни должны быть всеми корнями в . Только что было показано, что и являются корнями в , так что должно быть так, что . [3]
Скорость
После нахождения подходящего a число операций, необходимых для алгоритма, равно умножениям, суммам, где m — число цифр в двоичном представлении p , а k — число единиц в этом представлении. Чтобы найти a методом проб и ошибок, ожидаемое число вычислений символа Лежандра равно 2. Но может повезти с первой попыткой, и может потребоваться больше 2 попыток. В поле выполняются следующие два равенства
где известно заранее. Это вычисление требует 4 умножений и 4 сумм.
где и . Эта операция требует 6 умножений и 4 сумм.
Предполагая, что (в случае , прямое вычисление намного быстрее) двоичное выражение имеет цифры, из которых k — единицы. Таким образом, для вычисления степени , первую формулу нужно использовать раз, а вторую раз.
В этом отношении алгоритм Чиполлы лучше алгоритма Тонелли–Шенкса тогда и только тогда, когда , причем — максимальная степень числа 2, которая делит . [4]
Основные модули мощности
Согласно «Истории чисел» Диксона, следующая формула Чиполлы находит квадратные корни по модулю степеней простого числа: [5] [6]
- где и
- где , как в примере этой статьи
Взяв пример из статьи в Википедии, мы видим, что эта формула выше действительно вычисляет квадратные корни по модулю простых степеней.
Как
Теперь решим через:
Теперь создайте и
(см. здесь код Mathematica, демонстрирующий это вычисление, помня, что здесь происходит что-то близкое к сложной модульной арифметике)
Как таковой:
- и
и окончательное уравнение:
- вот ответ.
Ссылки
- ^ Диксон, Леонард Юджин (1919). История теории чисел. Т. 1. С. 218.
- ^ Р. Крэндалл, К. Померанс Простые числа: вычислительная перспектива Springer-Verlag, (2001) стр. 157
- ^ "Алгоритм М. Бейкера Чиполлы для нахождения квадратных корней mod p" (PDF) . Архивировано из оригинала (PDF) 2017-03-25 . Получено 2011-08-24 .
- ^ Tornaría, Gonzalo (2002). "Квадратные корни по модулю P". LATIN 2002: Теоретическая информатика . Конспект лекций по информатике. Том 2286. С. 430–434. doi :10.1007/3-540-45995-2_38. ISBN 978-3-540-43400-9.
- ^
"История теории чисел" Том 1 Леонарда Юджина Диксона, стр. 218, Chelsea Publishing 1952 читать онлайн
- ^ Мишель Чиполла, Rendiconto dell' Accademia delle Scienze Fisiche e Matematiche. Наполи, (3), 10.1904, 144–150
Источники
- Э. Бах, Дж. О. Шаллит Алгоритмическая теория чисел: Эффективные алгоритмы MIT Press, (1996)