Complexité des puissances de la matrice de calcul


14

Je suis intéressé par le calcul de la n ième puissance d'un la matrice . Supposons que nous ayons un algorithme de multiplication matricielle qui s'exécute en temps . Ensuite, on peut facilement calculer en temps. Est-il possible de résoudre ce problème en moins de temps?n×nAO(M(n))AnO(M(n)log⁡(n))

Les entrées de matrice peuvent, en général, provenir d'un semiring mais vous pouvez assumer une structure supplémentaire si cela vous aide.

Remarque: Je comprends qu'en calculant en temps donnerait un algorithme pour l'exponentiation. Mais, un certain nombre de problèmes intéressants se réduisent au cas particulier de l'exponentiation matricielle où m = , et je n'ai pas pu prouver la même chose à propos de ce problème plus simple.Amo(M(n)log⁡(m))o(log⁡m)O(n)


quelles sont les entrées de la matrice? Entiers?
— Kaveh

1
Les entrées peuvent, en général, provenir d'un semiring mais vous pouvez assumer une structure supplémentaire si cela vous aide.
— Shitikanth

Je n'ai pas pu obtenir une réduction de la multiplication à la quadrature de la méthode proposée ci-dessus (c'est-à-dire en utilisant ). Cependant, utiliser fonctionne. Cependant, cela ne donne qu'un sur le calcul de . (A±B)2(0AB0)2Ω(M(n))An
— Shitikanth

Réponses:


11

Si la matrice est diagonalisable, la prise de la ème puissance peut se faire dans le temps O ( D ( n ) + n log n ) oùn

O(D(n)+nlog⁡n)
est le temps de diagonaliser A .D(n)A

Pour compléter les détails, si avec une diagonale D , alors A n = ( P - 1 D P ) n =A=P−1DPD

An=(P−1DP)n=P−1DnP

et peut être calculé en prenant simplement chaque élément de la diagonale (chaque valeur propre deDn ) à la n e puissance.An


6
Même si la matrice est diagonalisable, les algorithmes les plus connus pour la composition par eigend prennent du temps . En utilisant l'algorithme Coppersmith-Winograd, nous avons déjà un algorithme O ( n 2.3727 log ( m ) ) pour calculer A m . O(n3)O(n2.3727log⁡(m))Am
— Shitikanth

1
(1) Le temps que vous citez n'est pas celui de Coppersmith-Winograd (comme vous le savez probablement). (2) Tous les algorithmes de cette forme ne fonctionnent que pour les anneaux; ils ne fonctionnent pas pour les semirings généraux (comme vous le permettez dans votre question).
— Ryan Williams

5

Une bonne solution est la SVD de décomposition en valeurs singulières . Étant donné une matrice réelle A de rang complet , SVD la sépare en A = U Σ U T où Σ est une matrice diagonale, dans le temps O ( n 3 ) . Par les propriétés de SVD, A m = U Σ m U T , donc seule la matrice diagonale doit être exponentiée, et cela peut être fait en O ( n log m )n×nAA=UΣUTΣO(n3)Am=UΣmUTO(nlog⁡m) temps de . Réalisation de la multiplication finale prend O ( n 2,3727 ) , donc nous avons tout à fait O ( n 3 + n logU×Σm×UTO(n2.3727) opérations. O(n3+nlog⁡m)

Mise à jour après commentaire Le fait est qu'une fois le SVD trouvé, toute puissance ne prend que pour calculer par votre propre algorithme CW. Mais ce n'est pas votre question: s'il y avait vraiment un algorithme o ( M ( n ) log ( m ) ) , il se convertirait immédiatement en o ( log n )O(n2.3727+nlog⁡m)o(M(n)log⁡(m))o(log⁡n) algorithme pour les entiers. Je soupçonne qu'un tel n'existe pas.


Puisque l'algorithme de Coppersmith – Winograd trouve le produit de deux matrices en temps , nous avons déjà un algorithme O ( n 2.3727 log ( m ) ) pour calculer A m . Je suis intéressé à savoir si cela peut être amélioré sans nécessiter un meilleur algorithme de multiplication matricielle, en particulier pour m = O ( n ) . O(n2.3727)O(n2.3727log⁡(m))Amm=O(n)
— Shitikanth

1
la SVD ne donne pas en général - la matrice de droite est V ≠ U ⊤A=UΣU⊤V≠U⊤
— Suresh

1
C'est un peu trompeur d'avoir pour la puissance aussi, donc je vais utiliser m . Si n = 1, il faut O ( M ( 1 ) log m temps pour trouver A m , ce qui équivaut à multiplier des entiersnmn=1O(M(1)log⁡mAm
— PKG

2
log⁡m

1
Cela n'était pas clair à partir de votre question, comme indiqué.
— PKG
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.