J'essaie de créer une méthode qui renvoie le chemin le plus court d'un nœud à un autre dans un graphique non pondéré. J'ai considéré l'utilisation de Dijkstra mais cela semble un peu exagéré puisque je ne veux qu'une paire. Au lieu de cela, j'ai mis en place une recherche de première grandeur, mais le problème est que ma liste de retour contient certains des nœuds que je ne veux pas - comment puis-je modifier mon code pour atteindre mon objectif?Chemin le plus court (nombre de nœuds le plus court) pour un graphique non pondéré
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;
}
Pourquoi ne voulez-vous PAS certains de ces nœuds? – mkoryak
tous n'appartiennent pas à un chemin de chemin le plus court – Robert
Est-ce que le nœud de classe remplace les égales et le hashcode correctement? – mkoryak