我有一个非常大的吸收马尔可夫链(从10个状态到数百万个状态)非常稀疏(大多数状态只能与4或5个其他状态相互作用)。
我需要计算此链的基础矩阵的一行(给定一个起始状态下每个状态的平均频率)。
通常,我会通过计算(I-Q)^(-1)
来完成这个任务,但我找不到一个实现稀疏矩阵求逆算法的好库!我看到了一些论文,其中大部分都是博士级别的工作。
我的大多数Google结果都指向了一些关于解线性(或非线性)方程组时为什么不应该使用矩阵求逆的帖子……我觉得那些帖子并没有什么帮助。计算基础矩阵是否类似于解方程组,我只是不知道如何用一个形式表达另一个?
因此,我提出了两个具体的问题:
计算稀疏矩阵的逆的最佳方法是什么(一行或所有行)?
或
计算大吸收马尔可夫链的基础矩阵的一行的最佳方法是什么?
如果可以提供Python解决方案,那将会非常棒(因为我的项目目前仍然是一个概念验证),但如果必须使用一些Fortran或C等编程语言,那也不是问题。
编辑:我刚刚意识到矩阵A的逆B可以定义为AB=I,其中I是单位矩阵。这可能允许我使用一些标准的稀疏矩阵求解器来计算逆矩阵……我得走了,所以请随意完成我的思路,我开始觉得这可能只需要一些非常基本的矩阵属性……