我有一个非常大的吸收马尔可夫链(扩展到问题规模——从 10 个状态到数百万个)非常稀疏(大多数状态只能对 4 或 5 个其他状态做出反应)。
我需要计算该链的基本矩阵的一行(给定一个起始状态的每个状态的平均频率)。
通常,我会通过计算来做到这一点(I - Q)^(-1)
,但我一直无法找到一个实现稀疏矩阵逆算法的好库!我看过一些关于它的论文,其中大多数是博士水平的工作。
我的大部分谷歌结果都指向我的帖子,这些帖子讨论了在求解线性(或非线性)方程组时如何不应该使用矩阵逆......我觉得这不是特别有用。基本矩阵的计算是否类似于求解方程组,而我根本不知道如何以另一种形式表示?
所以,我提出两个具体问题:
计算稀疏矩阵逆矩阵的一行(或所有行)的最佳方法是什么?
或者
计算大型吸收马尔可夫链的基本矩阵行的最佳方法是什么?
Python 解决方案会很棒(因为我的项目目前仍然是一个概念验证),但是如果我不得不用一些好的 Fortran 或 C 来弄脏我的手,那不是问题。
编辑:我刚刚意识到矩阵 A 的逆 B 可以定义为 AB=I,其中 I 是单位矩阵。这可能允许我使用一些标准的稀疏矩阵求解器来计算逆......我必须跑掉,所以请随意完成我的思路,我开始认为这可能只需要一个真正的基本矩阵财产...