Рейтинг:2

Квадратичное сито: существует ли эмпирическое правило, позволяющее решить, сколько чисел просеивать?

флаг et

в Алгоритм квадратичного решета, мы сначала выбираем B, а затем ищем B-гладкие простые множители, просеивая их с помощью квадратичного многочлена.

Я могу найти несколько формул, которые помогают понять, как определить B.

Чтобы разложить число N, мы можем использовать следующее:

$ L знак равно е ^ {\ sqrt {\ пер (N) пер (пер (N))}} $

$ B = L ^ {\ гидроразрыва {1} {\ sqrt 2}} $

Это дает приблизительную оценку того, какие гладкие числа нам следует искать.

Однако я не могу найти какую-либо формулу или эмпирическое правило, чтобы выяснить, сколько чисел просеивать с помощью квадратичного многочлена.

Если непонятно, о чем я говорю, позвольте мне объяснить, используя Статья в Википедии о QS.

В разделе «Сбор данных» «Пример базового сита» говорится следующее:

начать процесс просеивания для каждого простого числа в основе, выбрав просеиваем первые 0 ≤ X < 100 Y(X).

Итак, здесь они решили создать список из 100 Y(X) для просеивания. Есть ли эмпирическое правило или формула для получения этого числа (в данном случае 100)?

Рейтинг:3
флаг ng

В чистом квадратичном решете нам нужно найти немного больше отношений (что эквивалентно сглаживаний), чем простых чисел в факторной базе. При этом мы считаем маленькие простые числа $p_i$ это делает $N$ квадратичный вычет по модулю $p_i$, а не их полномочия. Это количество также является количеством столбцов в (разреженной) матрице отношений, где отношения являются строками, которые служат входными данными для фазы линейной алгебры. Как правило, на 5 строк больше, чем столбцов. Каждое дополнительное отношение уменьшает вероятность отказа в два раза.

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

  • Критически важно, если мы просеиваем один (QS) или несколько полиномов (MPQS/SIQS). С QS слишком часто случается, что полином вырастает до чрезмерно высоких значений, поэтому сглаживания становятся редкостью; тогда увеличение сита или его повторное использование для дальнейшего просеивания одного и того же многочлена не сильно поможет.
  • Стратегия w.r.t. полиномиальные значения, в которых мы не уверены (или очень уверены), суммируя логарифмы их факторов, найденных путем просеивания, что они достаточно гладкие для наших целей. Мы можем
    • Игнорируйте их, даже если они все еще могут быть $В$-гладкий.
    • Попробуйте маленькие простые множители до самого высокого просеянного простого числа. $В$, и их мощности, даже если они превышают $В$ (другими словами, мы ограничиваемся $В$-гладкие значения полинома, прошедшие шаг просеивания); это просто и типично для базовой (MP/SI)QS.
    • Попробуйте небольшие коэффициенты до некоторого более высокого предела $В'$ (другими словами, мы просеиваем простые и простые степени, чтобы $B<B'$, и ограничиться $В'$-гладки, прошедшие стадию просеивания).
    • Кроме того, допустите один большой простой множитель (PMPQS) до некоторого более высокого предела в надежде, что столкновение для этих больших простых чисел позволит двум иначе неприменимым отношениям дать новое пригодное для использования (то есть без большого простого числа, так что оно соответствует ограниченному количеству столбцов в матрица)
    • Дополнительно разрешите два больших простых множителя (PPMPQS).
  • Порог просеивания (для суммы логов простых чисел, накопленных в записи сита), который является компромиссом между отбрасыванием $В$-сглаживает и тратит слишком много времени на попытки факторизовать кандидатов, которые не дадут пригодных отношений.

