Déterminant d'une matrice de Vandermonde généralisée

10

La matrice de Moore est similaire à la matrice de Vandermonde mais a une définition légèrement modifiée. http://en.wikipedia.org/wiki/Moore_matrix

Quelle est la complexité du calcul du déterminant d'une matrice de Moore de rang complet modulo un entier?n×n

Le déterminant de Moore peut-il être réduit de utilisant des techniques FFT à pour certains ?O(n3)O(nlogan)aR+{0}

La complexité de Moore det modulo est-elle un entier et Vandermonde dét la même chose? La complexité du déterminant de Vandermonde est (Page 644 dans le Manuel de l'informatique théorique: algorithmes et complexité par Jan Leeuwen)O(nlog2n)

Poste similaire à l'actuel: Module déterminant m

T ....
la source
Le déterminant de Moore peut-il même être calculé en temps O (n ^ 3) (sur une RAM entière)?
Jeffε
1
@ Jɛ ff E C'est pourquoi j'ai mentionné le module aléatoire . NN
T ....
Soit dit en passant, et je suis juste curieux, existe-t-il des applications connues qui bénéficieraient d'un tel algorithme "ultra-rapide"?
Juan Bermejo Vega
@J ffE, savez-vous si le calcul d'une double exponentiation modulaire sur est dans BPP pour trivial ?. Parce que c'est un problème pour calculer les coefficients de la matrice. N NεNN
Juan Bermejo Vega

Réponses:

4

En général, il existe un algorithme théorique pour trouver la décomposition LU d'une matrice arbitraire en utilisant l' algorithme Coppersmith – Winograd , qui donne alors évidemment le déterminant (en ajoutant le temps ). Il y a cependant un problème que l'algorithme Coppersmith – Winograd n'est pas considéré comme utilisable dans la pratique. Afaik, les gens utilisent principalement l' algorithme Strassen à temps . Est-ce que Boost UBLAS lu_factorize ne l' utilise pas?O ( n ) O ( n 2,807 )O(n2.376)O(n)O(n2.807)

Dans votre cas, la matrice de Moore devrait admettre des optimisations considérables car, fondamentalement, toute procédure d'élimination gaussienne comme la décomposition LU peut être effectuée de manière abstraite. En effet, vous trouverez une belle formule pour calculer le déterminant de Moore référencé par wikipedia , ce que l'on prouve probablement en élaborant simplement la décomposition LU en général.O(n)

Jeff Burdges
la source
Salut Jeff: Quelle référence faites-vous référence pour la formule O (n ^ 2). Je pense que Vandermonde det peut être calculé en O (nlogn) mais je ne trouve pas de référence. Donc, Moore det devrait-il aussi être en O (nlogn)?
T ....
Oui, j'aurais dû dire O (n) évidemment, vraiment O (n log n) pour grand n.
Jeff Burdges
Salut Jeff: Avez-vous une référence?
T ....
7
@JeffBurdges: Si le temps d'exécution est O (n log n) "pour grand n", alors par définition, le temps d'exécution est O (n log n), pas O (n).
Jeffε
Je ne vois pas de formule référencée par Wikipedia. Au mieux, il ressemble à . Θ ( n 2 )O(n)Θ(n2)
Peter Taylor
3

Il est important que, dans la définition que vous fournissez, la matrice vive dans un champ fini, disons où est premier. Cela vous permet d'utiliser le théorème d' Euler pour calculer les doubles exponentielles qui apparaissent dans la matrice au temps . Sinon, il semble même difficile de calculer les coefficients de la matrice sans factoriser . mZmmaqemodmO(log(mn)M(logm))

aqiaqi(modφ(m))(modm)
m

Si est premier ou peut être factorisé efficacement, la complexité la plus défavorable est dominée par le nombre d'étapes dont vous avez besoin pour la multiplication matricielle . Par exemple, l' approche de la forme normale de Smith que j'ai mentionnée dans la publication partenaire calculerait le déterminant dans le temps si vous utilisez "slow" algorithmes de multiplication . peut être choisi pour 2.373.mO(nω)O(nωlog2mlog(mn))ω

Vous obtenez un ralentissement dans Moore vs Vandermonde car vous devez double-exponentier les coefficients de la matrice. Lorsque vous pouvez factoriser ce ralentissement est simplement polylogarithmique sur . Sinon, l' algorithme présenté vous donne une réduction de Cook à Double-Modular-Exponentiation sur .mmZm

Remarque *: des algorithmes plus rapides pour la multiplication d'entiers vous permettent de remplacer par .log2mM(logmloglogm)


Mise à jour : sur la possibilité de réaliser .O(nlogan)

Je n'ai pas de réponse définitive à cela, mais j'ai trouvé des informations qui pourraient resserrer votre recherche.

Les algorithmes pour les matrices structurées qui calculent des quantités comme des déterminants dans le temps sont appelés "ultra-rapides" dans la littérature. Tous les algorithmes "ultra-rapides" connus pour les matrices structurées (Vandermonde, Toeplitz, Hankel) semblent s'appuyer sur une propriété commune de ces matrices connue sous le nom de "rang de déplacement" bas. Conférer la discussion sur le premier chapitre de ce livre (pages en accès libre), ou dans cet article [ACM] , [PDF] .O(nlogan)

D'après ce que j'ai lu, étant donné une matrice Moore , si vous pouviez trouver des matrices , telles que la nouvelle matrice (ou alternativement ) a la structure suivantem×nMABL(M)=AMMBL(M)=MAMB

L(M)=k=1rgkhkT

, et le rang est petit (soit constant soit délimité par ), alors vous pouvez appliquer les techniques existantes (consultez le chapitre 5 du livre, ouvrez- pages d'accès) pour triangulariser et, par conséquent, calculer , en utilisant . Au-dessus, les , désignent des vecteurs. Si vous ne trouvez pas le livre ci-dessus pour lire le tout, cet article contient également de nombreuses informations sur ces méthodes.r>0o(min{m,n})MdetMO(nlog2n)gkhk

Malheureusement, je n'ai pas été en mesure de trouver une structure de rang à faible déplacement pour la matrice de Moore (Vandermonde l'a). La principale complication semble ici venir de la nature "non linéaire" de la double exponentielle. Si cela aide, les cas de Vandermonde, Cauchy, Toeplitz, Hankel sont traités dans le livre.

Juan Bermejo Vega
la source
Je peux faire vivre ma matrice dans un champ de caractère . Cependant, la taille des alphabets pour mon application prévue sera grande. Donc est de la forme pour un assez grand . 3m3kk
T ....
C'est très bien, puisque vous pouvez calculer la fonction totiente de :)3k
Juan Bermejo Vega
eh bien ça ne simplifie pas la complexité, je dirais puisque le champ est très très grand.
T ....
Cela simplifie les problèmes que je mentionne avec la double exponentiation. Puisque , vous pouvez utiliser le théorème d'Euler pour doubler l'exponentiation d' : tout d'abord, calculez , puis . Vous pouvez le faire dans le temps . En utilisant l'algorithme de multiplication des écoles, , et vous obtiendriez un coût "net" final de ce qui est efficace. φ(3k)=3k3k1aqimodmb=qimodφ(3k)abmod3kO(log(n3k)M(klog3))M(n)=n2O(nωk2log23(logn+klog3))
Juan Bermejo Vega
Peut-on remplacer par ? C'est l'économie que je veux savoir (peut être possible à partir de la structure matricielle). Avec , je ne gagne rien à mes fins. ω1+ϵω2
T ....