图中长度为k的路径的计数

图中长度为k的路径的计数

给定一个 n n 个顶点,边长为 1 1 的有向图的邻接矩阵。求出这个图里长度为 k k 的路径的总数。路径中同一条边允许通过多次。 ( 1 n 100 , 1 1 0 9 ) (1 \leq n \leq 100,1\leq10^9)

输入

n = 4
k = 2

输出

6

在这里插入图片描述

题解

假设从 u u 出发,到 v v 的路径的总数为 G k [ u ] [ v ] G_k[u][v] 。首先, k = 1 k=1 时的值和边数相等,因此 G 1 G_1 就等于图的临界矩阵。假设我们已经得到了
G k 1 [ u ] [ w ] × G k 2 [ w ] [ v ] G_{k_{1}}[u][w]\times G_{k_{2}}[w][v]
表示成矩阵的积的形式即为
G k 1 + k 2 = G k 1 G k 2 G_{k_1+k_2}=G_{k_{1}}G_{k_{2}}
因此,可以使用矩阵的幂表示出
G k = G 1 k G_k=G_{1}^{k}
这个算法的复杂度为 O ( n 3 l o g n ) O(n^3 log n)

发布了163 篇原创文章 · 获赞 54 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_42856843/article/details/102218112