Próbuję zbudować metodę, która zwraca najkrótszą ścieżkę z jednego węzła do drugiego na nieważonym wykresie. Zastanawiałem się nad użyciem Dijkstry, ale wydaje mi się to nieco przesadzone, ponieważ chcę tylko jednej pary. Zamiast tego zaimplementowałem szerokie wyszukiwanie, ale problem polega na tym, że moja lista zwrotów zawiera niektóre węzły, których nie chcę - w jaki sposób mogę zmodyfikować mój kod, aby osiągnąć mój cel?Najkrótsza ścieżka (najmniej węzłów) dla nieważonego wykresu
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;
}
dlaczego nie chcesz niektórych z tych węzłów? – mkoryak
nie wszystkie z nich należą do pojedynczej trasy o najkrótszej ścieżce – Robert
czy nadpisanie węzła klasy jest równe i kodowanie hash poprawnie? – mkoryak