Согласно статье К. У. Ригана «Соедините звезды» , в конце он упоминает, что найти представление целых чисел так, что операции сложения, умножения и сравнения вычисляются за линейное время, все еще остается открытой задачей:
Существует ли представление целых чисел, так что сложение, умножение и сравнение осуществимы за линейное время? В принципе, существует ли линейное время дискретно упорядоченного кольца?
(1) Насколько мы можем приблизиться к линейному умножению и сложению времени без сравнений? Здесь я предполагаю, что размеры задач могут варьироваться, поэтому нам может понадобиться структура данных / алгоритм, который позволяет изменять целочисленные размеры.
(2) Для полной задачи можно предположить, что мы найдем оптимальную схему умножения, сложения и сравнения на целых числах. Насколько близко мы можем получить самую медленную из этих трех операций (в худшем случае) к линейному времени? И на этой ноте, насколько быстрыми будут другие операции?
ФОРМАЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ
Как отмечает Эмиль Йержабек, мы хотели бы исключить тривиальные случаи и сконцентрироваться на поведении в худшем случае для этого вопроса.
Поэтому мы спрашиваем, для неотрицательных целых чисел и ∀ y, где 0 ≤ x < n и 0 ≤ y < n , можем ли мы найти структуру данных / алгоритм, который может выполнять сложение, умножение и сравнение с \ между x и y в O ( n log ( n ) ) времени и O ( log 2 ( n ) ) пространства?
источник
Ответы:
Возможно, не самый лучший ответ, но, возможно, это полезная отправная точка. Если мы хотим представить неотрицательное целое число, мы можем сохранить его в виде набора вычетов по модулю последовательных простых чисел, начиная с 2. В этой форме сравнение потенциально сложно, но умножение и сложение могут быть выполнены довольно быстро. Произведение первых простых чисел аппроксимирована с помощью р п # = ехр ( ( 1 + O ( 1 ) ) п войти п ) . Следовательно, для представления целого числа N требуются вычеты по модулю первых n простых чисел, гдеn
источник