stringtranslate.com

Алгоритм Чиполлы

В вычислительной теории чисел алгоритм Чиполлы представляет собой метод решения сравнения вида

где , так что n — квадрат x , а где — нечетное простое число . Здесь обозначает конечное поле с элементами ; . Алгоритм назван в честь Микеле Чиполлы , итальянского математика , который открыл его в 1907 году.

Помимо простых модулей, алгоритм Чиполлы также способен извлекать квадратные корни по модулю простых степеней. [1]

Алгоритм

Входные данные:

Выходы:

Шаг 1 — найти такое , которое не является квадратом. Не существует известного детерминированного алгоритма для нахождения такого , но можно использовать следующий метод проб и ошибок . Просто выберите и, вычислив символ Лежандра , можно увидеть, удовлетворяет ли условию. Вероятность того, что случайное число будет удовлетворять , составляет . При достаточно большом это около . [2] Таким образом, ожидаемое число попыток до нахождения подходящего составляет около 2.

Шаг 2 — вычислить x , вычислив внутри расширения поля . Этот x будет удовлетворяющим

Если , то также выполняется. И поскольку p нечетно, . Поэтому всякий раз, когда находится решение x , всегда есть второе решение, -x .

Пример

(Примечание: все элементы до шага два рассматриваются как элементы , а все элементы на шаге два рассматриваются как элементы .)

Найдите все x такие, что

Перед применением алгоритма необходимо проверить, что действительно является квадратом в . Следовательно, символ Лежандра должен быть равен 1. Это можно вычислить с помощью критерия Эйлера : это подтверждает, что 10 является квадратом, и, следовательно, алгоритм можно применять.

Так же как и решение, а также . Действительно,

Доказательство

Первая часть доказательства заключается в проверке того, что действительно является полем. Для простоты обозначений определяется как . Конечно, является квадратичным невычетом, поэтому в нет квадратного корня . Это можно грубо рассматривать как аналог комплексного числа 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, демонстрирующий это вычисление, помня, что здесь происходит что-то близкое к сложной модульной арифметике)

Как таковой:

и

и окончательное уравнение:

вот ответ.

Ссылки

  1. ^ Диксон, Леонард Юджин (1919). История теории чисел. Т. 1. С. 218.
  2. ^ Р. Крэндалл, К. Померанс Простые числа: вычислительная перспектива Springer-Verlag, (2001) стр. 157
  3. ^ "Алгоритм М. Бейкера Чиполлы для нахождения квадратных корней mod p" (PDF) . Архивировано из оригинала (PDF) 2017-03-25 . Получено 2011-08-24 .
  4. ^ Tornaría, Gonzalo (2002). "Квадратные корни по модулю P". LATIN 2002: Теоретическая информатика . Конспект лекций по информатике. Том 2286. С. 430–434. doi :10.1007/3-540-45995-2_38. ISBN 978-3-540-43400-9.
  5. ^ "История теории чисел" Том 1 Леонарда Юджина Диксона, стр. 218, Chelsea Publishing 1952 читать онлайн
  6. ^ Мишель Чиполла, Rendiconto dell' Accademia delle Scienze Fisiche e Matematiche. Наполи, (3), 10.1904, 144–150

Источники