Коли тест первинності AKS насправді швидший, ніж інші тести?


24

Я намагаюся скласти уявлення про те, як слід інтерпретувати тест первинності AKS, коли я дізнаюся про нього, наприклад, слідство для доказу PRIMES ⊆ P або фактично практичний алгоритм тестування первинності на комп’ютерах.

Тест має поліноміальне виконання, але з високим ступенем та можливими високими константами. Отже, у практичній мові, при якій n вона перевершує інші тести на первинність? Тут n - кількість розрядів простих ліній, а "перевершення" посилається на приблизний час виконання тестів на типових архітектурах комп'ютерів.

Мене цікавлять функціонально порівнянні алгоритми, тобто детерміновані, які не потребують гіпотез для коректності.

Окрім того, чи використовується такий тест порівняно з іншими практичними, враховуючи вимоги до пам'яті тесту?

Відповіді:


23

Швидка відповідь: Ніколи, для практичних цілей. Наразі це не має жодного практичного використання.

Виміряні часи первинності

Спочатку давайте відокремимо «практичну» перевірку на композитивність від підтвердження первинності. Перший досить хороший майже для всіх цілей, хоча існують різні рівні тестування, які люди вважають адекватними. Для чисел під 2 ^ 64 для детермінованої відповіді потрібно не більше 7 тестів Міллера-Рабіна або одного тесту BPSW. Це буде набагато швидше, ніж AKS, і буде таким же правильним у всіх випадках. Для чисел, що перевищують 2 ^ 64, BPSW - хороший вибір, де деякі додаткові тести Міллера-Рабіна з випадковою базою додають додаткової впевненості за дуже невеликі витрати. Майже всі методи доказування розпочнуться (або вони повинні) з такого тесту, оскільки це дешево і означає, що ми робимо лише наполегливу роботу над числами, які майже напевно є простими.

Переходимо до доказів. У кожному випадку отриманий доказ не потребує домислів, тому їх можна функціонально порівняти. "Готча" APR-CL полягає в тому, що він не зовсім поліноміальний, а "готча" ECPP / fastECPP полягає в тому, що можуть існувати числа, що займають більше часу, ніж очікувалося.

На графіку ми бачимо дві реалізації AKS з відкритим кодом - перша - з паперу v6, друга - вдосконалення від Bernstein та Voloch та хороша евристика r / s від Bornemann. Вони використовують бінарну сегментацію в GMP для множення поліномів, тому є досить ефективними, а використання пам'яті не є проблемою для розмірів, що розглядаються тут. Вони дають хороші прямі лінії з нахилом ~ 6,4 на графіку журналу журналу, що чудово. Але екстраполяція до 1000 цифр надходить приблизно у сотні тисяч мільйонів років, порівняно з декількома хвилинами для APR-CL та ECPP. Існують додаткові оптимізації, які можна зробити з документа Бернштейна 2002 року, але я не думаю, що це суттєво змінить ситуацію (хоча до впровадження цього не доведено).

Врешті-решт AKS перемагає пробний підрозділ. Метод теореми BLS75 5 (наприклад, n-1 доказ) вимагає часткового факторингу n-1. Це чудово працює при невеликих розмірах, а також, коли нам пощастить, і n-1 легко піддавати чиннику, але врешті-решт ми зациклюємося на тому, що потрібно враховувати якийсь великий напівприміт Є більш ефективні реалізації, але вони дійсно не масштабують останні 100 цифр незалежно. Ми можемо бачити, що AKS передасть цей метод. Отже, якщо ви поставили запитання в 1975 році (і тоді був алгоритм AKS), ми могли б обчислити кросовер для того, де AKS був найбільш практичним алгоритмом. Але до кінця 1980-х APR-CL та інші циклотомні методи були правильним порівнянням, і до середини 1990-х років нам слід було б включити ECPP.

