Obliczanie sumy rzadkich wielomianów podniesionych do kwadratu w czasie O (n log n)?


18

Załóżmy, że mamy wielomiany stopnia co najwyżej , , tak że całkowita liczba niezerowych współczynników wynosi (tzn. Wielomiany są rzadkie). Interesuje mnie wydajny algorytm obliczania wielomianu:p1,...,pmn > m nnn>mn

∑ipi(x)2

Ponieważ ten wielomian ma stopień co najwyżej 2n , zarówno wielkość wejściowa, jak i wyjściowa wynosi O(n) . W przypadku m=1 możemy obliczyć wynik za pomocą FFT w czasie O(nlog⁡n) . Czy można to zrobić dla dowolnego m<n ? Jeśli robi to jakąkolwiek różnicę, interesuje mnie szczególny przypadek, w którym współczynniki wynoszą 0 i 1, a obliczenia powinny być wykonywane na liczbach całkowitych.

Aktualizacja. Uświadomiłem sobie, że szybkie rozwiązanie powyższego oznaczałoby postęp w szybkim mnożeniu macierzy. W szczególności, jeśli pk(x)=∑i=1naikxi+∑j=1nbkjxnj to możemy odczytać aikbkj jako współczynnik xi+nj w pk(x)2 . Zatem obliczenie pk(x)2 odpowiada obliczeniu iloczynu zewnętrznego dwóch wektorów, a obliczenie sumy ∑kpk(x)2 odpowiada obliczeniu iloczynu macierzowego. Jeśli istnieje rozwiązanie wykorzystujące czas f(n,m) do obliczenia ∑kpk(x)2 wówczas możemy pomnożyć dwie n -przez n macierzy w czasie f(n2,n), co oznacza, że f(n,m)=O(nlog⁡n) dla m≤n wymagałoby poważnego przełomu. Ale f(n,m)=nω/2 , gdzie ω jest bieżącym wykładnikiem mnożenia macierzy, może być możliwe. Pomysły, ktoś?


1
Cześć Rasmus. Myślę, że zamierzałeś to zrobić na głównej stronie. To jest strona z meta, zawierająca pytania na temat strony.
— Suresh Venkat

Odpowiedzi:


3

Wyrównywanie wielomianu z niezerowymi współczynnikami zajmuje czas przy użyciu zwykłego zwielokrotnienia semestralnego, więc powinno być to lepsze niż FFT dla tych wielomianów, w których . Jeśli , to liczba wielomianów o większej niż wynosi , a to zajmie czas do kwadratu i łączenia (podobnie jak pozostałe wielomiany). Jest to poprawa w stosunku do oczywistego ograniczenia gdy to . O ( x 2 i ) x i < √xiO(xi2) ∑ixi=nxi √xi<nlog⁡n∑ixi=nxi O( √nlog⁡nO(n 3 / 2 (logn) 1 / 2 )O(mnlogn)mΘ( √O(n/log⁡n)O(n3/2(log⁡n)1/2)O(mnlog⁡n)mΘ(n/log⁡n)


1
Interesuje mnie metoda, która oblicza sumę bez obliczania każdego terminu. Wykonanie mnożenia FFT lub pomnażania terminów dla każdego produktu będzie zbyt wolne dla aplikacji, o której myślę.
— Rasmus Pagh

2

Nie pełna odpowiedź, ale może pomocna.

Uwaga: Działa dobrze tylko wtedy, gdy podpory są małe.pi2

W przypadku wielomianu , niech będzie jego wsparciem, abyć wielkością wsparcia. Większość będzie rzadka, tj. Będzie miała niewielkie wsparcie.S q = { i ∣ a i ≠ 0 } s q = | S q | p iq=a0+a1x+⋯+anxnSq={i∣ai≠0}sq=|Sq|pi

Są algorytmy do namnażania się rzadki wielomiany i quasi liniowe w czasie rozmiaru nośnika produktu , patrz np http://arxiv.org/abs/0901.4323b a babab

Obsługa jest (zawarta w) , gdzie suma dwóch zbiorów i jest zdefiniowana jako . Jeśli podpory wszystkich produktów są małe, powiedzmy, liniowe w sumie , wówczas można po prostu obliczyć produkty i zsumować wszystkie jednomianowe.S a + S b S T S + T : = { s + t ∣ s ∈ S , t ∈ T } nabSa+SbSTS+T:={s+t∣s∈S,t∈T}n

Jednak bardzo łatwo jest znaleźć wielomian i tak że rozmiar podparcia jest kwadratowy w rozmiarach podparcia i . W tej konkretnej aplikacji zajmujemy kwadrat wielomianów. Więc pytanie brzmi, jak dużo większe w porównaniu do . Zwykle stosowaną miarą jest liczba podwajająca. Istnieją zestawy z nieograniczoną liczbą podwajania. Ale jeśli możesz wykluczyć zestawy z dużą liczbą podwajającą jako wsparcie dla , możesz uzyskać szybki algorytm dla swojego problemu. abababS+SS|S+S|/|S|pi


1
Chociaż nie jestem zaznajomiony z kombinatoryką addytywną, myślę, że uogólnione postępy arytmetyczne i twierdzenie Freimana-Ruzsy dotyczą zbiorów z małym podwojeniem.
— Tsuyoshi Ito

@Tsuyoshi: Masz rację, zmienię moją odpowiedź. Niemniej jednak istnieją luki o dużej stałej podwojenia.
— 5501

Osobiście nie sądzę, aby takie podejście było obiecujące. (Dość niedokładna) implikacja twierdzenia Freimana-Ruzsa jest taka, że ​​| S + S | / | S | jest mały tylko w szczególnych przypadkach, a zatem część „Jeśli możesz wykluczyć zestawy o większej liczbie podwajającej jako podparcie p_i” jest bardzo duża jeśli . Jednak, jak powiedziałem, nie jestem zaznajomiony z kombinatoryką addytywną i powinieneś wziąć na mnie moje słowa z dodatkiem soli.
— Tsuyoshi Ito

Oczywiście działa to tylko wtedy, gdy aplikacja (o której nie wiem) daje dobre wsparcie.
— 5501

Łatwiej byłoby to zrozumieć, jeśli w odpowiedzi udzielisz tego założenia. Obecny sposób pisania założenia w odpowiedzi sugeruje, że uważasz, że założenie małej liczby podwójnej nie jest wielkim problemem.
— Tsuyoshi Ito

2

Chciałem tylko zwrócić uwagę na algorytm naturalnego przybliżenia. Nie wykorzystuje to jednak rzadkości.

Możesz użyć losowej sekwencji (σi)i∈[n] Biorąc X=∑iσipi(x) możemy obliczyć X2 w nlog⁡n czasie za pomocą FFT. Następnie EX2=∑ipi(x)2=S i VX2=O(S). Możesz więc uzyskaćprzybliżenie1+εw czasieO(ε−2nlog⁡n).


Niezłe podejście! Ale czy nie potrzebujesz więcej powtórzeń, aby uzyskać wszystkie współczynniki z dużym prawdopodobieństwem?
— Rasmus Pagh

@RasmusPagh Racja. Prawdopodobnie otrzymasz warunek jeśli chcesz zachować wszystkie współczynniki z prawdopodobieństwem 1 - δ . log⁡(n/δ)1−δ
— Thomas Ahle,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.