Den kürzesten Weg bei negativen Zyklen finden


13

Bei einem gerichteten zyklischen Graphen, bei dem die Gewichtung jeder Kante negativ sein kann, ist das Konzept eines "kürzesten Pfades" nur dann sinnvoll, wenn es keine negativen Zyklen gibt. In diesem Fall können Sie den Bellman-Ford-Algorithmus anwenden.

Ich bin jedoch daran interessiert, den kürzesten Weg zwischen zwei Scheitelpunkten zu finden, bei dem es nicht um Radfahren geht (dh unter der Bedingung, dass Sie denselben Scheitelpunkt möglicherweise nicht zweimal besuchen). Ist dieses Problem gut untersucht? Kann eine Variante des Bellman-Ford-Algorithmus verwendet werden, und wenn nicht, gibt es eine andere Lösung?

Ich interessiere mich auch für das äquivalente All-Pair-Problem, für das ich ansonsten Floyd-Warshall anwenden könnte.

Antworten:


23

Pfade ohne wiederholte Eckpunkte werden als einfache Pfade bezeichnet . Sie suchen also nach dem kürzesten einfachen Pfad in einem Diagramm mit negativen Zyklen.

Dies kann durch das Problem mit dem längsten Pfad verringert werden . Wenn es einen schnellen Löser für Ihr Problem gäbe, würde ein Diagramm mit nur positiven Kantengewichten, Negieren aller Kantengewichte und Ausführen des Lösers den längsten Pfad im ursprünglichen Diagramm ergeben.

Dein Problem ist also NP-schwer.


1
Das ist eine schöne Antwort. Ich habe mehrere Leute nach diesem IRL gefragt, ohne Lösungen zu finden, und als ich ihnen das erklärte, war ihre Reaktion dieselbe wie meine - "natürlich fühle ich mich jetzt so dumm".
Jleahy
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.