Ich entwickle eine Journey Planner Website. Es gibt nur wenige Dinge, die in diesem Fall derzeit einfach sind. Im Moment wird die Webseite nur in der Lage sein, Busrouten zu planen, die Zeiten von Bussen sind derzeit nicht verfügbar. Das bedeutet, dass wir nur Busrouten in der DB gespeichert haben und da Bus-Timings nicht verfügbar sind, sind Wartezeiten für Reisende nicht relevant. Was verfügbar ist, ist die Zeit und die Entfernung zwischen zwei Haltestellen für einen einzelnen Bus.Öffentliche Verkehrsmittel mit Bussen in der Stadt
Ich denke, dass die Verwendung eines ungerichteten gewichteten Graphen, der die Zeit- und Entfernungskosten jeder Bushaltestelle für jeden einzelnen Bus speichert, der Weg zu gehen wäre. Dann könnte ich den Dijkstra-Algorithmus verwenden, um den kürzesten Pfad zwischen zwei Orten zu berechnen, die vom Benutzer auf der Grundlage der Zeit oder der Entfernung je nach Benutzerpräferenz eingegeben wurden. Ich würde herausfinden, ob zwei oder drei Busse durch einfache C# -Funktionen erforderlich sind, wenn sich die Buslinien an den Haltestellen kreuzen und dann diese Kreuzungshaltestellen verwenden, damit der Reisende den Bus wechseln kann. Aber es würde für jeden Bus eine individuelle Grafik geben. Eine Alternative (nicht sicher, ob dies korrekt ist) wäre, ein Diagramm zu verwenden, das jede Bushaltestelle der Stadt als Knoten enthält, und dann diese Technik zu verwenden, um den Weg zwischen zwei Haltestellen zu finden. Welcher ist der richtige Ansatz? Soll ich anstelle von Dijkstra algo den A * -Algorithmus verwenden?
Ein paar allgemeine Punkte für das Design: Ich möchte die App erweiterbar sein, so dass ich andere Transportmittel später hinzufügen kann, wenn die Notwendigkeit entsteht. Darüber hinaus könnten die Buszeiten auch später hinzugefügt werden, wenn dies ohne größere Änderungen auf der Website möglich ist. Ich habe hier einige Experten gesehen, die an sehr komplexen Transportprojekten gearbeitet haben. Also bitte helfen Sie mir mit der besten Möglichkeit, diese Funktionalität auf die skalierbarste, modulare und erweiterbare Art und Weise zu implementieren.
Sehr gültiger Punkt! Ich weiß nicht, wie ich das vermisst habe. Es wird immer komplexer, da ich gezwungen bin zu denken :( – NAB