Nehmen wir an, wir gehen von 1 auf 5. Die kürzeste Route ist 1-4-3-5 (insgesamt 60 km).
Dazu können wir den Dijkstra-Algorithmus verwenden.
Das Problem ist nun, dass die kürzeste Route aufgrund von Staus oder anderen Faktoren nicht immer die schnellste ist.
Beispielsweise:
- 1-2 hat bekanntermaßen häufige Staus, daher sollte dies vermieden werden.
- Plötzlich passiert ein Autounfall entlang 4-3, also sollte es auch vermieden werden.
- Etc...
Wir können also wahrscheinlich auf der Route 1-4-5 beschleunigen, da es keine Staus / Unfälle gibt, und kommen um 5 schneller an.
Nun, das ist die allgemeine Idee, und ich habe noch nicht über weitere Details nachgedacht.
Gibt es einen Algorithmus, um dieses Problem zu lösen?
Antworten:
Achten Sie darauf, dass Sie sich nicht von Braess 'Paradoxon überraschen lassen, da Sie eine Überlastung verursacht haben . Wenn jeder den optimalen Weg wählt, hat dies eine schlechtere Reisezeit für alle zur Folge.
quelle
Ja, Dijkstra
Dijkstra funktioniert in dieser Situation genauso gut.
Sie verwenden nur die Zeit und nicht die Distanz als Gewicht jedes Bogens.
quelle
Ja. Der Dijkstra-Algorithmus löst dieses Problem.
Das Problem in Ihrem Fall ist, dass Sie automatisch davon ausgehen, dass der kürzeste Weg der zurückgelegten Strecke entspricht, obwohl er den KOSTEN einer Route angemessener entspricht.
Wenn ein Pfad eine Straßensperre aufweist, sollte sein COST höher sein, und der Algorithmus gilt weiterhin.
quelle
Sie sollten nur in der Lage sein, Ihre Entfernung durch die Zeit zwischen den Knoten zu ersetzen und auf die gleiche Weise zu lösen.
quelle
Dijkstra
Wie gesagt, es wird nicht nur für kürzeste Strecken verwendet. Ich glaube, diese Animation gibt ein gutes Verständnis für die "Macht" (mangels eines besseren Wortes) von Dijkstra:
quelle