最短路问题

单源最短路径(single-source shortest paths)

1.给定带权图G=,其中每条边(vi,vj)上的权W[vi,vj]是一个非负实数。计算从任给的一个源点s到其他各节点的最短路径

Dijkstra算法基本思想

1.把所有结点分成两组

- 第一组U包括已确定最短路径的结点

- 第二组V-U包括尚未确定最短路径的结点

2.按最短路径长度递增的顺序逐个把第二组的结点加到第一组中

- 直至从s出发可达结点都包括进第一组中

最短路问题_第1张图片

void Dijkstra(MGraph g,int v)  //求有向网g的v顶点到其余顶点的最短路径
{
    int dist[MAXV],path[MAXV];
    int s[MAXV];
    int mindis,i,j,u;
    for(i=0;i

Floyed算法求每对结点之间的最短路径

1.用相邻据怎adj来表示带权有向图

2.基本思想

- 初始化adj(0)为相邻矩阵adj

- 在矩阵adj(0)上做n次迭代,递归地产生一个矩阵序列adj(1),...,adj(k),...,adj(n)

- 其中经过第k次迭代,adj(k)[i,j]的值等于从结点vi到结点vj路径上所经过的结点序列不大于k的最短路径长度

算法演示

最短路问题_第2张图片



你可能感兴趣的:(最短路问题,数据结构,算法)