格納形式
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/05 07:50 UTC 版)
行列は、典型的には2次元の配列に格納される。配列の各要素は、行列の要素ai,jを表し、2つのインデックスiとjを用いてアクセスされる。慣習として、iは上から下に数えた行のインデックスを指し、jは左から右に数えた列のインデックスを指す。m × n行列の場合、このフォーマットで行列を格納するのに必要なメモリ量は、m × nに比例する(忘れられることが多いが、行列の次元も格納する必要がある)。 疎行列の場合、非ゼロ要素のみを保存することで、必要メモリ容量の大幅な削減が実現できる。非ゼロ要素の数と分散によって、異なるデータ構造を利用することで、基本的なアプローチに比べてメモリ量の大幅な節約が可能になる。トレードオフは、各要素へのアクセスがより複雑になり、オリジナルの行列を曖昧さなく復元できるようにするために追加の構造が必要になることである。 このため疎行列を格納するための様々な形式(フォーマット)が存在する。 フォーマットは2つのグループに分けられる。 効率的な編集をサポートするフォーマットDOK(Dictionary of keys) LIL(List of lists) COO 効率的なアクセスと行列操作をサポートするフォーマットCSR CSC BSR: ブロック疎行列(Block Sparse matrix)向け 以下の名称は、Netlibで使われているものやIntel Math Kernel Library、SciPyで使われているものに基づく。例として次の疎行列Aを考える。 [ 1 2 3 0 0 0 0 1 2 0 0 2 0 0 0 1 ] {\displaystyle {\begin{bmatrix}1&2&3&0\\0&0&0&1\\2&0&0&2\\0&0&0&1\\\end{bmatrix}}}
※この「格納形式」の解説は、「疎行列」の解説の一部です。
「格納形式」を含む「疎行列」の記事については、「疎行列」の概要を参照ください。
- 格納形式のページへのリンク