c – 具有稀疏矩阵的二次型矩阵乘法算法

前端之家收集整理的这篇文章主要介绍了c – 具有稀疏矩阵的二次型矩阵乘法算法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在优化代码,这些代码严重依赖于定制的Matrix库(它不会被排除在项目之外,因为它无处不在.这不是很好,但这是事实……)许多计算是用10-的矩阵完成的20行和列,许多计算包括二次形式
C = A*B*A'

我意识到A经常是稀疏的,我想利用这个事实.所以我正在寻找一种能够处理这种情况的算法.数值稳定性很重要.有什么我可以使用的吗?
(我没有写我们的图书馆所以我不知道是否有任何陷阱我应该考虑到?)

由于“我们的”简单O(n ^ 3)乘法在目标平台上的执行速度比本征3快,因为我需要数值稳定性且矩阵不是很大,我猜Strassen的算法以及Coppersmith-Winograd算法都不是我正在寻找什么.相反,它只是二次形式乘法,让我可以轻松地检查A中的零.

谢谢你的任何建议!

解决方法

存在 this篇论文,处理快速稀疏矩阵乘法.所开发的算法将稀疏矩阵分为两部分:密集和稀疏,并在其上应用快速乘法算法.所以对我而言,它看起来并不依赖于矩阵的大小,就像你提到的Strassen一样,而是因为它很稀疏.

猜你在找的C&C++相关文章