线性方程组算法:稀疏矩阵Cholesky分解与并行实现
1. 稀疏下三角矩阵的压缩存储方案
在处理稀疏矩阵时,高效的存储方案至关重要。对于稀疏下三角矩阵L,我们可以使用额外的数组StartRow和Supernode来实现更紧凑的存储。
1.1 StartRow数组的作用
StartRow[j]存储的是列j中第一个非零元素所在行的索引。也就是说,Row[StartRow[j]] = j,因为ljj是第一个非零元素。对于每一列,行索引仍然存储在Row的一个连续块中。与简单方案不同的是,同一超级节点中不同行的块不是不相交的,而是根据这些列的相似稀疏结构重叠。
1.2 超级节点的存储优化
当j是超级节点I(j) = {j, j + 1, …, j + k - 1}的第一列时,对于1 ≤ l < k,列j + l在大于或等于j + l的行中与行j具有相同的非零模式。因此,Row[StartRow[j] + l]包含列j + l的第一个元素的行索引,即Row[StartRow[j] + l] = j + l。列j + l的行索引存储在Row[StartRow[j] + l], …, Row[StartRow[j] + StartColumn[j + 1] - StartColumn[j - 1]]中。这导致StartRow[j + l] = StartRow[j] + l,因此只需存储超级节点第一列的行索引即可获得完整信息。
1.3 Struct(L∗j)的快速访问
通过以下公式可以快速访问Struct(L∗j):
Struct(L∗j) = {Row[StartRow[j] + i]
超级会员免费看
订阅专栏 解锁全文
1895

被折叠的 条评论
为什么被折叠?



