一、邻接矩阵实现
思路:如果是邻接矩阵存储,设邻接矩阵为A,则A*A即为平方图,只需要矩阵相乘即可;
伪代码:
for i=1 to n
for j=1 to n
for k=1 to n
result[i][j]+=matrix[i][k]*matrix[k][j];
算法复杂度
两个n维数组相乘,因此复杂度为O(V^3),当然可以通过Strassen算法稍加改进.
扩展:这种方法的作用是比如求u到v路径长度为k的路径数目,只需要求A^k,然后[u][v]即可。
算法正确性分析
命题:给定两点i,j,i,j路径长度为r的路径