您的位置:首页 > Web前端 > JavaScript

图---Dijstra

2015-12-26 21:33 537 查看
求单源最短路径用得最多的算法应该就是Dijstra算法了,但是该算法有一个缺点就是不能处理负权,如果遇到负权大家可以参考后面介绍的BellMan Ford算法进行处理。

下面介绍下Dijstra算法的主要步骤:

1. 初始化集合U,该集合表示已经入选最小的节点集合

2. 初始化D,该数组表示源点s到该点的最小距离,没有直接相连则视为无穷大

3. 选出距离源点最小距离的点w

4. 对直接与w点相连的点进行处理,D[v] ← min(D[v], D[w] + A[w][v]):即对与w点直接相连的点,如果存在一条更短路劲达到该点,则刷新该点的D值。

Dijkstra(s, A, D)
U = {s};

for each vertex v
D[v] ← A[s][v]

while U ≠ V
Select vertex w ∈ V-U with minimum D[w]
U ← U ∪ {w}

for each vertex v adjacent to w
D[v] ← min(D[v], D[w] + A[w][v])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: