Jump to content

Алгоритм Тонелли – Шэнкса

Тонелли -Шенкса Алгоритм (называемый Шэнксом алгоритмом RESSOL) используется в модульной арифметике для решения r в конгруэнции формы r 2 n (mod p ), где p простое число : то есть найти квадратный корень из n по модулю p .

Тонелли-Шэнкса нельзя использовать для составных модулей: нахождение квадратных корней по модулю составных чисел является вычислительной проблемой, эквивалентной целочисленной факторизации . [ 1 ]

Эквивалентная, но несколько более избыточная версия этого алгоритма была разработана Альберто Тонелли [ 2 ] [ 3 ] в 1891 году. Обсуждаемая здесь версия была независимо разработана Дэниелом Шэнксом в 1973 году, который объяснил:

Мое опоздание с изучением этих исторических ссылок было связано с тем, что я одолжил первый том « Диксона» Истории другу, и он так и не был возвращен. [ 4 ]

По словам Диксона, [ 3 ] Алгоритм Тонелли может извлекать квадратные корни из x по модулю простых степеней p. л кроме простых чисел.

Основные идеи

[ редактировать ]

Учитывая ненулевое значение и простое (который всегда будет нечетным), критерий Эйлера говорит нам, что имеет квадратный корень (т. является квадратичным вычетом ) тогда и только тогда, когда:

.

Напротив, если число не имеет квадратного корня (является невычетом), критерий Эйлера говорит нам, что:

.

найти такой не сложно , поскольку половина целых чисел от 1 до иметь это свойство. Итак, мы предполагаем, что у нас есть доступ к такому неостатку.

Путем (обычного) многократного деления на 2 мы можем написать как , где странно. Обратите внимание: если мы попробуем

,

затем . Если , затем является квадратным корнем из . В противном случае для , у нас есть и удовлетворительно:

  • ; и
  • это корень -й степени из 1 (поскольку ).

Если при наличии выбора и для конкретного удовлетворяющие вышеизложенному (где не является квадратным корнем из ), мы можем легко вычислить другое и для такие, что выполняются приведенные выше соотношения, то мы можем повторять это до тех пор, пока становится корень -й степени из 1, т.е. . В этот момент является квадратным корнем из .

Мы можем проверить, является ли это корень -й степени из 1, возведя его в квадрат раз и проверяем, равен ли он 1. Если да, то ничего делать не нужно, так как тот же выбор и работает. Но если это не так, должно быть -1 (поскольку при возведении в квадрат получается 1, а из 1 могут быть только два квадратных корня 1 и -1 по модулю ).

Чтобы найти новую пару и , мы можем умножить по фактору , предстоит определить. Затем необходимо умножить на коэффициент держать . Итак, когда равно -1, нам нужно найти коэффициент так что это -й корень из 1 или эквивалентно это корень -й степени из -1.

Хитрость здесь в том, чтобы использовать , известный неостаток. Критерий Эйлера применяется к показано выше говорит, что это корень -й степени из -1. Итак, возведя в квадрат неоднократно, у нас есть доступ к последовательности корень -й степени из -1. Мы можем выбрать тот, который будет служить в качестве . После небольшого обслуживания переменных и тривиального сжатия регистров приведенный ниже алгоритм возникает естественным образом.

Алгоритм

[ редактировать ]

Операции и сравнения над элементами мультипликативной группы целых чисел по модулю p неявно являются mod p .

Входы :

  • п , простое число
  • n , элемент такие, что решения сравнения r 2 = n существует; в этом случае мы говорим, что n квадратичный вычет по модулю p .

Выходы :

  • захожу такой, что р 2 = п

Алгоритм :

  1. Вынося степени двойки, найдите Q и S такие, что с Q нечетным
  2. Найдите букву Z в который является квадратичным невычетом
  3. Позволять
  4. Петля:
    • Если t = 0, верните r = 0
    • Если t = 1, верните r = R
    • В противном случае используйте повторное возведение в квадрат, чтобы найти наименьшее i , 0 < i < M , такое, что
    • Позволять , и установите

После того, как вы решили сравнение с r, второе решение будет . По крайней мере, я такой, что есть M , то решения сравнения не существует, т. е. n не является квадратичным вычетом.

Это наиболее полезно, когда p ≡ 1 (mod 4).

