导读:稀疏性来自物理问题的局部性:一个节点只与邻居耦合。Golub 的稀疏章节讲两件事:怎么存(CSR/CSC)与怎么排(填充控制排序)。
存储格式
CSR(行压缩)是工程标配:三个数组存值、列索引、行指针,矩阵-向量乘 $O(nnz)$。格式选择影响一切后续算法的性能——CSR 适合乘法,CSC 适合列操作与分解。
填充(fill-in):分解过程中零位变非零。LL 分解的填充由消元图的图结构决定——稀疏性是图论问题。
排序算法
RCM(反向 Cuthill-McKee)减小带宽;嵌套剖分(nested dissection)最小化填充,是大规模直接法的标配。 Metis 这类图分割工具把「排序」变成「割边最小化」。
经验数字:三维问题嵌套剖分相比自然排序可减少一到两个数量级的内存。
与迭代的分工
稀疏直接法健壮但内存随规模增长;CG + 多重网格在椭圆问题上近乎最优($O(N)$)。工程实践:二维用直接法,三维大问题用迭代 + preconditioner。
常见误区
- 用三元组格式直接做分解——先转 CSR/CSC。
- 忽略排序直接 Cholesky,内存爆炸后归咎于「问题太大」。
吃透自检
- 能写出 CSR 格式并实现其矩阵-向量乘
- 能解释填充与消元图的关系
- 能为给定网格问题选择直接或迭代路线并陈述理由