私は非常にスパースな非常に大きな吸収マルコフ連鎖(問題のサイズに合わせてスケール-10状態から数百万)を持っています(ほとんどの状態は他の4つまたは5つの状態にしか反応できません)。
このチェーンの基本行列の1行を計算する必要があります(1つの開始状態が与えられた場合の各状態の平均頻度)。
通常、これは計算によって行います(I - Q)^(-1)
が、スパース行列の逆アルゴリズムを実装する優れたライブラリを見つけることができませんでした。私はそれに関するいくつかの論文を見ました、それらのほとんどは博士号レベルの仕事です。
私のGoogleの結果のほとんどは、線形(または非線形)連立方程式を解くときに逆行列を使用するべきではないという投稿を示しています...特に役立つとは思いません。基本行列の計算は連立方程式を解くのと似ていますか?私は単に一方を他方の形で表現する方法がわかりませんか?
それで、私は2つの特定の質問を提起します:
スパース行列の逆行列の行(またはすべての行)を計算するための最良の方法は何ですか?
また
大きな吸収マルコフ連鎖の基本行列の行を計算するための最良の方法は何ですか?
Pythonソリューションは素晴らしいでしょう(私のプロジェクトは現在も概念実証であるため)が、古き良きFortranまたはCで手を汚さなければならない場合でも、それは問題ではありません。
編集:行列Aの逆行列はAB = Iとして定義できることに気づきました。ここで、Iは単位行列です。これにより、いくつかの標準的なスパース行列ソルバーを使用して逆行列を計算できるようになる可能性があります...逃げる必要があるので、自由に思考の列を完成させてください。財産...