Для таких простых чисел, что p ≡ 3 (mod 4), эта проблема имеет возможные решения. . Если они удовлетворяют , это единственные решения. Если не, , n — квадратичный невычет, решений нет.

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

[ редактировать ]

Мы можем показать, что в начале каждой итерации цикла выполняются следующие инварианты цикла :

Изначально:

  • (поскольку z является квадратичным невычетом по критерию Эйлера)
  • (поскольку n — квадратичный вычет)

На каждой итерации с M' , c' , t' , R' новые значения заменяют M , c , t , R :

    • поскольку у нас это есть но ( i — наименьшее значение такое, что )

От и проверку на t = 1 в начале цикла, мы видим, что мы всегда найдем i в 0 < i < M такое, что . M строго меньше на каждой итерации, поэтому алгоритм гарантированно остановится. Когда мы достигаем условия t = 1 и останавливаемся, последний инвариант цикла подразумевает, что R 2 = п .

Порядок т

[ редактировать ]

Мы можем альтернативно выразить инварианты цикла, используя порядок элементов:

  • как и раньше

Каждый шаг алгоритма перемещает t в меньшую подгруппу, измеряя точный порядок t и умножая его на элемент того же порядка.

Решение сравнения r 2 ≡ 5 (по модулю 41). 41 является простым, как и требовалось, и 41 ≡ 1 (по модулю 4). 5 является квадратичным вычетом по критерию Эйлера: (как и раньше, операции в неявно являются mod 41).

  1. так ,
  2. Найдите значение z:
    • , поэтому 2 является квадратичным вычетом по критерию Эйлера.
    • , поэтому 3 — квадратичный невычет: установите
  3. Набор
  4. Петля:
    • Первая итерация:
      • , так что мы еще не закончили
      • , так
    • Вторая итерация:
      • , так что мы еще не закончили
      • так
    • Третья итерация:
      • , и мы закончили; возвращаться

Действительно, 28 2 ≡ 5 (по модулю 41) и (−28) 2 ≡ 13 2 ≡ 5 (по модулю 41). Таким образом, алгоритм дает два решения нашего сравнения.

Скорость алгоритма

[ редактировать ]

Алгоритм Тонелли – Шэнкса требует (в среднем по всем возможным входным данным (квадратичные остатки и квадратичные невычеты))

модульные умножения, где количество цифр в двоичном представлении и количество единиц в двоичном представлении . Если искомый квадратичный невычет можно найти, проверив, является ли случайно выбранное число является квадратичным невычетом, для него требуется (в среднем) вычисления символа Лежандра . [ 5 ] Среднее значение двух вычислений символа Лежандра объясняется следующим образом: является квадратичным вычетом со случайностью , что меньше, чем но , поэтому нам в среднем нужно будет проверить, есть ли является квадратичным вычетом два раза.

По сути, это показывает, что алгоритм Тонелли – Шэнкса работает очень хорошо, если модуль является случайным, то есть если не особенно велик по отношению к количеству цифр в двоичном представлении . Как написано выше, алгоритм Чиполлы работает лучше, чем алгоритм Тонелли-Шэнкса, если (и только если) . Однако если вместо этого использовать алгоритм Сазерленда для выполнения вычисления дискретного логарифма в 2-силовской подгруппе , можно заменить с выражением, которое асимптотически ограничено . [ 6 ] Явно вычисляется такой, что а потом удовлетворяет (Обратите внимание, что кратно 2, потому что является квадратичным вычетом).

Алгоритм требует от нас найти квадратичный невычет . Не существует известного детерминированного алгоритма, работающего за полиномиальное время для поиска такого значения. . Однако если обобщенная гипотеза Римана верна, существует квадратичный невычет , [ 7 ] что дает возможность проверить каждый до этого предела и найти подходящее за полиномиальное время . Однако имейте в виду, что это наихудший сценарий; в общем, как указано выше, обнаруживается в среднем в двух исследованиях.

Использование

[ редактировать ]

Алгоритм Тонелли-Шэнкса можно (естественно) использовать для любого процесса, в котором необходимы квадратные корни по простому модулю. Например, его можно использовать для поиска точек на эллиптических кривых . Это также полезно для вычислений в криптосистеме Рабина и на этапе просеивания квадратичного сита .

Обобщения

[ редактировать ]