Рекомендации по запуску QS:

  • Сначала сделайте что-нибудь скромное $N$ без ситового массива!
    • Используйте факторную базу $p_i$ изготовление $N$ квадратичный вычет до некоторого предела $В$. Безопаснее сначала ошибиться в большую сторону от оптимума. $В$.
    • Находить $В$-сглаживает среди значений многочлена $т^2-N$ с $t\gtrsim\left\lceil\sqrt N\,\right\rceil$ самым простым способом (например, пробным делением).Найдите немного больше сглаживаний, чем простых чисел.
    • Получите линейную алгебру, работающую на фактор $N$.
  • Оптимизировать большинство (или все) пробных подразделений $т^2-N$ тестом, который $t\bmod(p_i^k)$ попадает в набор из двух предварительно вычисленных значений.
  • На этом этапе узким местом должно быть нахождение сглаживаний путем полной факторизации многих $т^2-N$ с использованием (оптимизированного) пробного разделения, в результате чего большинство из них не $В$-гладкий. Ввести массив сита, цель которого состоит в том, чтобы (резко) уменьшить количество гладких кандидатов за счет ошибочного отклонения нескольких (отсеивание простых степеней помогает сделать ложное отклонение редким). Это позволяет увеличить $N$ (таким образом повышая оптимальную $В$).
  • Вводите дальнейшие оптимизации одну за другой:
    • имея $-1$ в факторной базе, то есть просеивание $N-t^2$ за $t\lesssim\влево\lfloor\sqrt N\,\right\rfloor$
    • легкое улучшение «множителя», которое $м\,N$ для некоторого выбранного небольшого целого числа $м$, так что факторная база улучшается (имеет относительно много маленьких простых чисел)
    • с использованием нескольких полиномов, что позволяет отсеивать и факторизовать гораздо меньших кандидатов, что, таким образом, с большей вероятностью будет $В$-гладит
    • узким местом все еще может быть попытка факторизации смузи, прошедшего ситовый тест (в зависимости от порога просеивания и размера факторной базы); некоторая экономия возможна за счет использования (оптимизированного) пробного деления только на маленькие простые числа, а затем чего-то лучшего, возможно, ро Полларда с проверкой на простоту, когда она не дает быстрого результата; такой тест будет необходим для больших основных улучшений.
    • одно, затем два больших основных улучшения (PMPQS и PPMPQS).
  • Оптимизируйте любые узкие места и настройте множество параметров. В конечном счете, узким местом должно быть просеивание. Оптимизированные реализации требуют больших усилий, с методами и кодом, специализированными в зависимости от размера просеянных простых чисел и взаимодействия с кешем ЦП.
флаг et
«Узким местом, вероятно, все еще является попытка факторизации сглаживаний, прошедших ситовый тест» - я не уверен, что понимаю это - под ситовым тестом вы имеете в виду те, которые были просеяны до 1, верно? Если это так, основные коэффициенты мощности можно найти как часть самого просеивания. Зачем нужно снова делать факторизацию.
флаг et
«На этом этапе узким местом должно быть нахождение сглаживания путем полной факторизации множества t2-N с использованием пробного деления» — вам не нужно выполнять пробное деление для каждого числа в списке для каждого простого числа. Вы можете вывести положение тех чисел в списке, которые будут делиться, используя корни, полученные из Шанкса-Тоннелли.Вы делите только эти числа и игнорируете все остальные
fgrieu avatar
флаг ng
Под «решетчатым тестом» я подразумеваю суммирование (масштабированного, возможно, отрицательного) журнала $p_i$ в соответствующих местах в массиве ОЗУ, индексированном $t$ в пределах смещения, и при достижении порогового значения выбор этой записи. Это эффективно находит те $t$ с особенно гладкими значениями $t^2-N$, но _не_ дает их факторизацию. В лучшем случае это дает ${p_i}^k$, благодаря которым порог был перейден.Остальная часть факторизации $t^2-N$, выбранная с помощью теста решета, должна быть найдена, чтобы установить соотношение.
флаг et
О, хорошо, на данный момент я просто изучаю ванильную форму квадратного решета. С вашим ответом о том, сколько чисел просеивать, я думаю, что приближаюсь к концу. После этого я перейду к оптимизации. Большое спасибо за ваш развернутый ответ.
fgrieu avatar
флаг ng
@ user93353: Я переработал раздел «рекомендации», чтобы включить описанную вами оптимизацию, которая раньше отсутствовала. В самом деле, все факторизации $t^2-N$ можно выполнять исключительно этим методом, за счет достаточной точности и некоторой чрезмерной избирательности при просеивании. Ро Полларда (или другой метод) для завершения факторизации гладких кандидатов появляется только в конце игры оптимизации. Насколько я помню, это важно в PPMPQS.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.