Algoritmo eigenvalue divide y vencerás
Los algoritmos Divide y Vencerás eigenvalue son una clase de algoritmos eigenvalue para hermitanos o matrices reales simétricas que recientemente (cerca de 1990) se han hecho competitivos en plazo de estabilidad y eficiencia con los algoritmos más tradicionales como algoritmos QR. El concepto básico detrás de estos algoritmos es divide y vencerás llevado a las ciencias informáticas.Un problema eigenvalue se divide en dos problemas de aproximadamente la mitad del problema general; cada uno de estos problemas es resuelto recursivamente y los eigenvalue del problema original son computados a partir de los resultados de los problemas más pequeños.
Aquí presentamos la versión más sencilla de un algoritmo de dividir y vencerás, similar al originalmente propuesto por Cuppen en 1981. Muchos detalles que quedan fuera del alcance de este artículo serán omitidos; aun así, sin considerar estos detalles, el algoritmo no es plenamente estable.
Ideas principales
[editar]Como la mayoría de los algoritmos eigenvalue para matrices Hermitianas, divide y vencerás empieza con una reducción a una forma tridiagonal. Para una matriz de , el método estándar para este, se hace por vía de la Transformación de Householder; toma o si los eigenvectors fueran necesitados. Hay otros algoritmos, como la iteración de Arnoldi, los cuales pueden funcionar mejor para otros tipos de matrices; nosotros no profundizaremos más en estos. En ciertos casos, es posible reducir un problema eigenvalue en problemas más pequeños. Consideremos un bloque de matriz diagonal.
Los eigenvalues y eigenvectors de son sencillamente aquellos y , y casi siempre es más rápido solucionar estos dos problemas más pequeños que solucionar todo el problema original inmediatamente. Esta técnica puede ser usada para mejorar la eficiencia de muchos algoritmos eigenvalue, pero tiene una especial importancia para dividir y vencerás. Para el resto de este artículo, asumiremos que la entrada al algoritmo de divide y vencerás es una matriz real simétrica tridimensional de . Además de que el algoritmo puede ser modificado para matrices Hermitianas, aquí no daremos los detalles.
Divide
[editar]La parte de dividir de divide y vencerás proviene de la realización de una tridiagonalización a la matriz, es “casi” un bloque diagonal.
El tamaño de la submatrix la llamaremos y entonces es , notemos que el comentario sobre puede modificar el bloque diagonal dependiendo de la elección del . Hay muchas maneras de descomponer la matriz. de todas formas, un sensato punto de vista es escoger el ,
Nosotros escribimos como una matriz de bloque diagonal más una corrección Rank-1
La única diferencia entre y es que el cuadrante inferior derecho en ha sido reemplazado con y similarmente en , el cuadrante superior izquierdo ha sido reemplazado con .
El resto de los pasos de la división es para resolver el eigenvalue (y si lo desea eigenvectores) de y esto es para hallar la diagonalización y y puede ser complementado con llamadas recursivas al algoritmo divide y vencerás, también implementaciones prácticas a menudo cambian al algoritmo QR para submatrices suficientemente pequeñas.
Conquista
[editar]La parte de conquista del algoritmo es la parte intuitiva. Dadas las diagonalizaciones de las submatrices, sobre lo calculado.
¿Cómo encontramos la diagonalizacion de la matriz original?
Primero, definir donde es la última fila de y es la primera fila de . Ahora es elementar mostrar esto
La tarea pendiente ha sido reducida a encontrar el eigenvalue de una matriz diagonal más una corrección Rank-1. Antes de mostrar como hacer esto, vamos a simplificar la notación. Cuando Estamos buscando el eigenvalue de la matriz donde es diagonal con distintas entradas y es algún vector con distinto de cero.
Si es cero, es una pareja propia de desde () si es un eigenvalue, tenemos:
donde es el correspondiente eigenvector. Ahora
manten en mente que es una escalar distinto de cero. Tampoco ni son ceros.Si fuera a ser cero, podría ser un eigenvector de para . Si este fuera el caso, contiene solo una posición distinta de cero en una diagonal distinta de , de esta manera el producto interno no puede ser cero después de todo. Por lo tanto, tenemos
o escrito como una ecuación escalar:
;
Esta ecuanción es conocida como la ecuación escalar. Por tanto el problema ha sido reducido a encontrar las raíces de la función racional definida por la parte izquierda de esta ecuación.
Generalmente el algoritmo Eigenvalue debe ser iterativo y el algoritmo divide y vencerá no es diferente. Resolver la ecuación secular no linear requiere una técnica iterativa, como el método Newton-Raphson. Igualmente cada raíz puede ser hallada en iteración, cada una requiere descenso (para una función de grado ), haciendo el costo de la parte iterativa de este algoritmo .
Análisis
[editar]Como es común el algoritmo divide y vencerás, utilizaremos el Teorema Maestro para analizar el tiempo de ejecución. Recordar que con estas condiciones escojemos . Podemos escribir la relación recurrente:
En la notación del Teorema Maestro, y así . Claramente, = , entonces tenemos
.
Recordar que señalamos reducir la matriz hermitiana a forma tridiagonal toma . Estos tiempos son pequeñps para el tiempo de ejecución de la parte dividen y vencerás, y en este punto no está claro que ventajas ofrece el algoritmo divide y vencerás frente al algoritmo QR (que también usa para las matrices tridiagonales). La ventaja de divide y vencerás se muestra cuando se necesitan eigenvector. Si este es el caso, la reducción a forma tridiagonal será , pero la segunda parte del algoritmo será . Para el algoritmo QR con una precisión razonable, esto es considerando que para dividir y conquistar esto es .
La razón de esta mejora en divide y vencerás es que el parte del algoritmo (multiplicando matrices) está separada de la iteración, mientras que en el QR, esto ocurre en cada paso de la iteración. Sumando el de la reducción, el total de mejoras es desde .
El uso práctico del algoritmo divide y vencerás ha mostrado en los más realistas problemas eigenvalues, funciona mejor que lo estimado. La razón es que muy a menudo las matrices y los vectores tienden a ser numéricamente dispersos, esto significa que tienen muchas entradas con valores más pequeños que la precisión punto flotante, admitiendo deformaciones numérica, i.e. separando el problema en subproblemas separados.
Existen técnicas especializadas de búsqueda de raíces que funcionarian mejor que el método de Newton-Raphson en ambos términos rendimiento y estabilidad. Estos pueden ser usados para mejorar la parte iterativa del algoritmo divide y vencerás.
Variantes e implementación
[editar]El algoritmo presentado aquí es la versión más sencilla. En muchas implementaciones prácticas más complicadas correcciones Rank-1 son usadas para garantizar estabilidad. Incluso algunas variantes usan correcciones Rank-2.
Existen técnicas especializadas de búsqueda de raíces que funcionarían mejor que el método de Newton-Raphson en ambos términos rendimiento y estabilidad. Estos pueden ser usados para mejorar la parte iterativa del algoritmo divide y vencerás.
El algoritmo divide y vencerás es fácilmente paralelizado y computarizado en paquetes de álgebra lineal así como LAPACK contiene implementaciones paralelas de una alta calidad
Referencias
[editar]- Demmel, James W. (1997), Aplicado Álgebra Lineal Numérica, Filadelfia, PA: Society for industrial and Applied Mathematics,[1] ISBN ISBN 0-89871-389-7, MR1463942 .
- ↑ «Society for Industrial and Applied Mathematics»
|url=
incorrecta con autorreferencia (ayuda). Wikipedia (en inglés). 21 de octubre de 2016. Consultado el 21 de diciembre de 2016.