Методи APR-CL та ECPP - це реалізація з відкритим кодом. Primo (безкоштовний, але не з відкритим кодом ECPP) буде швидшим для великих розмірів цифр, і я впевнений, що він має кращу криву (я ще не робив нових бенчмаркінгу). Квітень-CL не є многочленом , але показник має фактор logloglogn , який , як хто - то пожартував «йде в нескінченність , але ніколи не спостерігалося , щоб зробити це». Це призводить нас до думки, що теоретично лінії не перетинатимуть жодного значення n, де AKS закінчився б до того, як наше сонце вигорило. ECPP - це алгоритм Лас-Вегаса, оскільки, коли ми отримаємо відповідь, це 100% вірно, ми очікуємо результат у вигаданому O(log5+ϵ(n)) (ECPP) абоO(log4+ϵ(n)) ("fastECPP") час, але можливі цифри, які забирають більше часу. Тож ми очікуємо, що стандартний AKS завжди буде повільнішим, ніж ECPP майже для всіх номерів (він, безумовно, показав себе таким чином для чисел до 25 к. Цифр).

АКС може мати більше вдосконалень, які чекають їх виявлення, що робить його практичним. Квартальний документ Бернштейна обговорює рандомізований O на основі AKS ( log 4 + ϵO(log4+ϵ(n))(lgn)4+o(1)(lgn)4+o(1)час знайти еліптичні криві сертифікати? Моє сьогоднішнє враження, що відповідь "ні", але подальші результати [...] можуть змінити відповідь ".

Деякі з цих алгоритмів можна легко паралелізувати або розподілити. AKS дуже легко (кожен тест незалежний). ECPP не надто важкий. Я не впевнений у APR-CL.

ECPP та BLS75 методи видають сертифікати, які можна незалежно та швидко перевірити. Це величезна перевага перед AKS та APR-CL, де нам просто довіряти впровадження та комп’ютер, який його виробляв.


18

O~(log6n)O~(log4n)O~(n1/7)O(lognO(logloglogn))

O~(log2n)280O~(log2n) , що набагато швидше, ніж Ленстра –Помітність.

У всіх цих тестах пам'ять не є проблемою.


У своєму коментарі jbapple ставить питання про те, який тест на первинність використовувати на практиці. Це питання впровадження та бенчмаркінгу: реалізуйте та оптимізуйте декілька алгоритмів та експериментально визначте, який швидкий у якому діапазоні. Для допитливих, кодери PARI зробили саме це, і вони придумали детерміновану функцію isprimeта ймовірнісну функцію ispseudoprime, яку можна знайти тут . Імовірнісний тест застосовується Міллером-Рабіном. Детермінованим є BPSW.


Ось додаткова інформація від Дани Якобсен :

Парі, починаючи з версії 2.3, використовує доказ первинності APR-CL isprime(x)та ймовірний первинний тест BPSW (з "майже надзвичайно сильним" тестом Лукаса) ispseudoprime(x).

Вони беруть аргументи, які змінюють поведінку:

  • isprime(x,0) (за замовчуванням.) Використовується комбінація (BPSW, швидкий Pocklington або BLS75 теорема 5, APR-CL).
  • isprime(x,1) Використовує тест Поклінгтон-Лемер (простий) n1
  • isprime(x,2) Використовує APR-CL.

  • ispseudoprime(x,0) (за замовчуванням.) Використовується BPSW (ЗР із базою 2, "майже надзвичайно сильний" Лукас).

  • ispseudoprime(x,k)k1kmpz_is_probab_prime_p(x,k)

Pari 2.1.7 використовував набагато гірші налаштування. isprime(x)були лише тести MR (за замовчуванням 10), які призводили до таких цікавих речей, як isprime(9)повернення справжнього досить часто. Використанняisprime(x,1) дозволило б зробити доказ Поклінґтона, який було близько 80 цифр, а потім стало занадто повільним, щоб бути загалом корисним.

Ви також пишете Насправді, ніхто не використовує ці алгоритми, оскільки вони занадто повільні. Я вважаю, я знаю, що ви маєте на увазі, але я думаю, що це занадто сильно, залежно від вашої аудиторії. AKS, звичайно, надзвичайно повільно, але APR-CL і ECPP досить швидкі, що деякі люди ними користуються. Вони корисні для параноїдних криптовалют і корисні для людей, які роблять такі речі, primegapsабо factordbде люди мають достатньо часу, щоб захотіти перевірених праймерів.

[Мій коментар до цього: шукаючи просте число в певному діапазоні, ми використовуємо деякий підхід просіювання з подальшими порівняно швидкими ймовірнісними тестами. Тільки тоді, якщо взагалі, ми проводимо детермінований тест.]

У всіх цих тестах пам'ять не є проблемою. Це проблема для AKS. Дивіться, наприклад, цей відбиток . Частина цього залежить від реалізації. Якщо реалізувати те, яке число відеофільму називає AKS (що фактично є узагальненням малої теореми Ферма), використання пам'яті буде надзвичайно великим. Використання NTL реалізації алгоритму v1 або v6, як-от згаданий папір, призведе до великого обсягу пам'яті. Хороша реалізація GMP v6 все ще використовуватиме ~ 2 Гб для 1024-бітового простого, що є багатопам'яті для такої невеликої кількості. Використання деяких удосконалень Бернштейна та бінарної сегментації GMP призводить до набагато кращого зростання (наприклад, ~ 120 Мб на 1024 біт). Це все ще набагато більше, ніж потрібні інші методи, і не дивно, це буде в мільйони разів повільніше, ніж APR-CL або ECPP.


2
Я не вірю, що це відповідає на поставлене запитання, яке вимагало б обчислення констант цих тестів.
jbapple

1
Використовуйте свої голоси, коли ви стикаєтеся з надзвичайно неохайною публікацією, яка не витрачає зусиль, або відповіді, яка явно і може бути небезпечно неправильною. - Я не бачу, як особа, яка заперечує цю відповідь, виправдовує голосування.
Pål GD

2
@ PålGD: Можливо, тому, що він просто не відповідає на питання (перед редагуванням, тобто). Також ви використовуєте те саменяк ОП, Ювал?
Рафаель

@Raphael Ти маєш рацію, їхні н моя журналн.
Yuval Filmus

Добрий пост, але ваше визначення "нікого" ніколи так не виходить. З цікавості, я перевірив, скільки часу потрібно, щоб перевірити 2048-бітовий DSA ймовірний простір, сформований за допомогою OpenSSL (використовуючи openssl pkeyparam -textдля вилучення шістнадцяткових рядків), використовуючи PARI isprime(APR-CL як зазначено): близько 80-х на швидкому ноутбуці. Для довідки, Chromium потребує трохи більше 0,25 секунди для кожної ітерації моєї демонстрації JavaScript тесту Frobenius (що набагато сильніше, ніж MR), тому APR-CL, безумовно, параноїдальний, але здійсненний.
Арне Фогель

2

це складне питання через те, що відомі як "великі / галактичні константи", пов'язані з перепадами між ефективністю різних алгоритмів. іншими словамиО(f(н)) пов'язаний з кожним різним алгоритмом може приховати дуже великі константи, такі, що більш ефективні О(f(н)) над іншим О(г(н)) на основі асимптотичної / функціональної складності лише "запускається" для дуже великих н. я розумію, що AKS "ефективніший" (ніж конкуруючі алгоритми) лише для "набагато більше"н"поза діапазоном поточного практичного використання (і це точно н насправді дуже складно точно підрахувати), але теоретичні вдосконалення впровадження алгоритму (які активно домагаються деякі) можуть змінити це в майбутньому.

побачив цей останній документ про арксів, який аналізує цю тему глибоко / детально, не впевнений, що люди думають про неї, досі не чув реакції, здається, може бути створена студентом теза, але, можливо, один із найбільш детальних / всебічних аналізів практичне використання наявного алгоритму.


AKS є більш ефективним, ніж що? Що таке конкуренція?
Yuval Filmus

всі інші алгоритми. переважно ймовірністьc? подробиці в газеті
vzn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.