Immer kürzesten Pfad zwischen zwei Knoten mit BFS-Algorithmus

Ich versuche zu tun, Breadth-First Search traversal durch einen Graphen aus Knoten, nach dem ich werden versuchen, den kürzesten Abstand zwischen einem Knoten und einem anderen. Dies ist, was wikipedia BFS-Algorithmus sieht wie folgt aus:

  procedure BFS(G,v) is
      let Q be a queue
      Q.push(v)
      label v as discovered
      while Q is not empty
         v  Q.pop()
         for all edges from v to w in G.adjacentEdges(v) do
             if w is not labeled as discovered   
                 Q.push(w)
                label w as discovered

Habe ich meine eigene Node-Klasse mit dem Abstand der Knoten auf max. Meine version basiert auf dem Stil des ersten-code:

class Node { //my version
  string name;
  vector<Node*> adj;
  int dist; //initially set to int max
  int prev;
  int index;
}

procedure BFS(G, Node* v)
    let Q be a queue
    v->distance = 0
    Q.push(v)
    label v as discovered
    while Q is not empty
      Node* n = q.front();
      v = Q.pop()
      for each node w adj vector of n
         Node* neighbor = G[w]
         if neighbor->distance == max
           neighbor->distance = n->distance + 1
           neighbor->prev = n->index
           q.push(neighbor)

Ich versuche, diesen code auch finden den kürzesten Weg zwischen einem Knoten und einem anderen Knoten. z.B.

procedure BFS(G, Node* from, Node* to)

Wie kann ich ändern, das BFS-code, dies zu tun? Wenn es nicht möglich ist innerhalb dieser Schleife, was andere Weg ist da, es zu tun?

Bitte informieren Sie mich, wenn es eine Verwechslung mit meinem code, oder was ich verlange. Danke!

InformationsquelleAutor maregor | 2015-03-02
Schreibe einen Kommentar