给定A是一个大型的,稀疏的0-1矩阵(不一定是正方形矩阵)。我想计算B = A*A^T
,其中A^T
是A
的转置。请注意,尽管A是0-1矩阵,但B不是0-1矩阵。
此外,此问题具有以下特殊功能:
我不需要B
对角线上的元素,因此可以在计算后删除它们,或者在计算时忽略它们。
我只需要知道B
中所有非零元素的值(对角线上的元素除外),因此如果程序仅给出包含所有非零值的列表,则可以-零元素。但是,重复的元素不能合并:例如,如果B[2,3] = B[2,4] = 1
,则此列表应包含两个“ 1”而不是一个。
由于B
必须是对称矩阵,因此也可能只给出其上部或下部。
我尝试使用本征(http://eigen.tuxfamily.org/)。但是针对此问题,稀疏矩阵的功能并未针对此问题进行专门优化,希望能得到一些更有效的算法。
欢迎使用任何算法,开源库或论文。
相关问题: Which is the best way to multiply a large and sparse matrix with its transpose?