Zum Inhalt springen

Algorithmus für längsten Weg


m.sirin

Empfohlene Beiträge

Moin ,

gibt es einen Algorithmus, der mit aus einer Menge von Wegen, die miteinander verbunden sind, den längsten möglichen Pfad ausgibt?

Start oder Endpunkt ist dabei nicht bekannt.D.h. die Suche soll bei irgendeinem Teilweg beginnen und zum Schluss den längsten Weg ausgeben.

Ich hab schon daran gedacht den Dijkstra-Algorithmus umzufunktionieren, aber bevor ich das tue, frage ich hier, ob es nicht eine dumme Idee ist?

wege.png

Alle möglichen Wege: schwarz.

Rot: Gesuchter Weg.

Grüße

m.sirin

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das kann so nicht funktionieren, denn wenn Du weder Start noch Endpunkt hast, kannst Du keinen Weg innerhalb Deines Graphen definieren: Weg (Graphentheorie) ? Wikipedia

Eine andere Bezeichnung für Weg ist Kantenfolge (vgl. Kantenzug). Den Knoten v1 nennt man Startknoten von W und den Knoten vn Endknoten von W. Einen besonderen Weg stellt der Eulersche Weg dar.

Ob ich nun formal die Knoten mit in die Menge der Kanten mitaufnehme ist dabei unerheblich. Generell wäre die Frage, ob es wirklich "der" längste Weg sein muss, denn hierbei wirst Du nur die Möglichkeit haben, alle Wege zu prüfen, was zur NP-Vollständigkeit führt.

Zweitens was ist, wenn Du mehrere Wege hast, die gleich lang sind? Wie sehen die Gewichte der Kanten aus, nimmst Du pauschal mit 1 an oder wichtest Du ggf? Was ist mit redundanten Wegen / Kreisen / Zyklen?

Ansätze wäre über den Spannbaum ? Wikipedia, der zunächst einmal alle Knoten in einem Graph berührt, damit Du keine redundanten Pfade hast.

Weiterhin wäre z.B. eine Möglichkeit nach dem Bellman-Algorithmus ? Wikipedia dem aktuellen Knoten die längsten/kürzesten Kante nimmst. Damit solltest Du z.B. eine gute Näherung erreichen.

Letztendlich würde ich das Problem aber in das Problem des Handlungsreisenden ? Wikipedia (TSP) einordnen und entsprechend dort die Algorithmen verwenden

Bearbeitet von flashpixx
Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

Das kann so nicht funktionieren, denn wenn Du weder Start noch Endpunkt hast, kannst Du keinen Weg innerhalb Deines Graphen definieren: Weg (Graphentheorie) ? Wikipedia

Achso schade. Die besagten Mengen bestehen nicht aus vielen Teilen.. Da dachte ich, dass ich den Dijsktra umschreibe, d.h. eine Zufallskante auswählen und den "Längsten-Weg-Dijsktra" in zwei Richtungen loslassen (bzw. in alle Richtungen, die von dieser aktuellen Kante ausgehen). Anschließend werden die Ergebnisse von zwei Richtungen addiert.

Oder so ähnlich :D

Ob ich nun formal die Knoten mit in die Menge der Kanten mitaufnehme ist dabei unerheblich. Generell wäre die Frage, ob es wirklich "der" längste Weg sein muss, denn hierbei wirst Du nur die Möglichkeit haben, alle Wege zu prüfen, was zur NP-Vollständigkeit führt.

Zweitens was ist, wenn Du mehrere Wege hast, die gleich lang sind? Wie sehen die Gewichte der Kanten aus, nimmst Du pauschal mit 1 an oder wichtest Du ggf? Was ist mit redundanten Wegen / Kreisen / Zyklen?

Das alles Beschriebene ist kein Problem:

Bei mehreren Wegen gleicher Länge wird zufällig eins ausgewählt.

Gewichte der Kanten sind immer 1, ja.

Ansätze wäre über den Spannbaum ? Wikipedia, der zunächst einmal alle Knoten in einem Graph berührt, damit Du keine redundanten Pfade hast.

Weiterhin wäre z.B. eine Möglichkeit nach dem Bellman-Algorithmus ? Wikipedia dem aktuellen Knoten die längsten/kürzesten Kante nimmst. Damit solltest Du z.B. eine gute Näherung erreichen.

Letztendlich würde ich das Problem aber in das Problem des Handlungsreisenden ? Wikipedia (TSP) einordnen und entsprechend dort die Algorithmen verwenden

Das letzte hatte ich auch im Sinn.

Danke, ich werde mir das dann genauer angucken!

Grüße

m.sirin

Link zu diesem Kommentar
Auf anderen Seiten teilen

Achso schade. Die besagten Mengen bestehen nicht aus vielen Teilen.. Da dachte ich, dass ich den Dijsktra umschreibe, d.h. eine Zufallskante auswählen und den "Längsten-Weg-Dijsktra" in zwei Richtungen loslassen (bzw. in alle Richtungen, die von dieser aktuellen Kante ausgehen). Anschließend werden die Ergebnisse von zwei Richtungen addiert.

Oder so ähnlich :D

Naja aber wenn Du von 2 willkürlich gewählten Knoten los gehst und vorher nicht sicherstellst, dass es genau einen Weg zu jedem Knoten gibt (siehe Spannbaum), kann es Dir passieren, dass Du aneinander vorbei läufst

Was aber so in diese Richtung geht wäre Ameisenalgorithmus ? Wikipedia

Aber beachte, dass das eine Heuristik ist.

Interessanter Thread, würde mich freuen, wenn es da noch mehr gibt :bimei

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...