我需要计算一个矩阵的3次方和4次方的迹,并且需要尽可能快地完成。
这里的矩阵是一个简单图的邻接矩阵,因此它是方阵,对称的,其条目始终为1或0,对角线元素始终为0。
对于矩阵的平方迹,优化很简单:
- 我们只需要对角线条目(i,i)来计算迹,跳过所有其他条目 - 由于矩阵是对称的,这些条目只是第i行的条目平方和 - 由于条目只是1或0,可以跳过平方运算
我在维基百科上发现另一个想法是将所有哈达玛积(即逐个相乘)的元素相加,但我不知道如何将此方法扩展到3次方和4次方。
请参见http://en.wikipedia.org/wiki/Trace_(linear_algebra)#Properties 也许我只是太盲目了,无法想出简单的解决方案。
在最后,我需要一个C++实现,但我认为这对问题不重要。
提前感谢您的任何帮助。
这里的矩阵是一个简单图的邻接矩阵,因此它是方阵,对称的,其条目始终为1或0,对角线元素始终为0。
对于矩阵的平方迹,优化很简单:
- 我们只需要对角线条目(i,i)来计算迹,跳过所有其他条目 - 由于矩阵是对称的,这些条目只是第i行的条目平方和 - 由于条目只是1或0,可以跳过平方运算
我在维基百科上发现另一个想法是将所有哈达玛积(即逐个相乘)的元素相加,但我不知道如何将此方法扩展到3次方和4次方。
请参见http://en.wikipedia.org/wiki/Trace_(linear_algebra)#Properties 也许我只是太盲目了,无法想出简单的解决方案。
在最后,我需要一个C++实现,但我认为这对问题不重要。
提前感谢您的任何帮助。