2016-04-18 9 views
1

Sagen wir, ich möchte eine Navigationsroute von San Francisco nach New York zeichnen. Es gibt ungefähr tausend Dienste, die das kostenlos tun können. Es gibt auch viele Dienste, die das Problem des reisenden Verkäufers lösen und eine Route durch 6 Städte berechnen können, um die optimale Reihenfolge herauszufinden. Das sind alles gelöste Probleme.Wie könnte ich eine Kartenroute berechnen, die über optionale Wegpunkte von einem Startpunkt zu einem Zielpunkt führt?

Jetzt sagen wir, ich möchte einen Kurs von SF nach NY planen, halten an EV-Ladegeräte aus einer Datenbank auf dem Weg.

Das ist schwieriger als nur eine Reihe von Wegpunkten, weil ich nicht bei jedem anhalten muss. Ich muss nur meinen Weg beschränken, um von einem zum nächsten zu springen.

Wie kann ich das herausfinden? Gibt es einen Algorithmus, mit dem ich das vereinfachen kann? Oder vielleicht könnte ich OSRM() verwenden, um mir irgendwie zu helfen, anstatt mich auf die öffentlichen APIs zu verlassen. Wir könnten das brutal erzwingen und einfach die Routen berechnen, bis wir die kürzeste finden, die funktioniert, aber ich konnte sehen, dass das ziemlich schnell auseinander fällt.

+0

von jedem Wegpunkt die Entfernung zum nächsten Punkt berechnen, wenn die Entfernung zur aktuellen Ladung größer ist, dynamisch einen neuen Wegpunkt für das nächste Ladegerät hinzufügen ... –

+0

Das war mein erster Gedanke, aber manchmal muss man einen Umweg machen eine Route, die du normalerweise nicht nehmen würdest. Ich glaube nicht, dass die Suche nach dem nächsten Ladegerät in allen Situationen funktionieren würde, besonders wenn kein Ladegerät in der Nähe ist. –

+0

Es ist unklar, wie viele dieser "optionalen" Wegpunkte tatsächlich notwendig sind: Sie geben eine obere Grenze ("Ich muss nicht bei jedem stoppen"), aber keine untere Grenze. Warum also nicht alle überspringen? Sie sind schließlich optional. –

Antwort

3

Konstruieren Sie einen gerichteten Graphen. Die Wegpunkte sind die Knoten, und Sie legen eine gerichtete gewichtete Kante vom Wegpunkt A zum Wegpunkt B, wenn die Entfernung von einem voll aufgeladenen Auto zurückgelegt werden kann. Dann müssen Sie den kürzesten Pfad in einem gewichteten gerichteten Diagramm finden.

+0

Das war sehr hilfreich. Ich denke, ich kann eine Bibliothek mit gerichteten Graphen verwenden, um beim Erstellen des Graphen zu helfen, die Gewichte anhand der Energiemenge zu berechnen, die auf der Route benötigt wird, und dann den Pfad zu finden, der am wenigsten Energie verbraucht. –