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


21

Приєднавшись до статті К. В. Регана "З'єднайте зірки" , він в кінці кінців зазначає, що все ще залишається відкритою проблемою знайти представлення цілих чисел таким чином, що операції додавання, множення та порівняння обчислюються за лінійним часом:

Чи існує подання цілих чисел так, що додавання, множення та порівняння все можна виконати за лінійним часом? В основному, чи існує лінійний часовий дискретно упорядкований дзвінок?

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

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

ФОРМАЛЬНЕ ЗАЯВЛЕННЯ ПРОБЛЕМИ

Як згадує Еміль Йерабек, ми хотіли б виключити тривіальні випадки і зосередитись на цьому гіршому випадку поведінки.

Отже, ми запитуємо, що для негативних цілих чисел та де та , чи можемо ми знайти структуру / алгоритм даних, який може виконувати додавання, множення та порівнювати з \ між і в час і простір?xy0x<n0y<nxyO(nlog(n))O(log2(n))


1
Я згадаю, що можна створити схему, яка виконує ці операції в часі на невід'ємних цілих числах, де - біт найбільшого цілого числа (якщо припустимо, що ми знаємо достроково). Цікаво, чи можемо ми зробити краще, і зробити це в часі пропорційно поточним цілим чисельним числам, що обчислюються. Θ(n)nn
Метт Гроф

5
@TysonWilliams: Так! Бінарний!
Jeffε

2
Замість того, щоб отримувати лінійний час для всіх цих операцій, чи існує подання цілих чисел, щоб усі ці операції мали час ? O(nlogn)
Еміль Йерабек підтримує Моніку

4
Насправді є тривіальна позитивна відповідь: представляйте цілі числа у двійковій формі з бітами набивання. Чи не повинен вислів містити якусь умову, згідно з якою представлення повинно мати лінійну довжину бінарного подання? n2
Еміль Йерабек підтримує Моніку

5
@ EmilJeřábek: Я припускаю, що він хоче представлення будь-якого цілого числа використовувати біт, для деякої функції . nf(n)f(n)=Θ(logn)
Jeffε

Відповіді:


14

Напевно, не найкраща відповідь, але, можливо, це корисна відправна точка. Якщо ми хочемо представити невід'ємне ціле число, ми можемо зберегти його як набір залишкових модульних послідовних простих чисел, починаючи з 2. У такому вигляді порівняння потенційно важке, але множення та додавання можна зробити досить швидко. Добуток перших праймерів наближається до Отже, щоб представити ціле число вам потрібні залишки за модулем першийн

pн#=досвід((1+о(1))нжурналн).
Nн простих чисел, де . Оскільки ми можемо представити будь-який N < p n # з використанням залишків за модулем перших n простих залишків, ми можемо прийняти n log n log ( N ) . Додавання та множення може здійснюватися безпосередньо між парами залишків. Існує n таких пар, при цьому максимальний простір становить близько n log ( n ) . Таким чином, додавання повинно бути в O ( n log log ( N ) ) , тоді як множення через Schonhage-Strassen має бути уN<досвід((1+о(1))нжурналн)N<pн#ннжурналнжурнал(N)ннжурнал(н)О(нжурналжурнал(N))О(нжурналжурнал(N)журналжурналжурналжурнал(N)журналжурналжурнал(N)) . Оскільки , то грубе наближення дає в . Це дало б складність додавання та множення як приблизно та .нжурналнжурналNнО(журналN/журналжурналN)О(журналN)О(журналNжурналжурналжурналNжурналжурналжурналжурналN)


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