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(nlogn) . 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(nlogn) dla mn 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=nxixi<nlognixi=nxi O(nlognO(n 3 / 2 (logn) 1 / 2 )O(mnlogn)mΘ(O(n/logn)O(n3/2(logn)1/2)O(mnlogn)mΘ(n/logn)


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 i0 } s q = | S q | p iq=a0+a1x++anxnSq={iai0}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+tsS,tT}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 nlogn czasie za pomocą FFT. Następnie EX2=ipi(x)2=S i VX2=O(S). Możesz więc uzyskaćprzybliżenie1+εw czasieO(ε2nlogn).


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.