Tengo una cadena de Markov absorbente muy grande (escalas al tamaño del problema - de 10 estados a millones) que es muy escasa (la mayoría de los estados pueden reaccionar a solo 4 o 5 estados más).¿Cuál es la mejor forma de calcular la matriz fundamental de una cadena de Markov absorbente?
Necesito calcular una fila de la matriz fundamental de esta cadena (la frecuencia promedio de cada estado dado un estado inicial).
Normalmente, haria esto calculando (I - Q)^(-1)
, pero no he podido encontrar una buena biblioteca que implemente un algoritmo de matriz escasamente inversa. He visto algunos artículos, la mayoría de ellos P.h.D. trabajo de nivel.
La mayoría de mis resultados de Google me indican que no se debe usar una matriz inversa cuando se resuelven sistemas de ecuaciones lineales (o no lineales) ... No me parece especialmente útil. ¿El cálculo de la matriz fundamental es similar a la resolución de un sistema de ecuaciones, y simplemente no sé cómo expresarlo en la forma del otro?
Por lo tanto, planteo dos preguntas específicas:
Cuál es la mejor manera de calcular una fila (o todas las filas) de la inversa de una matriz dispersa?
O
Cuál es la mejor manera de calcular una fila de la matriz fundamental de una gran cadena de Markov de absorción?
Una solución de Python sería maravillosa (ya que mi proyecto todavía es actualmente una prueba de concepto), pero si tengo que ensuciarme las manos con Fortran o C, eso no es un problema.
Editar: Me acabo de dar cuenta de que el inverso B de la matriz A se puede definir como AB = I, donde I es la matriz de identidad. Eso me puede permitir usar algunos solucionadores de matriz dispersos estándar para calcular el inverso ... Tengo que salir corriendo, así que siéntete libre de completar mi tren de pensamiento, que estoy empezando a pensar que solo podría requerir una matriz realmente elemental propiedad ...
Si desea una solución de Python, por favor etiquetarlo 'python'. Hay otros intercambios de pila que también pueden ser más o menos útiles. –
Estaba trabajando en PGM y me preguntaba si había una forma de calcular esto en general, sin embargo, ninguna idea para una matriz dispersa, ¡así que buena suerte! – argentage