У меня очень большая поглощающая цепь Маркова (масштабируется до размера задачи - от 10 до миллионов), что очень редко (большинство состояний могут реагировать только на 4 или 5 других состояний).
Мне нужно вычислить одну строку фундаментальной матрицы этой цепочки (средняя частота каждого состояния с одним начальным состоянием).
Обычно я делаю это, вычисляя (I - Q)^(-1)
, но мне не удалось найти хорошую библиотеку, которая реализует разреженный матричный обратный алгоритм! Я видел несколько работ по этому поводу, большинство из них - P.h.D..
Большинство моих результатов Google указывают мне на сообщения, говорящие о том, как нельзя использовать обратную матрицу при решении линейных (или нелинейных) систем уравнений... Я не считаю это особенно полезным. Является ли вычисление фундаментальной матрицы аналогичным решению системы уравнений, и я просто не знаю, как выразить ее в виде другой?
Итак, я задаю два конкретных вопроса:
Каков наилучший способ вычисления строки (или всех строк) для инверсии разреженной матрицы?
ИЛИ
Какой лучший способ вычислить строку фундаментальной матрицы большой поглощающей цепи Маркова?
Решение Python было бы замечательно (так как мой проект по-прежнему в настоящее время является доказательством концепции), но если мне приходится загрязнять руки каким-то хорошим "Fortran или C", это не проблема.
Edit: я просто понял, что обратный B матрицы A можно определить как AB = I, где я - единичная матрица. Это может позволить мне использовать некоторые стандартные разреженные матричные решатели для вычисления обратного... Я должен убежать, поэтому не стесняйтесь завершить мой ход мысли, который, как я начинаю думать, может потребовать только элементарной матрицы свойство...