Calcul de la somme des polynômes épars au carré en temps O (n log n)?


18

Supposons que nous ayons polynômes p1,...,pm de degré au plus , , de sorte que le nombre total de coefficients non nuls est (c'est-à-dire que les polynômes sont rares). Je suis intéressé par un algorithme efficace pour calculer le polynôme:nn>mn

ipi(x)2

Puisque ce polynôme a un degré au plus , la taille d'entrée et de sortie est . Dans le cas nous pouvons calculer le résultat en utilisant FFT dans le temps . Cela peut-il être fait pour tout ? Si cela fait une différence, je suis intéressé par le cas spécial où les coefficients sont 0 et 1, et le calcul doit être effectué sur les entiers.O ( n ) m = 1 O ( n log n ) m < n2nO(n)m=1O(nlogn)m<n

Mise à jour. J'ai réalisé qu'une solution rapide pour ce qui précède impliquerait des progrès dans la multiplication matricielle rapide. En particulier, si alors nous pouvons lire comme coefficient de dans . Ainsi, le calcul de correspond au calcul d'un produit externe de deux vecteurs, et le calcul de la somme correspond au calcul d'un produit matriciel. S'il existe une solution utilisant le temps pour calculer alors nous pouvons multiplier deux matrices par- dans le temps 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)2k p k ( x ) 2 n n f ( n 2 , n )f(n,m)kpk(x)2nnf(n2,n), ce qui signifie que pour nécessiterait une percée majeure. Mais , où est l'exposant actuel de la multiplication matricielle, pourrait être possible. Des idées, n'importe qui?m n f ( n , m ) = n ω / 2 ωf(n,m)=O(nlogn)mnf(n,m)=nω/2ω


1
Salut Rasmus. Je pense que vous aviez l'intention que cela aille sur le site principal. Ceci est le méta site, pour les questions sur le site.
Suresh Venkat

Réponses:


3

La quadrature d'un polynôme avec des coefficients non nuls prend du temps utilisant la multiplication ordinaire terme par terme, donc cela devrait être préféré à la FFT pour les polynômes où . Si O ( x 2 i ) x i < xiO(xi2)xi<nlogn , alors le nombre de polynômes avec x i supérieur àixi=nxi estO(nlogn, et ceuxci prennenttempsO(n trois / 2 (logn) 1 / 2 )àcase et combiner (même que les polynômes restants). Il s'agit d'une amélioration par rapport à laborneO(mnlogn)évidentelorsquemestΘ(O(n/logn)O(n3/2(logn)1/2)O(mnlogn)m.Θ(n/logn)


1
Ce qui m'intéresse, c'est une méthode qui calcule la somme sans calculer chaque terme. Faire la FFT ou la multiplication terme par terme pour chaque produit sera trop lent pour l'application que j'ai en tête.
Rasmus Pagh

2

Pas une réponse complète mais peut-être utile.

Attention: cela ne fonctionne bien que si les supports du sont petits.pi2

Pour un polynôme , soit S q = { i a i0 } son support et s q = | S q | être la taille du support. La plupart des p i seront clairsemés, c'est-à-dire auront un petit support.q=a0+a1x++anxnSq={jeuneje0}sq=|Sq|pje

Il existe des algorithmes pour multiplier les polynômes clairsemés et b en temps quasi-linéaire dans la taille du support du produit a b , voir par exemple http://arxiv.org/abs/0901.4323unebuneb

Le support de est (contenu dans) S a + S b , où la somme de deux ensembles S et T est définie comme S + T : = { s + t s S , t T } . Si les supports de tous les produits sont petits, disons linéaires en n au total, alors on peut simplement calculer les produits et additionner tous les monômes.unebSune+SbSTS+T:={s+tsS,tT}n

Il est cependant très facile de trouver des polynômes et b tels que la taille du support de a b soit quadratique dans les tailles de support de a et b . Dans cette application particulière, nous mettons au carré des polynômes. La question est de savoir combien plus S + S par rapport à S . La mesure habituelle est le doublement du nombre | S + S | / | S | . Il existe des ensembles avec un nombre de doublage illimité. Mais si vous pouvez exclure des ensembles avec un grand nombre doublant comme supports du p iabababS+SS|S+S|/|S|pi, vous pouvez alors obtenir un algorithme rapide pour votre problème.


1
Bien que je ne sois pas familier avec la combinatoire additive, je pense que les progressions arithmétiques généralisées et le théorème de Freiman-Ruzsa concernent des ensembles avec un petit doublement.
Tsuyoshi Ito le

@Tsuyoshi: Vous avez raison, je vais modifier ma réponse. Néanmoins, il existe des BPA avec une grande constante de doublement.
5501

Personnellement, je ne pense pas que cette approche soit prometteuse. Une implication (assez imprécise) du théorème de Freiman-Ruzsa est que | S + S | / | S | n'est petit que dans des cas particuliers, et donc la partie «Si vous pouvez exclure des ensembles avec un nombre doublant plus grand comme supports du p_i» est un très grand if . Cependant, comme je l'ai dit, je ne suis pas familier avec la combinatoire additive, et vous devriez prendre mes mots dessus avec un grain de sel.
Tsuyoshi Ito le

Bien sûr, cela ne fonctionne que si l'application à l'esprit (que je ne connais pas) donne de bons supports.
5501

Il serait alors plus facile de comprendre si vous expliquez cette hypothèse de manière plus explicite dans votre réponse. La manière actuelle d'écrire l'hypothèse dans la réponse suggère que vous considérez que l'hypothèse d'un petit nombre doublant n'est pas un gros problème.
Tsuyoshi Ito le

2

Je voulais juste noter l'algorithme d'approximation naturelle. Cela ne profite cependant pas de la rareté.

Vous pouvez utiliser une séquence aléatoire (σi)i[n] En prenant X=iσipi(x) nous pouvons calculer X2 en nlogn temps en utilisant FFT. Alors EX2=ipi(x)2=S et VX2=O(S). Vous pouvez donc obtenir uneapproximation1+εdans le tempsO(ε2nlogn).


Belle approche! Mais n'avez-vous pas besoin de plus de répétitions pour obtenir tous les coefficients corrects avec une forte probabilité?
Rasmus Pagh

@RasmusPagh À droite, vous obtiendrez probablement un terme si vous voulez que tous les coefficients soient conservés avec la probabilité 1 - δ . log(n/δ)1δ
Thomas Ahle
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.