一、思路
求全源最短路径可以采用单源最短路径算法实现,如采用贪心算法的Dijkstra,时间开销为|V|*O(E+VlgV),动态规划的Bellman-Ford, |V|*O(V pow 2 *E),还有Bellman的优化算法SPFA。但是呢,这样无疑会在时间开销上花费昂贵。
假设我们采用Bellman-Ford算法,
for (int i = 1; i < numOfVertex; i ++) //这里循环从1开始是因为开始节点已经存放在S中了,还有numOfVertex-1个节点要处理
{
for(int start=0;start<numOfVertex;start++)
{
for (int j =0; j < numOfVertex; j ++)
{
if (j!= startVertex && map[start][j] < INT_MAX) //在Q中,有距离的为c->d,c->e, c->b
{
int currentdist = distance[ start] + map[ start ][ j ];
if (currentdist < distance[ j ]) //distance[j = ]为开始到j的距离
{
distance[ j ] = currentdist;
prevVertex[ j ] = start;
}
}
}
}
}
看看矩阵的乘法:
- for(i=0;i<this->m;i++)
- for(j=0;j<m2.n;j++)
- {