我试图搜索答案,发现本书中的 cs_multiply 方法已被用于在 MATLAB 中将两个通用稀疏矩阵相乘。
在书中它说“这种方法所花费的时间(A * B)
是O(n + f +|B|)
,其中f
执行的浮点运算的数量在哪里(f
支配运行时间,除非A
有一个或多个没有条目的列,在这种情况下,要么n
或|B|
可以大于 f )"
那么这|B|
代表什么?Big-O 表示法的运行时复杂度应该是多少?
任何帮助将不胜感激。在此先感谢
我试图搜索答案,发现本书中的 cs_multiply 方法已被用于在 MATLAB 中将两个通用稀疏矩阵相乘。
在书中它说“这种方法所花费的时间(A * B)
是O(n + f +|B|)
,其中f
执行的浮点运算的数量在哪里(f
支配运行时间,除非A
有一个或多个没有条目的列,在这种情况下,要么n
或|B|
可以大于 f )"
那么这|B|
代表什么?Big-O 表示法的运行时复杂度应该是多少?
任何帮助将不胜感激。在此先感谢
作为一般规则,到目前为止,将两个稀疏矩阵相乘的主要方面实际上并不是任何浮点计算,而是形成和分配所得稀疏矩阵的稀疏模式。如果是两个稀疏矩阵,那么通常也是稀疏的,但远不如此 - 每行将有更多条目,并且在确定这些条目和分配结果内存方面涉及大量工作。这将比实际乘以相应的元素花费更长的时间,除非已经很稠密了。
第二条规则是不要在两个稀疏矩阵之间形成乘积,除非你无能为力。例如,如果你以后需要形成这种产品在哪里是向量,那么你几乎总是会通过计算变得更好作为,即通过使用两个矩阵向量乘积而不是一个矩阵向量乘积与乘积矩阵.