![]() |
Wegfindung: Wie funktioniert sowas (theoretisch)
Hi @ll,
mich würde mal interessieren, wie Wegfindungsalgorithmen funzen. Also bei riesigen Karten (zum Beispiel bei Routenplanern, wie Map&Guide, die gleich Kartenh für ganze Europ haben, mit allen Nebenstarßen usw.) ist es schließlich (fast) unmöglich einfach alles auszuprbieren. Es sei denn man hat den neuen Highend 20GB RAM-Computer mit 50 Gigahertz und 20 Jahre Zeit... Also mal rein von der Theorie: Wie kommt man an den kürzesten/schnellsten Weg? Bitte jetzt nicht Seitenweise Delphi-code, ich glaube, das würde ich nicht verstehen ;-). Nur mal so, auf welchen Grundgedanken diese Algorithmen basieren... Und wie ist das mit "Kombinationstests"? Also ich meine, zum Beispiel ein Stundenplangenerator: Wenn man sowas schriben will (besonders in der Oberstufe: Alle Wahlzettel eingeben und das Programm rechnet sich die optimale Blockung aus). Das funktioniert doch betsimmt ähnlich, oder wie sehe ich das? |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Sowas funktioniert anhand von
![]() (sry, wenn ich den herrn falsch geschrieben hab ;) ) Das mit stundenplänen-generatoren ist glaub ich dynamische programmierung, bin mir aber nicht sicher! |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
moin
oder wowas geht auch nach einem Ameisen-Algorithmus. musst mal auf die website der c't gehen. unter dem soft-link 0505204 solltest du dazu was finden. |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
|
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Routenplaner haben schon bestimtme Routen drin z.b wenn man von Hamburg -> München will wird nur berechnet von Hamburg -> Autobahn und Autobahn -> München, der Rest ist (autobahn zu autobahn) ist schon fest eingespeichert
|
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Zitat:
mfg |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Bei den Themen "kuerzester Weg" oder "Navigation" kommt man ums Thema "Graphenalgorithmen" nicht rum.
In der Praxis sieht es so aus (grob abstrahiert), dass jede Stadt, jeder Ort ein Knoten ist, welche teilweise mit Graphen verbunden sind (A->B fuer Einbahnstrassen, A<->B fuer "normale" Strassen). Jeder Graph hat nun zusaetzlich zur Laenge auch die Durchschnittsgeschwindigkeit und vielleicht noch mehr gespeichert, und wenn man sich die Route von ABC nach XYZ berechnen laesst, so wird entweder die Verbindung mit der kuerzesten Laenge oder die Verbindung mit der kuerzesten Fahrzeit (t=s/v) gesucht, je nach Einstellung. In der Praxis ist sowas natuerlich sehr komplex, ihr koennt ja mal ueberlegen wie viele Knoten so ein Graphenverbund fuer Europa haben muss ;) Greetz alcaeus |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Gabs hier im Forum schoneinmal,
![]() |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
oh man, vielen Dank für eure Antworten. Ich habe mir die Links noch nicht angesehen, aber das mache ich bald, heute ist mir das zu viel ;-).
Aber das scheint ja ganz vielversprechend :party: |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Ich hätte dazu noch eine Frage, reine Neugier, programmiere also (im Moment) nichts in der Richtung.
Wenn eine Navi-Software z.B. die Daten für Deutschland hat und ich will von Hamburg nach Berlin, dann würde ja z.B. Dijkstra auch die Wege nach München oder Nürnberg beachten. Ich gehe mal davon aus, dass das in der praktischen Anwendung nicht geschieht, dass also der Graph eingegerenzt wird, bevor der kürzeste Weg gesucht wird. Weiß jemand, nach welchem Prinzip diese Eingrenzung gemacht wird? |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Zitat:
Also es gibt da sicherlich noch andere Möglichkeiten, aber zumindest eine, die gerne angewandt wird: Wenn du zwei Punkt hast und du kennst bereits eine mögliche Entfernung zwischen den beiden Punkten, dann kannst du die beiden Punkte als Mittelpunkte für eine Ellipse verwenden. Die Summe der Entfernung der Ellipsenaussenseite (wie heisst das richtig? ^^) zu den beiden Mittelpunkten ist dabei immer deine bekannte Entfernung. (Klingt kompliziert, das ist aber nur so, weil das mit etwas Grafik wesentlich einfacher zu erklären wäre *grr*). Dann weisst du, dass jedes mal, wenn du die Ellipse verlässt die Wegsuche abbrechen kannst, weil der dir bekannte Weg in jedem Fall kürzer ist. Fragt sich nur, was du als "bekannte Entfernung" verwendest. Vielleicht einfach Luftlinie*2 und wenn er dann nichts findet, dann langsam vergrößern? Oder man nimmt wirklich erstmal ein vereinfachtes Netz (ein vorberechnetes mit wesentlich weniger Knoten) anhand dessen man die Entfernung abschätzen kann. |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Also veranshaulicht eine Ellipse, implementiert wird eine Ar Grenwert. Ist ja wirklich simpel, wenn man es so löst. xD
Vielen Dank, das war alles, was ich wissen wollte. :thumb: |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Über genetische Algorithmen können Routenplaner auch gesteuert werden.
|
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
vielleicht hilft Dir ja das Animationsprogramm zum Traveling salesman Problem weiter :-)
![]() |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Hach, TSP. ich liebe solche Probleme... :coder:
|
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Zitat:
|
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Zitat:
![]() |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Guck mal hier:
![]() |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Ich muss mich gerade an den Labyrinth-Algorhythmus erinnern. "Wie kommt man am sichersten aus einem Labyrinth heraus? Indem man immer an der linken Wand entlanggeht." Allerdings würde dieser u. U. für die Strecke Hamburg - Berlin auch über München führen.
Danke für das Tutorial und den Algorhythmus. |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Zitat:
Das ganze funktioniert allerdings nur mit "2-Dimensionalen" Labyrinthen. Also wenn da Brücken und Tunnel drin vorkommen, wie es im Straßennetz der Fall ist, kann es sein, dass du nur im Kreis läufst. So Algorithmen kann man natürlich auch nur anwenden, wenn man alle existierenden Straßen kennt. Bei einem Labyrinth ist das ja in der Regel nicht der Fall. Da hast du mit Dijkstra leider keine Chance ;-). |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Bei Dijkstra reicht es doch die Straßen, die von der Kreuzung, an der man sich befindet, abgehen und die Straßen, in denen man schon war, zu kennen, oder sehe ich das grade falsch?
|
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Zitat:
Mit A* wird das möglicherweise gehen, da A* mit Heuristik arbeitet. Das ist wesentlich schneller, liefert aber nicht unbedingt den kürzesten Weg. Aber so genau weiss ich das auch nicht, da ich mich mit A* nie genau beschäftigt habe ;-). |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Dijkstra liefert doch von einem festen Starpunkt aus den kürzesten Weg zu jedem Knoten. Sackgassen bilden da keine Ausnahme. Und dabei geht der Algorithmus so vor, dass von einem Knoten aus alle Abzweigungen nimmt (nur die von der aktuellen Kreuzung ausgehenden Straßen) und wenn er eine kürzere Verbindung zu einem Knoten findet, dann wird die alter Verbindung (also ein schon bekannter Weg) gelöscht.
Dijkstra funktioniert meiner Meinung nach in einem Labyrinth. |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Ja, das ist schon richtig. Wenn ich von der Frage ausgehe "wie komme ich am sichersten aus einem Lapyrinth", dann gehe ich davon aus, dass du dich in einem Lapyrinth befindest, dass du nicht kennst, sprich zu dem du keine Karte hast um dir den Weg zu berechnen.
Um Dijkstra anwenden zu könenn müsstest du dann erstmal das komplette Lapyrinth abgehen. Das Karte zeichenen und Weg berechnen könntest du dann natürlich in einem machen und dir somit einen Arbeitsschritt sparen, aber vermutlich hast du den Ausgang gefunden, bevor du dir sicher sein kannst den kürzesten Weg von deinem Ausgangspunkt gefunden zu haben. Da du dich jedoch ständig im Labyrinth fortbewegen musst, ändert sich dein Startknoten quasi die ganze Zeit und am Ende interessierst du dich sowieso nichtmehr für den Weg zu deinem ehemaligen Startknoten... |
Re: Wegfindung: Wie funktioniert sowas (theoretisch)
Den sichersten/kürzesten Weg aus einem Labyrinth kannst du mit keinem Algo sicher finden, ohne z.B. in Sackgassen zu laufen oder vershciedene Wege zu probieren. Das kann weder ein PC, noch ein Mensch. Und wenn ich richtig informiert bin, kannst du mit einer heuristischen Methode ohne globale Karte auch nichts anfangen,...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz