<pre name="code" class="java">/*
* 设置一个U集合,包含最小路径长度和上一个结点
* V-U集合表示还没有进行调整
* 把V-U集合逐渐加入U中,并调整最小路径
* */
public class Dijkstra {
private static int MAX = 10000;
public static void dijkstra(GraphMatrix grap, Path dist[]){
// 初始化V0
init(grap,dist);
int n = dist.length;
int minw = MAX;
int mv = 0;
for(int i=1;i<n;i++){
int j;
//找出和V0距离最近的顶点mv
for(j=1;j<n;j++){
if(grap.arcs[j][j]==0 && dist[j].length<MAX){
mv=j;
minw = dist[j].length;
}
}
if(mv == 0) break;
grap.arcs[mv][mv]=1; //把顶点mv加入U中
//调整V-U中已知的最短路径
for(j=1;j<n;j++){
if(grap.arcs[j][j]==0 && dist[j].length > dist[mv].length + grap.arcs[mv][j]){
dist[j].length = dist[mv].length + grap.arcs[mv][j];
dist[j].pre = mv;
}
}
}
}
Dijkstra算法 ---java实现
最新推荐文章于 2022-11-27 22:41:23 发布