Тонелли – Шэнкса можно обобщить на любую циклическую группу (вместо ) и к корням k -й степени для произвольного целого числа k , в частности к извлечению корня k- й степени из элемента конечного поля . [ 8 ]

Если в одной и той же циклической группе необходимо получить много квадратных корней и S не слишком велико, можно заранее подготовить таблицу квадратных корней из элементов 2-степенного порядка, а алгоритм упростить и ускорить следующим образом.

  1. Вынесите степени 2 из p - 1, определив Q и S как: с Q нечетным.
  2. Позволять
  3. Находить из таблицы так, что и установить
  4. вернуть Р.

Алгоритм Тонелли будет работать с mod p^k.

[ редактировать ]

Согласно «Теории чисел» Диксона. [ 3 ]

А. Тонелли [ 9 ] дал явную формулу для корней [ 3 ]

В справочнике Диксона показана следующая формула для квадратного корня из .

когда , или (s должно быть 2 для этого уравнения) и такой, что
для затем
где

отмечая, что и отмечая, что затем

Возьмем другой пример: и

Диксон также приписывает Тонелли следующее уравнение:

где и ;

С использованием и используя модуль математика следующая:

Сначала найдите модульный мод квадратного корня что можно сделать с помощью обычного алгоритма Тонелли:

и таким образом

И применяя уравнение Тонелли (см. выше):

Справка Диксона [ 3 ] ясно показывает, что алгоритм Тонелли работает с модулями .

Примечания

[ редактировать ]
  1. ^ Одед Голдрейх, Вычислительная сложность: концептуальная перспектива , Cambridge University Press, 2008, стр. 588.
  2. ^ Фолькер Дикерт; Манфред Куфляйтнер; Герхард Розенбергер; Ульрих Хертрампф (24 мая 2016 г.). Дискретные алгебраические методы: арифметика, криптография, автоматы и группы . Де Грютер. стр. 163–165. ISBN  978-3-11-041632-9 .
  3. ^ Jump up to: а б с д и Леонард Юджин Диксон (1919). История теории чисел . Том. 1. Вашингтон, Вашингтонский институт Карнеги. стр. 215–216 .
  4. ^ Дэниел Шэнкс. Пять теоретико-числовых алгоритмов. Материалы второй Манитобской конференции по вычислительной математике. Стр. 51–70. 1973.
  5. ^ Гонсало Торнария - Модуль квадратных корней p, страница 2 https://doi.org/10.1007%2F3-540-45995-2_38
  6. ^ Сазерленд, Эндрю В. (2011), «Вычисление структур и дискретные логарифмы в конечных абелевых p-группах», Mathematics of Computation , 80 (273): 477–500, arXiv : 0809.3413 , doi : 10.1090/s0025-5718-10- 02356-2 , S2CID   13940949
  7. ^ Бах, Эрик (1990), «Явные границы проверки простоты и связанных с ней проблем», Mathematics of Computation , 55 (191): 355–380, doi : 10.2307/2008811 , JSTOR   2008811
  8. ^ Адлеман, Л.М., К. Мандерс и Г. Миллер: 1977, «О получении корней в конечных полях». В: 18-й симпозиум IEEE по основам информатики. стр. 175-177
  9. ^ "Национальная академия Линчеи, Рим. Рендиконти, (5), 1, 1892, 116-120".
  • Иван Нивен; Герберт С. Цукерман; Хью Л. Монтгомери (1991). Введение в теорию чисел (5-е изд.). Уайли. стр. 110–115 . ISBN  0-471-62546-9 .
  • Дэниел Шэнкс. Пять теоретико-числовых алгоритмов. Материалы второй Манитобской конференции по вычислительной математике. Стр. 51–70. 1973.
  • Альберто Тонелли, Замечания о разрешении квадратичных сравнений. Новости Королевского общества наук и Гёттингенского университета имени Георга Августа. стр. 344–346. 1891. [1]
  • Гаган Тара Нанда - Математика 115: Алгоритм RESSOL [2]
  • Гонсало Торнария [3]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8c112b910b169fadc0a2559ed682dd70__1705605180
URL1:https://arc.ask3.ru/arc/aa/8c/70/8c112b910b169fadc0a2559ed682dd70.html
Заголовок, (Title) документа по адресу, URL1:
Tonelli–Shanks algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)