Ich arbeite gerade an Dijkstra's Kürzestem Pfadproblem. Ich habe nichts Spezifisches in diesem Projekt, Algorithmus ist Standard (implementieren mit Paaren), außer dass ich die Arten von Kanten von einem Scheitelpunkt zum anderen drucken muss.C++ Dijkstra-Algorithmus - Name/Typ der Druckkante
Stellen Sie sich vor, ich habe 4 Ecken und 5 Kanten. Es gibt ein Paar von Scheitelpunkten p (v1, v2), so dass es zwei oder mehr Kanten gibt, die v1 und v2 verbinden. Zum Beispiel wollen wir die Entfernung von London nach Paris finden. Wir wissen, dass wir beide mit dem Auto fahren können (eine Art von Kante) oder wir können ein Flugticket (eine andere Art von Kante) kaufen. Was ich tun möchte, ist die Art der Kante zu drucken.
Beispiel: Ich habe zwei Möglichkeiten, Paris von London zu erreichen: London -> Calais -> Paris, mindestens 5 Stunden, mit dem Auto; London -> Paris, min. 1 Stunde, mit dem Flugzeug.
Ich weiß genau, wie min-Zeit oder min-Abstand gedruckt wird, wie der Pfad, etc. gedruckt wird. Aber, wie kann ich die Art der Kante (Art des Transports) wie "mit dem Flugzeug" oder "mit dem Auto '? Hier ist, was ich versuchte:
struct neighbor {
int target_vertex;
double weight;
int type;
// for type: 0 - car
// 1 - bus
// 2 - plane
};
Aber dennoch kann ich nicht herausfinden, wie würde ich diese Kante ‚Typen‘ speichern, während kürzesten Weg zu berechnen.
-Code hier: https://gist.github.com/anonymous/5943c448e47ebf0d3964baa53361459d
Dies ist das Problem, dass es die Typen enthält, die nicht existieren. Zum Beispiel von einer Stadt zur anderen ist der einzige Weg mit dem Flugzeug (kürzeste). Aber es sagt -> "Bus Bus Flugzeug" – oneturkmen