Berechnungssumme von spärlichen Polynomen im Quadrat in O (n log n) Zeit?


18

Angenommen , wir haben Polynome vom Grad höchstens n , n > m , so dass die Gesamtzahl von Nicht - Null - Koeffizienten n ( das heißt, sind die Polynome sparse). Ich interessiere mich für einen effizienten Algorithmus zur Berechnung des Polynoms:p1,...,pmnn>mn

ipi(x)2

Da dieses Polynom einen Grad von höchstens , ist sowohl die Eingangs- als auch die Ausgangsgröße O ( n ) . Im Fall m = 1 können wir das Ergebnis mit der FFT in der Zeit O ( n log n ) berechnen . Kann dies für jedes m < n durchgeführt werden ? Wenn es einen Unterschied macht, interessiert mich der Sonderfall, bei dem die Koeffizienten 0 und 1 sind und die Berechnung über die ganzen Zahlen erfolgen sollte.2nO(n)m=1O(nlogn)m<n

Aktualisieren. Ich erkannte, dass eine schnelle Lösung für das oben Genannte Fortschritte in der schnellen Matrixmultiplikation implizieren würde. Insbesondere wenn , dann können wir abgelesen eine i k b k j als der Koeffizient von x i + n j in p k ( x )pk(x)=i=1naikxi+j=1nbkjxnjaikbkjxi+nj . Somit Berechnen p k ( x ) 2 entsprichtBerechnen eines äußeren Produkt aus zwei Vektoren, und Berechnen der Summe Σ k p k ( x ) 2 entspricht einem Matrixproduktberechnen. Wenn es eine Lösung unter VerwendungZeit ist , f ( n , m ) zum Berechnen von Σ k p k ( x ) 2 , dann können wir zwei Multiplizier n -by- n Matrizen inZeit f ( n 2 , npk(x)2pk(x)2kpk(x)2f(n,m)kpk(x)2nn , was bedeutet, dass f ( n , m ) = O ( n log n ) für m n einen größeren Durchbruch erfordern würde. Aber f ( n , m ) = n & ohgr; / 2 , wobei & ohgr ; der aktuelle Exponent der Matrixmultiplikation ist, könnte möglich sein. Ideen, irgendjemand?f(n2,n)f(n,m)=O(nlogn)mnf(n,m)=nω/2ω


1
Hallo Rasmus. Ich denke, Sie wollten, dass dies auf der Hauptseite geschieht. Dies ist die Meta-Site für Fragen zur Site.
Suresh Venkat

Antworten:


3

Quadriert ein Polynom mit von Null verschiedenen Koeffizienten braucht Zeit O ( x 2 i ) unter Verwendung üblichen Begriff-by-Begriff Multiplikation, so sollte dies für die Polynome die FFT bevorzugt werden , wo x i < xiO(xi2) . WennΣixi=n,die Anzahl von Polynomen mitxigrößer alsxi<nlognixi=nxi istO(nlogn, und diese werden ZeitO(n 3 / 2 (logn) 1 / 2 )um Platz und verbinden (wie die übrigen Polynome). Dies ist eine Verbesserung gegenüber der offensichtlichenO(mnlogn)gebundenwennmistΘ(O(n/logn)O(n3/2(logn)1/2)O(mnlogn)m.Θ(n/logn)


1
Was mich interessiert, ist eine Methode, die die Summe berechnet, ohne jeden Term zu berechnen. Für die Anwendung, an die ich denke, ist es zu langsam, eine FFT oder eine Multiplikation von Laufzeit zu Laufzeit für jedes Produkt durchzuführen.
Rasmus Pagh

2

Keine vollständige Antwort, aber vielleicht hilfreich.

Vorsichtsmaßnahme: Es funktioniert nur gut, wenn die Stützen des klein sind.pi2

Für ein Polynom sei S q = { i a i0 } seine Unterstützung und s q = | S q | sei die Größe der Unterstützung. Der größte Teil des p i wird spärlich sein, dh eine kleine Unterstützung haben.q=a0+a1x++anxnSq={iai0}sq=|Sq|pi

Es gibt Algorithmen, um spärliche Polynome und b in quasi-linearer Zeit in der Größe der Unterstützung des Produkts a b zu multiplizieren , siehe z. B. http://arxiv.org/abs/0901.4323abab

The support of ab is (contained in) Sa+Sb, where the sum of two sets S and T is defined as S+T:={s+tsS,tT}. If the supports of all products are small, say, linear in n in total, then one can just compute the products and add up all monomials.

It is however very easy to find polynomials a and b such that the size of the support of ab is quadratic in the sizes of the support of a and b. In this particular application, we are squaring polynomials. So the question is how much larger S+S compared to S. The usual measure for this is the doubling number |S+S|/|S|. There are sets with unbounded doubling number. But if you can exclude sets with large doubling number as supports of the pi, then you can get a fast algorithm for your problem.


1
Although I am not familiar with additive combinatorics, I think that generalized arithmetic progressions and the Freiman-Ruzsa theorem are about sets with small doubling.
Tsuyoshi Ito

@Tsuyoshi: You are right, I will edit my answer. Nevertheless, there are GAPs with large doubling constant.
5501

Personally I do not think that this approach is promising. A (pretty inaccurate) implication of the Freiman-Ruzsa theorem is that |S+S|/|S| is small only in special cases, and therefore the part “If you can exclude sets with larger doubling number as supports of the p_i” is a very big if. However, as I said, I am not familiar with additive combinatorics, and you should take my words on it with a grain of salt.
Tsuyoshi Ito

Of course it only works if the application in mind (which I do not know) gives nice supports.
5501

Then it would be easier to understand if you make that assumption more explicit in your answer. The current way of writing the assumption in the answer suggests that you consider that the assumption of small doubling number is not a big deal.
Tsuyoshi Ito

2

Just wanted to note the natural approximation algorithm. This doesn't take advantage of sparsity though.

You could use a random sequence (σi)i[n] Taking X=iσipi(x) we can compute X2 in nlogn time using FFT. Then EX2=ipi(x)2=S and VX2=O(S). So you can get a 1+ε approximation in time O(ε2nlogn).


Nice approach! But don't you need more repetitions to get all coefficients right with high probability?
Rasmus Pagh

@RasmusPagh Right, you'll probably get a log(n/δ) term if you want all coefficients to be preserved with probability 1δ.
Thomas Ahle
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.