我正在嘗試構建一個方法,該方法返回未加權圖中從一個節點到另一個節點的最短路徑。我考慮過使用Dijkstra's,但這似乎有點矯枉過正,因爲我只需要一對。相反,我實施了廣度優先搜索,但麻煩的是,我的返回列表包含一些我不想要的節點 - 我如何修改我的代碼以實現我的目標?未加權圖的最短路徑(最少節點)
public List<Node> getDirections(Node start, Node finish){
List<Node> directions = new LinkedList<Node>();
Queue<Node> q = new LinkedList<Node>();
Node current = start;
q.add(current);
while(!q.isEmpty()){
current = q.remove();
directions.add(current);
if (current.equals(finish)){
break;
}else{
for(Node node : current.getOutNodes()){
if(!q.contains(node)){
q.add(node);
}
}
}
}
if (!current.equals(finish)){
System.out.println("can't reach destination");
}
return directions;
}
爲什麼你不想要一些這些節點? – mkoryak 2009-10-16 17:39:09
並非所有這些都屬於單一最短路徑路徑 – Robert 2009-10-16 17:40:26
沒有類節點覆蓋equals和hashcode是否正確? – mkoryak 2009-10-16 17:40:26