Как близко мы можем добраться до линейного умножения, сложения и сравнения (по целым числам)?

21

Согласно статье К. У. Ригана «Соедините звезды» , в конце он упоминает, что найти представление целых чисел так, что операции сложения, умножения и сравнения вычисляются за линейное время, все еще остается открытой задачей:

Существует ли представление целых чисел, так что сложение, умножение и сравнение осуществимы за линейное время? В принципе, существует ли линейное время дискретно упорядоченного кольца?

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

(2) Для полной задачи можно предположить, что мы найдем оптимальную схему умножения, сложения и сравнения на целых числах. Насколько близко мы можем получить самую медленную из этих трех операций (в худшем случае) к линейному времени? И на этой ноте, насколько быстрыми будут другие операции?

ФОРМАЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ

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

Поэтому мы спрашиваем, для неотрицательных целых чисел и y, где 0 x < n и 0 y < n , можем ли мы найти структуру данных / алгоритм, который может выполнять сложение, умножение и сравнение с \ между x и y в O ( n log ( n ) ) времени и O ( log 2 ( n ) ) пространства?xy0x<n0y<nxyO(nlog(n))O(log2(n))

Мэтт Грофф
источник
1
Я упомяну, что можно создать схему, которая выполняет эти операции за время для неотрицательных целых чисел, где n - размер бит наибольшего целого числа (при условии, что мы знаем n заранее). Интересно, сможем ли мы добиться большего успеха и сделать это во времени, пропорциональном текущему целому числу (ам), вычисляемому. Θ(n)nn
Мэтт Грофф
5
@TysonWilliams: Да! Binary!
Джефф
2
Вместо получения линейного времени для всех этих операций, есть ли представление целых чисел, чтобы у всех этих операций было время ? O(nlogn)
Эмиль Йержабек поддерживает Монику
4
На самом деле, существует тривиальный положительный ответ: представлять целые числа в двоичном коде с битами заполнения. Не должно ли утверждение включать какое-то условие о том, что представление должно иметь длину, линейную по длине двоичного представления? n2
Эмиль Йержабек поддерживает Монику
5
@ EmilJeřábek: Я предполагаю, что он хочет, чтобы представление любого целого числа использовало f ( n ) битов для некоторой функции f ( n ) = Θ ( log n ) . nf(n)f(n)=Θ(logn)
Джефф

Ответы:

14

Возможно, не самый лучший ответ, но, возможно, это полезная отправная точка. Если мы хотим представить неотрицательное целое число, мы можем сохранить его в виде набора вычетов по модулю последовательных простых чисел, начиная с 2. В этой форме сравнение потенциально сложно, но умножение и сложение могут быть выполнены довольно быстро. Произведение первых простых чисел аппроксимирована с помощью р п # = ехр ( ( 1 + O ( 1 ) ) п войти п ) . Следовательно, для представления целого числа N требуются вычеты по модулю первых n простых чисел, гдеn

pn#=exp((1+o(1))nlogn).
Nn . Поскольку мы можем представить любое N < p n #, используя вычеты по модулю первых n простых вычетов, мы можем взять n log n log ( N ) . Сложение и умножение может быть сделано непосредственно между парами остатков. Такихпар n , причем максимальное простое число равно n log ( n ) . Таким образом, дополнение должно быть вN<exp((1+o(1))nlogn)N<pn#nnlognlog(N)nnlog(n) ,то время как умножениепомощью Шёнхаге-Strassen должно быть в O ( п войти журнал ( N ) журнал журнал журнал журнал ( N ) журнал журнал журнал ( N ) ) . Поскольку n log n log N , то грубое приближение дает n в O ( log N / log log N ).O(nloglog(N))O(nloglog(N)loglogloglog(N)logloglog(N))nlognlogNnO(logN/loglogN), Это дало бы сложность сложения и умножения , как приблизительно и O ( журнал N журнал журнал журнал N журнал журнал журнал журнал N ) .O(logN)O(logNlogloglogNloglogloglogN)
Джо Фитцсимонс
источник
1
@vzn: Да, я собирался упомянуть это для сравнения, но потом мне пришло в голову, что может быть более быстрая операция сравнения через смешанное представление радиуса.
Джо Фицсимонс