Compressed Row Storage(CRS)形式のスパース行列を座標リスト(COO)形式に変換する効率的な方法はありますか?
質問する
1845 次
1 に答える
2
Yousef Saad のライブラリSPARSKITを見てください。彼には、圧縮された疎行と座標形式の間で相互に変換するサブルーチンと、他のいくつかの疎行列ストレージ スキームがあります。
とにかく、圧縮されたものから座標形式を取得する方法を確認するには、最初に圧縮された行形式をどのように考え出したかを考えるのが最も簡単です。COO にスパース マトリックスがあるとします。ここでは、すべてを順番に並べています。たとえば、
rows: 1 1 1 1 2 2 2 2 2 3 3 3 ...
cols: 1 3 5 9 2 3 7 9 11 1 2 3 ...
したがって、行 1 のゼロ以外のエントリは (1,1)、(1,3)、(1,5)、(1,9) などです。行の配列に多くの冗長データを格納しています。代わりに、配列内の行の開始アドレスを示すia
ような配列を持つことができます。上記の例では、次のようになります。ia(i)
cols
i
ia : 1 5 10 ...
cols: 1 3 5 9 2 3 7 9 11 1 2 3 ...
COO から CSR に移行するには、次の事実を使用します。
ia(i+1) = ia(i) + number of non-zero entries in row i
任意の i について。それを知っていれば、CSR から COO 形式を取得するために逆方向に作業できます。
于 2012-12-26T09:12:28.963 に答える