Ändern der Dijkstra-Algorithmus, um den Kürzesten Pfad Zwischen Zwei Knoten

So, ich habe gesehen, ähnliche Fragen dazu, aber nicht ganz genau, was ich Suche. Ich brauche zum ändern der Dijkstra-Algorithmus zur Rückkehr der kürzeste Weg zwischen einem Scheitelpunkt S (source) und ein Knoten X (Ziel). Ich glaube, ich habe herausgefunden, was zu tun ist, aber ich möchte etwas helfen. Hier ist der pseudocode habe ich geändert.

 1  function Dijkstra(Graph, source, destination):
 2      for each vertex v in Graph:                                //Initializations
 3          dist[v] := infinity ;                                  //Unknown distance function from 
 4                                                                 //source to v
 5          previous[v] := undefined ;                             //Previous node in optimal path
 6      end for                                                    //from source
 7      
 8      dist[source] := 0 ;                                        //Distance from source to source
 9      Q := the set of all nodes in Graph ;                       //All nodes in the graph are
10                                                                 //unoptimized - thus are in Q
11      while Q is not empty:                                      //The main loop
12          u := vertex in Q with smallest distance in dist[] ;    //Start node in first case
13          remove u from Q ;
14          if dist[u] = infinity:
15              break ;                                            //all remaining vertices are
16          end if                                                 //inaccessible from source
17          
18          for each neighbor v of u:                              //where v has not yet been 
19                                                                 //removed from Q.
20              alt := dist[u] + dist_between(u, v) ;
21              if alt < dist[v]:                                  //Relax (u,v,a)
22                  dist[v] := alt ;
23                  previous[v] := u ;
24                  decrease-key v in Q;                           //Reorder v in the Queue
25              end if
26          end for
27      end while
28  return dist[destination];

Den code stammt von Wikipedia und modifiziert werden: http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm

Schaut das richtig?

  • Warum würden Sie brauchen, um es zu ändern? Das ist genau das, was es tut. Wenn man alle kantengewichte auf 1.
  • Dies ist der code, den ich bereits geändert. Also wenn es funktioniert dann Super.
  • Auch, wie der vertex-Auswahl in Dijkstra ist greedy, sobald du "u = destination", können Sie brechen die Schleife ab.
  • das macht sehr viel Sinn. Danke.
InformationsquelleAutor csnate | 2012-11-19
Schreibe einen Kommentar