我需要计算矩阵的 3 和 4 次方的轨迹,并且它需要尽可能快。
这里的矩阵是一个简单图的邻接矩阵,因此它是正方形的,对称的,它的元素总是 1 或 0,对角元素总是 0。
对于矩阵的 2 次幂的轨迹,优化是微不足道的:
- 我们只需要跟踪的对角线条目 (i,i),跳过所有其他
- 由于矩阵是对称的,这些条目只是第 i 行的条目平方和相加
- 由于条目只有 1 或 0,因此可以跳过平方运算
我在维基百科上找到的另一个想法是总结 Hadamard 产品的所有元素,即逐项乘法,但我不知道如何将此方法扩展到 3 和 4 的幂。
请参阅http://en.wikipedia.org/wiki/Trace_(linear_algebra)#Properties
也许我只是盲人,但我想不出一个简单的解决方案。
最后我需要一个 C++ 实现,但我认为这对这个问题并不重要。
提前感谢您的帮助。