保留 nnz 的稀疏矩阵乘法

计算科学 矩阵 稀疏矩阵
2021-12-12 22:39:22

设 A 和 B 是中的稀疏矩阵,密度(大致)相同我想有效地计算一个矩阵在某种意义上是“最接近”同时仍然具有密度“最接近”可能意味着“最小化 ”,但我对其他解释持开放态度。Rm×mpCABp||CAB||F

如果是 A 中非零条目的数量(= B 中非零条目的数量),则主要计算要求是操作应该只需要内存。nnzO(nnz)

问题1:这似乎是一个已经有很多研究的问题,但我没有找到很多。谷歌搜索时我可以使用任何参考/关键字吗?


我天真的想法:

  1. 做一个稀疏的 matmul 而不实际将结果条目写入内存。相反,将它们输入在线订单选择算法以选择输出流中的 'th最大范数元素。nnz
  2. 重新执行稀疏 matmul,但仅记录范数大于或等于步骤 1 中找到的阈值的条目。

这似乎直接最小化了 Frobenius 范数,但也有点低效:对于糟糕的稀疏模式,渐近运行时间仍然可以是,实际上,我们实际上是在进行两次乘法运算。O(m2)

此外,还不清楚如何处理非零条目都相同的矩阵。也许只取第一个条目?但这使分析变得更加困难。nnz

问题2:对此有什么明显的改进吗?

问题 3:在所有非零条目都是不同的假设下,该算法的动态行为是什么?例如,让是这个保持密度的乘法,而是稀疏矩阵。我们能说一下吗?可能不适用于病理情况,但是如果是 iid 随机稀疏矩阵呢?Mi||(M1M2Mn)(M1M2Mn)||FMi

2个回答

我对具体问题一无所知,但您可能想了解“SParse Approximate Inverse (SPAI)”社区在过去二十年中提出的技术。在那里,人们正在寻找一个矩阵使得被最小化(关于某些范数,通常是 Frobenius 范数)并要求是稀疏的。那么问题是应该如何选择的稀疏模式,以使大约等于恒等式——这个问题与您正在寻找的问题相去甚远。BA1BAIBBBA

我不能指出任何具体的论文(不太了解该领域),但是如果您搜索 SPAI,您应该会找到有关该主题的文献。

对此可能没有太多研究的一个原因是,人们通常首先尽可能避免稀疏矩阵乘法。将乘积应用于向量时,可以从右边进行关联,在求解线性系统时可以添加辅助变量以避免形成乘积;例如,将转换为,并求解ABvA(Bv)c=ABxy=Bx,c=Ay[xy]

事实上,在阅读您的问题后,我的第一个想法是这可能是一个“XY 问题”,并且可能有更好的方法来完成您需要这个近似 matmul 的任务。

无论如何,避免两次乘法的技巧是将计算的存储到优先级队列中,并在较大范数到达时立即从其中删除具有最小范数的条目。(i,j,Cij)