Ich implementiere den Algorithmus zum Aufheben des Zyklus, um eine optimale Lösung für das Problem des minimalen Kostenflusses zu finden. Durch das Auffinden und Entfernen negativer Kostenzyklen im Restnetz werden die Gesamtkosten in jeder Runde gesenkt. Um einen negativen Zyklus zu finden, verwende ich den Bellman-Ford-Algorithmus.
Mein Problem ist: Bellman-ford findet nur Zyklen, die von der Quelle aus erreichbar sind, aber ich muss auch Zyklen finden, die nicht erreichbar sind.
Beispiel: Im folgenden Netzwerk haben wir bereits einen maximalen Fluss angewendet. Die Kante macht es sehr teuer. Im Restnetz haben wir einen negativen Kostenzyklus mit Kapazität . Wenn wir es entfernen, erhalten wir eine billigere Lösung mit den Kanten und , aber wir können es nicht von der Quelle .1( C , T ) S.
Etiketten: Durchfluss / Kapazität, Kosten
Natürlich könnte ich Bellman-ford wiederholt mit jedem Knoten als Quelle ausführen, aber das klingt nicht nach einer guten Lösung. Ich bin ein wenig verwirrt, weil alle Papiere, die ich lese, diesen Schritt zu überspringen scheinen.
Können Sie mir sagen, wie man mit Bellman-Ford jeden negativen Zyklus findet (erreichbar oder nicht)? Und wenn nicht möglich, welchen anderen Algorithmus schlagen Sie vor?