Complejidad de encontrar la descomposición propia de una matriz


40

Mi pregunta es simple:

¿Cuál es el peor tiempo de ejecución del algoritmo más conocido para calcular una descomposición propia de una matriz norte×norte ?

¿La descomposición propia se reduce a la multiplicación matricial o son los algoritmos más conocidos O(norte3) (a través de SVD ) en el peor de los casos?

Tenga en cuenta que solicito un análisis del peor de los casos (solo en términos de norte ), no límites con constantes dependientes del problema, como el número de condición.

EDITAR : Dadas algunas de las respuestas a continuación, permítanme ajustar la pregunta: estaría contento con una aproximación ϵ . La aproximación puede ser multiplicativa, aditiva, de entrada o cualquier definición razonable que desee. ¿Estoy interesado si hay un algoritmo conocido que tenga una mejor dependencia de norte que algo como O(pagsoly(1/ /ϵ)norte3) ?

EDIT 2 : Vea esta pregunta relacionada sobre matrices simétricas .


¿Has mirado la reducción de la inversión de matriz a la multiplicación de matriz en el libro de texto de algoritmos CLRS? Comenzaría mirando esas ideas para ver si se extienden a la descomposición propia.
Warren Schudy el

Sí, parecen extenderse a la búsqueda de una descomposición LU, pero no sé cómo hacer que funcione para una descomposición propia.
Lev Reyzin

¿Sabes si es el algoritmo más conocido para calcular la SVD? O(norte3)
Robin Kothari

1
O(min(mn2,m2n))n×norte

Bien. Tampoco sé mucho sobre esta área, pero tal vez el cálculo de SVD pueda reducirse a una descomposición propia, ya que si puede descomponer AA * y A * A, obtendrá las matrices derecha e izquierda para la SVD.
Robin Kothari

Respuestas:


18

Ryan respondió una pregunta similar sobre mathoverflow. Aquí está el enlace: mathoverflow-answer

Básicamente, puede reducir el cálculo del valor propio a la multiplicación de matrices calculando un determinante simbólico. Esto proporciona un tiempo de ejecución de O ( ) para obtener bits de los valores propios; el tiempo de ejecución más conocido actualmente es O ( ) para una aproximación dentro de .norteω+1metrometronorte3+norte2Iniciar sesión2norteIniciar sesiónsi2-si

La referencia de Ryan es `` Victor Y. Pan, Zhao Q. Chen: The Complexity of the Matrix Eigenproblem. STOC 1999: 507-516 ''.

(Creo que también hay una discusión sobre la relación entre las complejidades de los valores propios y la multiplicación de matrices en el antiguo libro de Aho, Hopcroft y Ullman `` The Design and Analysis of Computer Algorithms '', sin embargo, no tengo el libro en delante de mí, y no puedo darte el número de página exacto).


13

Encontrar valores propios es inherentemente un proceso iterativo: Encontrar valores propios es equivalente a encontrar las raíces de un polinomio. Además, el teorema de Abel-Ruffini establece que, en general, no se pueden expresar las raíces de un polinomio arbitrario en una forma cerrada simple (es decir, con radicales como la fórmula cuadrática). Por lo tanto, no puede esperar calcular valores propios "exactamente".

Esto significa que un algoritmo de descomposición espectral debe ser aproximado. El tiempo de ejecución de cualquier algoritmo general debe depender de la precisión deseada; no puede depender solo de la dimensión.

No soy un experto en esto. Supongo que una dependencia cúbica de n es bastante buena. Todos los algoritmos que he visto usan la multiplicación matriz-vector, en lugar de la multiplicación matriz-matriz. Así que me sorprendería un poco si todo se reduce a la multiplicación matriz-matriz.

Echa un vistazo a http://en.wikipedia.org/wiki/List_of_numerical_analysis_topics#Eigenvalue_algorithms


Gracias por su respuesta. ¡Necesitaré algo de tiempo para digerirlo! Pero si uno usa la multiplicación matriz-vector, la dependencia de n quizás sea mejor que n ^ 3.
Lev Reyzin

6

