科学仿真

稀疏矩阵存储与图分割:大规模问题怎么存

导读:稀疏性来自物理问题的局部性:一个节点只与邻居耦合。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 格式并实现其矩阵-向量乘
  • 能解释填充与消元图的关系
  • 能为给定网格问题选择直接或迭代路线并陈述理由

← 科学仿真 书目精读列表 经典研读