计算矩阵的 k 次幂的迹

Gig*_*igo 5 math optimization linear-algebra mathematical-optimization adjacency-matrix

我需要将矩阵的迹计算为 3 和 4 的幂,并且它需要尽可能快。

这里的矩阵是一个简单图的邻接矩阵,因此它是正方形的,对称的,它的条目总是 1 或 0,对角线元素总是 0。

对于矩阵的 2 次幂的迹的优化是微不足道的:

  • 我们只需要跟踪的对角线条目 (i,i),跳过所有其他条目
  • 由于矩阵是对称的,这些条目只是第 i 行的条目平方和相加
  • 由于条目只有 1 或 0,因此可以跳过平方运算

我在维基百科上发现的另一个想法是总结 Hadamard 乘积的所有元素,即 entry-wise multiplication,但我不知道如何将这种方法扩展到 3 和 4 的幂。

http://en.wikipedia.org/wiki/Trace_(linear_algebra)#Properties

也许我只是瞎了,但我想不出一个简单的解决方案。

最后我需要一个 C++ 实现,但我认为这对问题并不重要。

在此先感谢您的帮助。

Gig*_*igo 1

好吧,我刚刚自己解决了这个问题。我不知道的重要事情是:

如果 A 是有向图或无向图 G 的邻接矩阵,则矩阵 An(即 A 的 n 个副本的矩阵乘积)有一个有趣的解释:行 i 和列 j 中的条目给出了(有向图或无向图)的数量。无向)从顶点 i 到顶点 j 的长度为 n 的行走。例如,这意味着无向图 G 中三角形的数量恰好是 A^3 除以 6 的迹。

(复制自http://en.wikipedia.org/wiki/Adjacency_matrix#Properties

当处理稀疏图并使用邻接表而不是矩阵时,检索所有 n 个节点从节点 i 到 i 的给定长度的路径数基本上可以在 O(n) 内完成。

尽管如此,还是感谢您的回答!