问题
对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径。
解析
指定起点a存入G中,初始状态下G中只有a,在剩余的数据中找到路径最短的顶点,存入G,再更新剩余数据。重复上述操作,直至完成。
设计
void DIJ(MGraph G,int v0,PathMatrix P,ShortPathTable D)
{
// 用Dijkstra算法求有向网G的v0顶点到其余顶点v的最短路径P[v]及带权长度
// D[v]。若P[v][w]为TRUE,则w是从v0到v当前求得最短路径上的顶点。
// final[v]为TRUE当且仅当v∈S,即已经求得从v0到v的最短路径 算法7.15
int v,w,i,j,min;
Status final[MAX_VERTEX_NUM]; // 辅助矩阵,为真表示该顶点到v0的最短距离已求出,初值为假
for(v=0;v<G.vexnum;++v)
{
final[v]=FALSE;