注:此处是以数组按下标从
0
开始得出的推导
如图所示,下三角矩阵就是指其上三角区所有元素都是零或者同一常量的矩阵,而上三角矩阵也是对应的定义。
对下三角矩阵压缩的存储思想也和对称矩阵类似,不同之处在于,我们存储完下三角的不同元素的内容之后,还需增设一个空间来保存上三角区的常量(如图)
所以,对于下三角矩阵,有:
而对于上三角矩阵,有:
其推导示意图如下:
对角矩阵又称带状矩阵。是指在 阶方阵中,非零元素集中在主对角线及其两侧。
即对任一元素 当 时有. 记 为(奇数),则所得矩阵就是含有 条对角线的带状区域内才有值的矩阵,称为 对角矩阵。
常见的带状矩阵是三对角矩阵。如下图所示:
将 条对角线上的元素按行优先方式存储在一维数组中,为了节省空间,第一行前面和最后一行后面的 个 可以不存储(即 “掐头去尾”),就一共需要 个空间。
从而对于三对角矩阵, 的下标 满足.
我们也可以由 反解出:
矩阵中非零元素个数 极少,而且分布也不规律,如果非零元素个数只占矩阵元素总数 的25%~30% 或更低时(此时),这样的矩阵称为稀疏矩阵。
如果用传统存储方式,抑或上面我们介绍的压缩方法,都不能更好地节省存储空间,更不必说稀疏矩阵不一定有规律。
系数矩阵的压缩存储一般有两类:三元组顺序表(顺序结构)和十字链表(链式结构)。
我们考虑只存储非零元素,因为稀疏矩阵无规律性,我们最好还存储非零元素的行数和列数。这样一来我们就得到一个 三元组(行标/cow、列标/col、值/value)。