Ma question est simple:
Quel est le temps d'exécution le plus défavorable du meilleur algorithme connu pour calculer une composition simple d'une matrice ?
Eigendecomposition réduit-il à la multiplication matricielle ou les algorithmes les plus connus (via SVD ) sont-ils dans le pire des cas?
Veuillez noter que je demande une analyse du cas le plus défavorable (uniquement en termes de ), et non des limites avec des constantes dépendantes du problème, telles que le numéro de condition.
EDIT : Compte tenu de certaines des réponses ci-dessous, laissez-moi ajuster la question: Je serais heureux avec une approximation de . L’approximation peut être multiplicative, additive, d’entrée, ou toute définition raisonnable que vous voudriez. Je suis intéressé s’il existe un algorithme connu qui dépend mieux de que de quelque chose comme ?n O ( p o l y ( 1 / ε ) n 3 )
EDIT 2 : Voir cette question connexe sur les matrices symétriques .
Réponses:
Ryan a répondu à une question similaire sur mathoverflow. Voici le lien: mathoverflow-answer
Fondamentalement, vous pouvez réduire le calcul des valeurs propres à la multiplication matricielle en calculant un déterminant symbolique. Cela donne un temps d'exécution de O ( ) pour obtenir bits des valeurs propres; le meilleur temps d'exécution actuellement connu est O ( ) pour une approximation à l'intérieur de .m n 3 + n 2 log 2 n log b 2 - bnω + 1m m n3+ n2bûche2n journalb 2- b
Ryan parle de «Victor Y. Pan, Zhao Q. Chen: La complexité du problème propre à la matrice. STOC 1999: 507-516 ".
(Je crois qu'il y a également une discussion sur la relation entre la complexité des valeurs propres et la multiplication de matrices dans les anciens livres de Aho, Hopcroft et Ullman, "La conception et l'analyse d'algorithmes informatiques", cependant, je n'ai pas le livre dans devant moi, et je ne peux pas vous donner le numéro de page exact.)
la source
La recherche de valeurs propres est par nature un processus itératif: la recherche de valeurs propres équivaut à la recherche des racines d'un polynôme. De plus, le théorème d'Abel – Ruffini stipule qu'en général, vous ne pouvez pas exprimer les racines d'un polynôme arbitraire sous une forme fermée simple (c'est-à-dire avec des radicaux comme la formule quadratique). Ainsi, vous ne pouvez pas espérer calculer les valeurs propres "exactement".
Cela signifie qu'un algorithme de décomposition spectrale doit être approximatif. La durée d'exécution de tout algorithme général doit dépendre de la précision souhaitée. cela ne peut pas dépendre de la dimension.
Je ne suis pas un expert en la matière. Je suppose qu'une dépendance cubique sur n est très bonne. Les algorithmes que j'ai vus utilisent tous la multiplication matrice-vecteur, plutôt que la multiplication matrice-matrice. Je serais donc un peu surpris si tout se résume à la multiplication matrice-matrice.
Consultez http://en.wikipedia.org/wiki/List_of_numerical_analysis_topics#Eigenvalue_algorithms
la source
Je ne donnerai qu'une réponse partielle concernant les valeurs propres d'une matrice.
Comme mentionné précédemment, il existe de nombreuses méthodes itératives pour trouver les valeurs propres d'une matrice (par exemple, une itération de puissance), mais en général, la recherche des valeurs propres se réduit à la recherche des racines du polynôme caractéristique. Trouver le polynôme caractéristique peut être fait en , où est le coût de bit multiplications et est la taille de bits de l'entrée maximale, par calcul de déterminant symbolique utilisant l'algorithme de Bareiss . Voir le livre de Yap sur les "Principes de base de l'algèbre algorithmique" , en particulier le Chap. 10, "Systèmes linéaires" .M B ( s ) s LO ( n3MB[ n ( l o gn + L ) ] ) MB( s ) s L
Une fois que le polynôme caractéristique est trouvé, on peut trouver les racines avec n'importe quel degré de précision souhaité en utilisant des intervalles d'isolation. Voir le livre de Yap, Chap. 6 "Racines de Polynômes" pour plus de détails. J'oublie le temps d'exécution exact mais son polynôme dans le degré du polynôme caractéristique et les chiffres de précision souhaités.
Je soupçonne que le calcul des vecteurs propres, quel que soit le degré de précision, est également polynomial, mais je ne vois pas d'algorithme simple. Il y a bien sûr le paquet d'astuces standard qui a été mentionné précédemment, mais pour autant que je sache, aucune d'elles ne garantit un temps d'exécution polynomial pour la précision désirée.
la source
Vous pouvez consulter le nouveau document de Commandur et Kale qui donne un algorithme combinatoire pour Max-Cut. Il semble (à partir d'une lecture rapide) que leur algorithme soit basé sur la recherche combinatoire du vecteur propre correspondant à la valeur propre maximale, puis sur l'utilisation de l'algorithme de Luca Trevisan une fois qu'ils ont ce vecteur propre.
Il semble qu'ils utilisent une approche alternative à l'algorithme de Lanczos pour trouver un tel vecteur propre, donc cela pourrait être intéressant. Je ne sais pas quelle est la complexité alléguée de leur méthode de recherche du vecteur propre, mais cela vaut peut-être la peine. De plus, comme il s’agit d’un rapport d’approximation et non de temps en soi qui les intéresse, les délais qu’ils donnent ne sont pas nécessairement optimaux.
la source
C'est une vieille question, mais certains ouvrages importants semblent avoir été oubliés.
Oui, il y a le papier Pan + Chen + Zheng qui suggère d'assembler le polynôme caractéristique et de calculer dans BigFloat parce que vous perdez beaucoup de précision à la fin, mais peu de gens considéreraient cela comme une approche pratique.
Je mentionne également que l'algorithme le plus largement utilisé, l'itération Francis QR, n'a aucune preuve de convergence pour les matrices générales; Le livre de Kressner traite de plusieurs contre-exemples.
la source
Oui, presque toute l’algèbre linéaire numérique peut être réduite à la multiplication matricielle, bien que, comme toujours, la stabilité numérique soit un problème. De plus, avec des problèmes tels que eigendecomposition, vous devriez vous contenter d'une approximation car la solution peut être irrationnelle. Consultez le livre Calculs polynomiaux et matricaux de Bini et Pan.
Voici une autre référence - L'algèbre linéaire rapide est stable http://www.netlib.org/lapack/lawnspdf/lawn186.pdf
la source