Ich benutze JGraphT für die Implementierung eines Bellman Ford kürzesten Pfad-Algorithmus in Java. Da es einige Kanten gibt, die vorzuziehen sind, wird deren Kantengewicht auf -1 gesetzt.JGraphT vermeiden Schleifen (Bellman Ford)
Zum Beispiel:
< A -> B: 10
< A -> C: 10
< C -> B: -1
< B -> D : 10
In diesem Fall sollte der Pfad wie folgt aussehen: A -> C -> B -> D. Der Unterpfad A- > C-> B ist A-> B vorzuziehen.
Jetzt ist das Problem: Der Algorithmus findet Schleifen zwischen C und B, so dass die C-> B und B-> C Pfade mehrmals hinzugefügt werden (um die gesamten Pfadkosten seit dem Gewicht von B < -> zu verringern) C ist negativ).
Jetzt die Frage: ist es möglich, solche Schleifen zu vermeiden? Ich habe keine Option in der API gefunden. Die isAllowingLoops() -Methode des Graph-Objekts gibt "false" zurück.
Können Sie mir einen Hinweis geben, was ich hier tun soll?
Vielen Dank im Voraus!