Math 计算矩阵到幂k的迹

Math 计算矩阵到幂k的迹,math,optimization,linear-algebra,mathematical-optimization,adjacency-matrix,Math,Optimization,Linear Algebra,Mathematical Optimization,Adjacency Matrix,我需要计算一个矩阵的3和4的幂的轨迹,它需要尽可能快 这里的矩阵是一个简单图的邻接矩阵,因此它是正方形的,对称的,它的条目总是1或0,对角元素总是0 对于矩阵的2次幂的跟踪,优化是微不足道的: 对于跟踪,我们只需要对角线条目(i,i),跳过所有其他条目 由于矩阵是对称的,这些条目只是第i行的条目的平方和总和 由于条目仅为1或0,因此可以跳过平方运算 我在维基百科上发现的另一个想法是总结哈达玛乘积的所有元素,即条目式乘法,但我不知道如何将这个方法扩展到3和4的幂 看 也许我只是个盲人,但我想不

我需要计算一个矩阵的3和4的幂的轨迹,它需要尽可能快

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

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

  • 对于跟踪,我们只需要对角线条目(i,i),跳过所有其他条目
  • 由于矩阵是对称的,这些条目只是第i行的条目的平方和总和
  • 由于条目仅为1或0,因此可以跳过平方运算
我在维基百科上发现的另一个想法是总结哈达玛乘积的所有元素,即条目式乘法,但我不知道如何将这个方法扩展到3和4的幂

也许我只是个盲人,但我想不出一个简单的解决办法

最后我需要一个C++实现,但是我觉得这个问题不重要。


提前感谢您的帮助。

轨迹是特征值之和,矩阵幂的特征值就是该幂的特征值

也就是说,如果l_1,…,l_n是矩阵的特征值,那么trace(M^p)=1_1^p+l_2^p+…+l_n^p

根据您的矩阵,您可能需要计算特征值,然后求和。如果矩阵的秩较低(或者可以很好地近似于低秩矩阵),则可以非常便宜地计算特征值(部分特征分解的复杂性为O(n*k^2),其中k是秩)


编辑:您在评论中提到的是1600x1600,在这种情况下,查找所有特征值应该没有问题。这里有许多C++代码,你可以用这个< /P> < P> OK,我自己就想出来了。 我不知道的重要事情是:

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

(抄自)

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


不过,谢谢你的回答

矩阵的大小是多少?当我仔细阅读时,我感到困惑。你说矩阵是对角的,没有对角元素。是哪一个?对角线上有零的对角线矩阵有一个相当简单的轨迹:零。零矩阵的任何幂也有零迹。你是说矩阵是对称的,而不是对角的吗?因为它是一个邻接矩阵,所以大小取决于图的大小。我用的最大的是1600x1600。我想这是属于你的,你有一个稀疏图,所以你有一个稀疏邻接矩阵。在这种情况下,矩阵乘法非常快。你确定这个路径枚举的想法会比只计算^3更快吗?