Tôi đang cố gắng tạo phương thức trả về đường đi ngắn nhất từ nút này đến nút khác trong biểu đồ không có trọng số. Tôi đã xem xét việc sử dụng Dijkstra nhưng điều này có vẻ hơi quá mức vì tôi chỉ muốn một đôi. Thay vào đó, tôi đã thực hiện tìm kiếm theo chiều rộng, nhưng vấn đề là danh sách trả lại của tôi chứa một số nút mà tôi không muốn - làm cách nào tôi có thể sửa đổi mã của mình để đạt được mục tiêu?Đường ngắn nhất (các nút ít nhất) cho biểu đồ không có trọng 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;
}
tại sao bạn không muốn một số nút đó? – mkoryak
không phải tất cả trong số chúng thuộc về một tuyến đường ngắn nhất – Robert
thực hiện ghi đè lớp bằng Node và hàm băm chính xác không? – mkoryak