Algorithmus zur Ermittlung der schnellsten Route?


17

Nehmen wir an, wir gehen von 1 auf 5. Die kürzeste Route ist 1-4-3-5 (insgesamt 60 km).

Graph

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?


3
Ist das Hausaufgabe? Ist das nicht nur ein en.wikipedia.org/wiki/Travelling_salesman_problem für das Durchlaufen eines gewichteten Graphen?
StuperUser

9
@StuperUser: Nein, TSP ist eine Schaltung aller Knoten ohne Duplikate. Im Beispielfall ist es beispielsweise nicht erforderlich, Knoten 2 zu treffen.
David Thornley

2
@ DavidThornley Ich verstehe. Dijkstra ist also die kürzeste Route in einer gewichteten Grafik? Und TSP ist auf jedem Knoten unterwegs?
StuperUser

1
@Stuper: Kürzeste Überquerung, ja
BlueRaja - Danny Pflughoeft

2
@StuperUser, nur FYI, TSP ist ein starkes NP-vollständiges Problem ohne Lösung, das in polynomieller Zeit ausgeführt werden kann. ... Jetzt weißt du es.
Riwalk

Antworten:



49

Ja, Dijkstra

Dijkstra funktioniert in dieser Situation genauso gut.
Sie verwenden nur die Zeit und nicht die Distanz als Gewicht jedes Bogens.


9
Typischerweise wird die Distanz in Dijkstra für alle möglichen Dinge gewichtet, Kosten / Maut, Autobahnpräferenzen, Geschwindigkeitsbegrenzungen - nur die Distanz zu verwenden, ist nur der einfachste Niave-Ansatz. Das macht den Algorithmus so clever
Martin Beckett

6
Obwohl Dijsktra dies tun wird, würde ich im Allgemeinen A * für jede ernsthafte Pfadfindungsarbeit wählen. Heuristiken werden viel helfen.
Mircea Chirea

6
Link: Ein * Suchalgorithmus . Es ist eine Erweiterung der Dijkstra-Methode.
mgkrebbs

Solange es eine anwendbare Heuristik gibt, wird A * der von Dijkstra (in Bezug auf die Leistung) überlegen sein.
Bummzack

Eine zulässige Heuristik wäre hier etwas schwierig zu finden, wenn man bedenkt, dass wir offenbar viele Faktoren berücksichtigen (z. B. Staus).
pwny

16

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.


Ja, tut mir leid, wenn ich nicht die richtige Formulierung verwendet habe. Was ich
meine

11

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.


10

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:

Dijkstra

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.