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


21

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

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

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

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

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

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

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


1
Я упомяну, что можно создать схему, которая выполняет эти операции за время для неотрицательных целых чисел, где n - размер бит наибольшего целого числа (при условии, что мы знаем n заранее). Интересно, сможем ли мы добиться большего успеха и сделать это во времени, пропорциональном текущему целому числу (ам), вычисляемому. Θ(n)nn
— Мэтт Грофф

5
@TysonWilliams: Да! Binary!
— Джефф

2
Вместо получения линейного времени для всех этих операций, есть ли представление целых чисел, чтобы у всех этих операций было время ? O(nlog⁡n)
— Эмиль Йержабек поддерживает Монику

4
На самом деле, существует тривиальный положительный ответ: представлять целые числа в двоичном коде с битами заполнения. Не должно ли утверждение включать какое-то условие о том, что представление должно иметь длину, линейную по длине двоичного представления? n2
— Эмиль Йержабек поддерживает Монику

5
@ EmilJeřábek: Я предполагаю, что он хочет, чтобы представление любого целого числа использовало f ( n ) битов для некоторой функции f ( n ) = Θ ( log n ) . nf(n)f(n)=Θ(log⁡n)
— Джефф

Ответы:


14

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

pn#=exp⁡((1+o(1))nlog⁡n).
Nn . Поскольку мы можем представить любое N < p n #, используя вычеты по модулю первых n простых вычетов, мы можем взять n log n ∝ log ( N ) . Сложение и умножение может быть сделано непосредственно между парами остатков. Такихпар n , причем максимальное простое число равно n log ( n ) . Таким образом, дополнение должно быть вN<exp⁡((1+o(1))nlog⁡n)N<pn#nnlog⁡n∝log⁡(N)nnlog⁡(n) ,то время как умножениепомощью Шёнхаге-Strassen должно быть в O ( п войти журнал ( N ) журнал журнал журнал журнал ( N ) журнал журнал журнал ( N ) ) . Поскольку n log n ∝ log N , то грубое приближение дает n в O ( log N / log log N ).O(nlog⁡log⁡(N))O(nlog⁡log⁡(N)log⁡log⁡log⁡log⁡(N)log⁡log⁡log⁡(N))nlog⁡n∝log⁡NnO(log⁡N/log⁡log⁡N), Это дало бы сложность сложения и умножения , как приблизительно и O ( журнал N журнал журнал журнал N журнал журнал журнал журнал N ) .O(log⁡N)O(log⁡Nlog⁡log⁡log⁡Nlog⁡log⁡log⁡log⁡N)


1
@vzn: Да, я собирался упомянуть это для сравнения, но потом мне пришло в голову, что может быть более быстрая операция сравнения через смешанное представление радиуса.
— Джо Фицсимонс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.