最短路径算法看不懂

来源:百度知道 编辑:UC知道 时间:2024/05/27 12:45:09
void ShortestPath_DIJ(MGraph G,int v0,PathMatrix &P,ShortPathTable &D)

{for (v=0;v<G,vexnum;++v)

{final[v]=FALSE; D[v]=G.arcs[v0][v];

for (w=0;w<G,vexnum;++w) P[v][w]=FALSE;

if (D[v]<INFINITY){p[v][v0]=TRUE;P[v][v]=TRUE;}

}

D[v0]=0; final[v0]=TRUE;

for (i=0;i<G,vexnum;++i)

{min=INFINITY;

for (w=0;w<G,vexnum;++w)

if(!final[w])

if(D[w]<min) {v=w; min=D[w];}

final[v]=TRUE;

for (w=0;w<G,vexnum;++w)

if(!final[w] &&(min+G.arcs[v][w]<D[w]))

{D[w]=min+G.arcs[v][w];

P[w]=P[v]; P[w][w]=TRUE;

}

}

}

P[w]=P[v] 是什么意思?

void ShortestPath_FLOYD(MGraph G,PathMatrix &P[],DistanceMatrix &D)

{for (v=0;v<G,vexnum;++v)

for (w=0;w<G,vexnum;++w)

{D[v][w]=G.arcs[v]

建议看看数据结构,或算法书中的图这一张,多看几遍,推荐floyd,更好懂点,直接看代码是看不明白的。
http://baike.baidu.com/view/14495.htm