Обчислювальна сума розріджених многочленів у квадраті за час O (n log n)?


18

Припустимо , що ми маємо поліноми p1,...,pm ступеня не більше n , , так що загальна кількість ненульових коефіцієнтів дорівнює (тобто поліноми рідкі). Мене цікавить ефективний алгоритм обчислення полінома:n>mn

ipi(x)2

Оскільки цей многочлен має ступінь не більше , розмір вводу та виходу становить . У випадку ми можемо обчислити результат, використовуючи FFT за час . Чи можна це зробити для будь-якого ? Якщо це має якусь різницю, мене цікавить особливий випадок, коли коефіцієнти дорівнюють 0 і 1, а обчислення слід робити через цілі числа.O ( n ) m = 1 O ( n log n ) m < n2nO(n)m=1O(nlogn)m<n

Оновлення. Я зрозумів, що швидке рішення для вищезазначеного означатиме досягнення швидкого множення матриці. Зокрема, якщо ми можемо прочитати як коефіцієнт в . Таким чином, обчислення відповідає обчисленню зовнішнього добутку двох векторів, а обчислення суми відповідає обчислення матричного добутку. Якщо для обчислення є рішення, що використовує час то ми можемо помножити дві -by- матриць на час a i k b k j x i + n j p k ( x ) 2 p k ( x ) 2 k p k ( x ) 2 f (pk(x)=i=1naikxi+j=1nbkjxnjaikbkjxi+njpk(x)2pk(x)2kpk(x)2f(n,m)kpk(x)2nнf(н2,н), що означає, що для потребує значного прориву. Але , де є поточним показником множення матриці, можливо. Ідеї, хтось?f(n,m)=O(nlogn)mnf(n,m)=nω/2ω


1
Привіт Расмусе. Думаю, ви мали намір для цього перейти на головний сайт. Це мета-сайт для запитань про сайт.
Суреш Венкат

Відповіді:


3

Розпрямивши многочлен з ненульовими коефіцієнтами займає багато часу висновок ( х 2 я ) , використовуючи звичайний термін-на-перспективи множення, так що це повинно бути кращим , щоб БПФ для цих поліномів , де х я < xiO(xi2) . Якщоixi=n, то кількість многочленів зxiперевищуєxi<nlognixi=nxi -O(nlogn, і це буде потрібно часO(N 3 / 2 (логп) 1 / 2 )до площі та об'єднати (як буде інші поліноми). Це поліпшення порівняно з очевиднимO(mnlogn),пов'язаним, колиmдорівнюєΘ(O(n/logn)O(n3/2(logn)1/2)O(mnlogn)м.Θ(н/журналн)


1
Мене цікавить метод, який обчислює суму, не обчислюючи кожен термін. Робити FFT або розмножувати термін за кожним продуктом буде занадто повільно для застосування, яке я маю на увазі.
Расмус Паг

2

Не повна відповідь, але може бути корисною.

Caveat: Він добре працює, лише якщо опори невеликі.pi2

Для многочлена , нехай S q = { i a i0 } є його опорою, а s q = | S q | бути розміром опори. Більшість p i буде розрідженою, тобто матиме невелику підтримку.q=a0+a1x++anxnSq={iai0}sq=|Sq|pi

Існують алгоритми множення розріджених многочленів і b у квазілінійний час на величину опори виробу a b , див., Наприклад, http://arxiv.org/abs/0901.4323abab

Підтримка (міститься в) S a + S b , де сума двох множин S і T визначається як S + T : = { s + t s S , t T } . Якщо опори всіх виробів невеликі, скажімо, лінійні в n загалом, то можна просто обчислити продукти і скласти всі мономеї.abSa+SbSTS+T:={s+tsS,tT}n

Однак дуже просто знайти поліноми і b такі, що розмір опори a b є квадратичним за розмірами опори a і b . У цій конкретній програмі ми проводимо квадрати многочленів. Таким чином, питання в тому , наскільки більше S + S по порівнянні з S . Звичайною мірою для цього є подвоєне число | S + S | / | S | . Є набори з необмеженим подвоєним номером. Але якщо ви можете виключити набори з великим подвоєним числом як опори p iabababS+SS|S+S|/|S|pi, тоді ви можете отримати швидкий алгоритм для вашої проблеми.


1
Хоча я не знайомий з адитивною комбінаторикою, я вважаю, що узагальнені арифметичні прогресії та теорема Фреймана-Рузси - це множини з малим подвоєнням.
Цуйосі Іто

@Tsuyoshi: Ти маєш рацію, я відредагую свою відповідь. Тим не менш, є GAP з великою постійною подвоєнням.
5501,

Особисто я не вважаю, що такий підхід є перспективним. (Досить неточним) наслідком теореми Фреймана-Рузси є те, що | S + S | / | S | невеликий лише в окремих випадках, і тому частина "Якщо ви можете виключити набори з більшим подвоєним числом як опори p_i", дуже велика, якщо . Однак, як я вже говорив, я не знайомий з комбінаторною добавкою, і ви повинні сприймати мої слова на ній із зерном солі.
Цуйосі Іто

Звичайно, це працює лише в тому випадку, якщо програма на увазі (яку я не знаю) дає приємні підтримки.
5501

Тоді було б простіше зрозуміти, якщо ви зробите це припущення більш чітким у своїй відповіді. Сучасний спосіб написання припущення у відповіді говорить про те, що ви вважаєте, що припущення про мале подвоєне число не є великою справою.
Tsuyoshi Ito

2

Просто хотів відзначити алгоритм природного наближення. Це, однак, не використовує переваги вкрай.

Ви можете використовувати випадкову послідовність (σi)i[n] , приймаючи X=iσipi(x) ми можемо обчислити X2 в nlogn раз , використовуючи швидке перетворення Фур'є. Тоді EX2=ipi(x)2=S і VX2=O(S). Таким чином, ви можете отриматинаближення1+εу часіO(ε2nlogn).


Гарний підхід! Але вам не потрібно більше повторень, щоб з великою часткою ймовірності виправити всі коефіцієнти?
Расмус Паг

журнал(н/δ)1-δ
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.