Der kostenminimale Fluss nutzt nicht die teure Kante mit Kosten 3.
Die Planung von Straßennetzen, Pipelines or Datennetzwerken sind die Motivation für die Flussprobleme genannte Klasse von Optimierungsproblem. Der charakterisierende Aspekt der zu planenden Netzwerke ist, dass eine Art Ressource durch die Kanten eines Netzwerks transportiert werden muss, welche jedoch nur eine bestimmte Menge an Fluss zulassen. Für manche der Optimierungsprobleme haben diese Transportkanten noch weitere Eigenschaften, welche es zum Beispiel motivieren, den Kanten Kosten zuzuweisen - beispielsweise Mautgebühren für die Nutzung von Straßen.
In solch einer Problemstellung ist es interessant, wie ein bestimmter Fluss mit minimalen Kosten durch das Netzwerk geschickt werden kann. Diese Problem wird das Min-Cost Flow Problem genannt.
Knoten | |
S/T Knoten | |
Kante mit Fluss 7, Kapazität 10 und Kosten 1 | |
Kante im Residualnetzwerk, Kosten 1 | |
Kante auf negativem Kreis, Kosten 1 |
Klicke auf einen Knoten, um ihn als Quelle/Startknoten s auszuwählen
Klick auf einen Knoten, um ihn als Senke/Zielknoten t auszuwählen
Der Algorithmus kann nun starten. Klicke auf Nächster Schritt, um ihn zu starten
Der Algorithmus berechnet den maximalen Fluss ohne Berücksichtigung der Kantenkosten
Die Hauptschleife sucht in jeder Iteration nach negativen Kreisen im Residualgraphen
Durch den Bellman-Ford Algorithmus suchen wir im Residualgraphen nach negativen Kreisen
Der negative Kreis wird aus dem Residualgraphen entfernt, indem wir mindestens eine seiner Kanten saturieren (das heißt mit Fluss auffüllen)
Der Algorithmus ist fertig!
s ← wähle(v)
t ← wähle(v)
BEGIN
(* Initialisiere max. Fluss *)
BERECHNE MAX FLOW
(* Hauptschleife *)
WHILE negativer Kreis evtl. vorhanden DO
FÜHRE BELLMAN-FORD AUS
IF negativer Kreis gefunden
IDENTIFIZIERE Kreiskanten
Anpassung ← min(cost[e] |
e ∈ Kreiskanten)
FOR e ∈ Kreiskanten
flow[e] += Anpassung
END
Kreis | Anpassung |
---|---|
- | - |
Du kannst die Anwendung in einem anderen Browserfenster öffnen, um parallel einen anderen Tab zu lesen.