Solo daré una respuesta parcial relacionada con los valores propios de una matriz.

O(norte3METROsi[norte(losolnorte+L)])METROsi(s)sL. Ver el libro de Yap sobre "Fundamentos del álgebra algorítmica" , específicamente, Cap. 10, "Sistemas lineales" .

Una vez que se encuentra el polinomio característico, se pueden encontrar las raíces con cualquier grado de precisión deseado utilizando intervalos de aislamiento. Ver el libro de Yap, cap. 6 "Raíces de polinomios" para más detalles. Olvidé el tiempo de ejecución exacto pero su polinomio en el grado del polinomio característico y los dígitos de precisión deseados.

Sospecho que calcular los vectores propios hasta cualquier grado de precisión también es polinomial, pero no veo un algoritmo directo. Existe, por supuesto, la bolsa estándar de trucos que se han mencionado anteriormente, pero hasta donde yo sé, ninguno de ellos garantiza el tiempo de ejecución polinomial para una precisión deseada.


interesante, pero esto parece incluso peor que n ^ 3. ¿Sabemos que es lo mejor posible?
Lev Reyzin

Los tiempos de ejecución en algoritmos de esta naturaleza están vinculados a la complejidad de la Multiplicación matricial, que se trata de O (n ^ 3). Sé sobre el algoritmo de Strassen, pero si no ignoras los problemas de estabilidad numérica, entonces creo que obtienes O (n ^ 3) para la multiplicación de matrices. Los métodos iterativos pueden converger más rápido en el caso "promedio", pero creo que, en general, sobre O (n ^ 3) es lo mejor que puede hacer.
user834

Entonces, ¿estás diciendo que si no me importan los problemas de estabilidad numérica, podemos reducirlo a O (n ^ 2.376)?
Lev Reyzin

5

Puede consultar el nuevo documento de Commandur y Kale que ofrece un algoritmo combinatorio para Max-Cut. Parece (a partir de una lectura superficial) que su algoritmo se basa en encontrar combinatoriamente el vector propio correspondiente al valor propio máximo, y luego usar el algoritmo de Luca Trevisan una vez que tienen este vector propio.

Parece que están utilizando un enfoque alternativo al algoritmo de Lanczos para encontrar dicho vector propio, por lo que podría ser de interés. No estoy seguro de cuál es la supuesta complejidad de su método para encontrar el vector propio, pero podría valer la pena investigarlo. Además, dado que es la relación de aproximación y no el tiempo en sí lo que les interesa, los límites de tiempo que ofrezcan podrían no ser óptimos.


1

Esta es una vieja pregunta, pero parece haberse perdido alguna literatura importante.

(Oω+η)ωη>0 0

Sí, existe el documento Pan + Chen + Zheng que sugiere ensamblar el polinomio característico y calcular en BigFloat porque al final se pierden muchos bits de precisión, pero no mucha gente consideraría que este es un enfoque práctico.

También menciono que el algoritmo más utilizado, la iteración Francis QR, no tiene prueba de convergencia para las matrices generales; El libro de Kressner analiza varios contraejemplos.


0

Sí, casi todo el álgebra lineal numérica se puede reducir a la multiplicación de matrices, aunque, como siempre, la estabilidad numérica es un problema. Además, con problemas como la descomposición propia, debe contentarse con una aproximación porque la solución puede ser irracional. Echa un vistazo al libro Polynomial and Matrix Computations de Bini and Pan.

Aquí hay otra referencia: el álgebra lineal rápida es estable http://www.netlib.org/lapack/lawnspdf/lawn186.pdf


3
Gracias por el puntero, pero haciendo una búsqueda a través del libro en google books, no pude encontrar la reducción a la multiplicación de matrices. ¿Tiene un puntero a alguna referencia o algoritmo concreto? Y sus algoritmos SVD parecen depender del número de condición de la matriz, que no es un análisis del peor de los casos. Con respecto a los problemas de estabilidad numérica, etc., supongamos el caso idealizado, donde todas las multiplicaciones y divisiones toman tiempo unitario y producen respuestas exactas.
Lev Reyzin
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.