нижняя граница этой проблемы?
Спасибо и всего наилучшего, и извините, если это такой наивный вопрос.
time-complexity
lower-bounds
nt.number-theory
primes
Леандро Затеско
источник
источник
Ответы:
Изложите мои комментарии в ответ: поскольку делимость (тривиально) сводима к делению, а поскольку деление (нетривиально) сводимо к умножению с помощью подходов, подобных методу Ньютона, тогда ваша задача должна иметь такую же временную сложность, что и целочисленное умножение. AFAIK, нет известных нижних границ умножения лучше, чем тривиальный линейный, поэтому то же самое должно быть справедливо для вашей задачи - и, в частности, поскольку известно, что умножение имеет (по существу) алгоритмы, ваши надежды на нижнюю границу почти наверняка напрасны.O(nlognlog∗n) nlognloglogn
Причина, по которой деление сводится именно к сложности умножения, насколько я понимаю, заключается в том, что метод Ньютона будет выполнять последовательность умножений разных возрастающих размеров; это означает, что если есть алгоритм умножения со сложностью то сложность алгоритма деления, использующего этот алгоритм умножения в качестве промежуточного шага, будет такой же, как у - и для всех обсуждаемых классов сложности это просто .Θ(f(n)) Θ(∑lgnk=0f(n2k)) Θ(f(n))
источник
Я думаю, что для некоторых чисел, оканчивающихся на 3,7 и т. Д., Есть хиты Ведического типа или базовые 2 ^ n делителей ...
Но, вообще говоря, самый быстрый алгоритм деления кажется нормой.
Лучший из известных мне, не обращая внимания, - это Алгоритм D Получисленных методов Кнута, хотя никогда не проверял его правильность. Он работает в более или менее O (mn-n ^ 2), где m и n - дивиденды и делители ... без учета сложности умножения ...
Однако нижняя граница может быть на удивление низкой, поскольку ваш вопрос касается только решения проблемы.
источник