Kürzeste route zwischen mehreren Punkten
Ich muss die kürzeste Strecke zwischen mehreren Punkten. Lassen Sie uns sagen, dass ich diese vier Punkte:
var startPoint = new Point(1, 1);
var pointsToGoPast = new List<Point> { new Point(3,1); new Point(2,4); };
var endPoint = new Point(10, 10);
So, ich möchte, um herauszufinden, welche Punkte gehen vorbei an den ersten, um die kürzeste route vom Startpunkt zum Endpunkt.
Kann mir jemand helfen?
Update: Es hat zu gehen, hinter jeder der Punkte in der pointsToGoPast Liste. Die Kosten sind auch für jede route.
- Sie kann sich von jedem Punkt zu jedem Punkt direkt? Was die Kosten zwischen 2 Punkten? Ich würde mit dem en.wikipedia.org/wiki/Dijkstra's_algorithm
- Dijkstra löst dieses problem wieder in den sechziger Jahren. Er ist nun Weg, haben Sie, um den Algorithmus selbst: en.wikipedia.org/wiki/Dijkstra%27s_algorithm
- Wollen Sie jedem zeigen, oder einfach nur den kürzesten Weg zu finden? Kürzeste Weg ist leichter, zu besuchen, jeder Punkt ist viel schwieriger. Suche für die Travelling-Salesman-problem für einen überblick über die Komplexität.
- Möglich, Duplikat der die Berechnung der kürzesten route zwischen zwei Punkten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies tun, indem Sie Dijkstra ' s Algorithmus.
Beispiel-Projekt mit dem code hier
Das einzige, was sich ändern muss ist, das die GEWICHTE in das Projekt, da das Gewicht auf der Grundlage der Entfernung zwischen den beiden Punkten. (So müssen Sie zum ändern der
Location
zu speichernPoint
und dieConnection
zu berechnen, das Gewicht (Distanz) in den Konstruktor.Wikipedia hat einen sehr schönen Artikel über den Algorithmus
Der Dijkstra-Algorithmus
Wie bereits darauf hingewiesen worden, es ist nicht klar, was das Kosten wird, der sich von einem Punkt zu einem anderen Punkt. Ist es nur die Distanz zwischen den Punkten?
Trotzdem, unabhängig davon, wie ein problem gelöst werden kann mit herkömmlichen Linearen Programmierung.
Ich habe gerade fertig macht eine C# - Bibliothek zur Vereinfachung der kürzeste-Pfad-Probleme. Herunterladbare hier.
Es ist noch mehr Arbeit zu tun, die auf dieser Bibliothek, aber es sollte Sie geben, was Sie möchten, in einer sehr einfachen Art und Weise.
Grüße,
Bruce.
Gelöst werden kann, einfach wenn Sie die SQL server
Ergebnis zurückgegeben wird, in Meter so gerade Division durch 1000 für Km oder 1609.344 für Meilen