最短路径算法总结(不断更新中)

Dijkstra 算法

单源最短路径

define INF=正无穷
w[x][y]表示边不存在(x,y)

memset(v,
0,sizeof(v));//将所有点标记为没有进入集合

for(int i=1;i<=n;i++)
d[i]
=(i==0?0:INF);//0为源点 到本身到距离为0 其余点到源点到距离为正无穷

for(int i=1;i<=n;i++)
{
int x,m=INF;
for(int y=1;y<=n;y++)//选取到源点最的点
if(!v[y]&&d[y]<=m)
{
m
=d[y];
x
=y;
}
v[x]
=1;//点x到最短路径已经找到 加入集合
for(int y=1;y<=n;y++)//对x到邻节点进行降距操作
if(d[y]>d[x]+w[x][y])
d[y]
=d[x]+w[x][y];
}
posted @ 2011-05-19 20:23  Crazy_yiner  阅读(577)  评论(0编辑  收藏  举报