Dijkstra算法使用了贪心算法思想,在实现Dijkstra算法的时候,维持一个节点的集合S,该集合节点到源点的最短路径都已经找到;而对于S集合之外的节点,放置在集合Q中,表示还没有找到最短路径的节点,每次添加到S的是离S最近的节点u,在将u加入S之后,对Q中节点更新其到源节点的距离。以下是java实现:
首先构造Node对象:
/**
* Dijkstra算法的节点对象
* @author Qing
*
*/
public class DijkstraNode {
public static final int MAX = Integer.MAX_VALUE;
private int name;
private int distance;//记录S集合中到节点A的路径长度
private boolean in;
public DijkstraNode(int name){
this.name = name;
this.distance = MAX;
this.in = false;
}
public int getName() {
return name;
}
public void setName(int name) {
this.name = name;
}
public int getDistance() {
return distance;
}
public void setDistance(int distance) {
this.distance = distance;
}
public boolean isIn() {
return in;
}
public void setIn(boolean in) {
this.in = in;
}
}
构造Dijkstra最短路径,特别的ÿ