Le chemin le plus court (moins de nœuds) pour les non pondérée graphique

Je suis en train de construire une méthode qui retourne le plus court chemin d'un nœud à l'autre, dans un graphe non pondéré. J'ai considéré que l'utilisation de Dijkstra, mais cela semble un peu exagéré car je veux seulement une paire. Au lieu de cela j'ai mis en place une largeur tout d'abord de recherche, mais le problème est que mon retour liste contient certains des nœuds que je ne veux pas - comment puis-je modifier mon code pour atteindre mon objectif?

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 vous ne voulez PAS que certains de ces nœuds?
pas tous d'entre eux appartiennent à un seul chemin le plus court itinéraire
ne Nœud de la classe remplacer equals et hashcode correctement?
Quand je faisais quelque chose comme ça sur une grille 2D, j'ai trouvé la Une* (Étoile) algorithme plus facile à comprendre.
Je pense que l'aide de l'algorithme de Dijkstra est la façon la plus simple. Vous faites passer les nœuds pour marquer leur coût et un autre passage de choisir l'itinéraire le plus court. Il semble que vous essayez de faire tout en une seule opération, je ne pense pas que se fait facilement avec cet algorithme.

OriginalL'auteur Robert | 2009-10-16