算法上机(四) 利用矩阵乘法的思想解决全点对最短路径问题

您所在的位置:网站首页 距离矩阵摹乘法详解视频 算法上机(四) 利用矩阵乘法的思想解决全点对最短路径问题

算法上机(四) 利用矩阵乘法的思想解决全点对最短路径问题

#算法上机(四) 利用矩阵乘法的思想解决全点对最短路径问题| 来源: 网络整理| 查看: 265

全点对最短路径问题

对于给定的图G(V,E),求出图中任何点对之间的最短距离。 已知: W[i][j]表示在图上i和j两个结点的距离。INF表示无穷大。 L[i][j]表示从结点i到结点j的最短距离。 b[i][j]表示求从结点i到结点j的最短路径时,结点j的父节点。

算法实现

首先,假设对于每条路径而言,最多只有一条边,L(1)表示每条路径最多只有一条边时的结果,则有L(1)=W。 接着,求出每条路径最多有2,3,4。。。n-1条边时的结果。 很明显,我们可以得到一个结论:L(m)[i][j]=min{L(m-1)[i][k]+W[k][j]},其中k可取的值为0~n-1.

代码实现 #include #include #define INF 90 const int n=5; int w[n][n] = { {0,3,8,INF,-4}, {INF,0,INF,1,7}, {INF,4,0,INF,INF}, {2,INF,-5,0,INF}, {INF,INF,INF,6,0} }; int **L; int b [n][n]; int ** extend(int **old,int m){ int **l = (int **)malloc(n*sizeof(int *)); for(int i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3