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(logm)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 )n

O(D(n)+nlogn)
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=P1DPD

An=(P1DP)n=P1DnP

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Σ 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(nlogm) 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+nlogm)

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+nlogm)o(M(n)log(m))o(logn) 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ΣUVU
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)logmAm
PKG

2
logm

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.