Das Problem des minimalen Kostenflusses ( MCFP ) ist ein Optimierungs- und Entscheidungsproblem , das den kostengünstigsten Weg zum Transport einer bestimmten Warenmenge durch ein Flussnetzwerk sucht. Eine typische Anwendung ist die Suche nach der optimalen Lieferroute von einer Fabrik zu einem Lager, wobei das Straßennetz über eine bestimmte Kapazität und damit verbundene Kosten verfügt. Das Problem des minimalen Kostenflusses zählt zu den grundlegendsten aller Fluss- und Zirkulationsprobleme, da sich die meisten anderen Probleme dieser Art als solches formulieren und effizient mit dem Netzwerk-Simplex-Algorithmus lösen lassen .

Definition

Ein Flussnetzwerk ist ein gerichteter Graph mit einem Quellknoten und einem Zielknoten , wobei jede Kante eine Kapazität , einen Fluss und Kosten besitzt . Die meisten Algorithmen zur Berechnung minimaler Flusskosten unterstützen Kanten mit negativen Kosten. Die Kosten für das Senden dieses Flusses entlang einer Kante betragen . Das Problem erfordert, dass eine bestimmte Flussmenge von der Quelle zur Zieladresse gesendet wird .

Die Problemdefinition besteht darin, die Gesamtkosten des Flusses über alle Kanten zu minimieren:

unter den Einschränkungen

Kapazitätsbeschränkungen :
Schiefe Symmetrie :
Durchflusserhaltung :
Erforderlicher Ablauf :

Bezug zu anderen Problemen

Eine Variante dieses Problems besteht darin, einen maximalen Fluss zu finden, der unter den Lösungen mit maximalem Fluss die geringsten Kosten aufweist. Dies könnte man als Problem des minimalen Kosten-Maximalflusses bezeichnen und es ist nützlich, um minimale Kosten-Maximal- Matchings zu finden .

Bei manchen Lösungen lässt sich der minimale Kosten-Maximalfluss direkt ermitteln. Andernfalls kann man den maximalen Fluss durch eine binäre Suche finden .

Ein verwandtes Problem ist das Zirkulationsproblem mit minimalen Kosten , das zur Lösung von Flussproblemen mit minimalen Kosten verwendet werden kann. Dieses Problem kennt keine Quelle und Senke; stattdessen existieren Kosten sowie untere und obere Schranken für jede Kante. Gesucht werden Flussmengen innerhalb dieser Grenzen, die den Fluss an jedem Knoten ausgleichen und die Summe der Kosten mal Fluss über alle Kanten minimieren. Jede Flussproblematik mit minimalen Kosten lässt sich in eine Zirkulationsproblematik mit minimalen Kosten umwandeln, indem die untere Schranke aller Kanten auf null gesetzt und anschließend eine zusätzliche Kante von der Senke zur Quelle mit der Kapazität und der unteren Schranke erstellt wird . Dadurch wird der Gesamtfluss von der Senke zur Quelle auf den Wert gesetzt .

Die folgenden Probleme sind Spezialfälle des Problems des minimalen Kostenflusses (wir geben nacheinander kurze Skizzen der jeweils anwendbaren Reduktionen an): [ 1 ]

  • Kürzeste-Wege-Problem (von einer Quelle aus). Die zulässige Lösung des Kostenflussproblems soll eine Flusseinheit von einer vorgegebenen Quelle zu einer vorgegebenen Senke transportieren . Alle Kanten sollen unbegrenzte Kapazität haben.
  • Maximales Flussproblem . Wähle eine große Nachfrage (groß genug, um den maximalen Fluss zu überschreiten; zum Beispiel die Summe der Kapazitäten vom Quellknoten aus). Setze die Kosten aller Kanten in der maximalen Flussinstanz auf Null und füge eine neue Kante von der Quelle zur Senke mit Einheitskosten und Kapazität hinzu .
  • Zuordnungsproblem . Angenommen, jede Partition in der Bipartition hat Knoten, und die Bipartition wird mit bezeichnet . Jeder Angebotsmenge werden und jeder Nachfragemenge zugeordnet . Jede Kante soll eine Kapazität von 1 haben.

Lösungen

Das Problem des minimalen Kostenflusses kann durch lineare Programmierung gelöst werden , da wir eine lineare Funktion optimieren und alle Nebenbedingungen linear sind.

Abgesehen davon existieren viele kombinatorische Algorithmen. [ 1 ] Einige von ihnen sind Verallgemeinerungen von Algorithmen zur Berechnung des maximalen Flusses , andere verwenden völlig unterschiedliche Ansätze.

Bekannte fundamentale Algorithmen (es gibt viele Varianten):

Algorithmen zur Zyklusunterbrechung

Diese Algorithmen sind iterativ und definieren, ähnlich dem Ford-Fulkerson-Algorithmus, einen Restgraphen. Existiert ein Fluss auf einem Bogen , so ist seine Restkapazität definiert als und seine Restkosten als . Der umgekehrte Bogen (mit negativem Flusswert) hat negative Kosten . Die Algorithmen beginnen mit einem beliebigen zulässigen Fluss und verbessern iterativ die Kosten der Lösung, indem sie den Fluss um Zyklen mit negativen Kosten herumleiten. Beim Algorithmus zur Minimierung der mittleren Zykluskosten wählt der Algorithmus einen Zyklus mit minimalen mittleren Kosten (dem Verhältnis der gesamten Zykluskosten zur Anzahl der Bögen). Ein solcher Zyklus kann in Polynomialzeit gefunden werden (mittels binärer Suche mit dem Bellman-Ford-Algorithmus ), und die Gesamtzahl der Iterationen ist nachweislich polynomiell [ 5 ] .

Anwendung

Bipartite-Matching mit minimalem Gewicht

Reduzierung des bipartiten Matching-Problems mit minimalem Gewicht auf das Problem mit minimalem Kosten-Maximalfluss

Gegeben sei ein bipartiter Graph G = ( A ∪ B , E ) . Ziel ist es, das Matching mit maximaler Kardinalität in G zu finden , das minimale Kosten aufweist. Sei w : E → R eine Gewichtsfunktion auf den Kanten von E. Das Problem des minimalen Gewichts bipartiter Matchings bzw. Zuordnungsproblems besteht darin, ein perfektes Matching M ⊆ E zu finden , dessen Gesamtgewicht minimiert wird. Die Idee ist, dieses Problem auf ein Netzwerkflussproblem zu reduzieren.

Sei G′ = ( V′ = A ∪ B , E′ = E ) . Weise allen Kanten in E′ die Kapazität 1 zu. Füge einen Quellknoten s hinzu und verbinde ihn mit allen Knoten in A′. Füge außerdem einen Senkenknoten t hinzu und verbinde alle Knoten innerhalb der Gruppe B′ mit diesem Knoten. Die Kapazität aller neuen Kanten ist 1 und ihre Kosten sind 0. Es ist bewiesen, dass es genau dann ein perfektes bipartites Matching minimalen Gewichts in G gibt , wenn es einen Fluss minimaler Kosten in G′ gibt . [ 1 ]

Siehe auch

Referenzen

  1. Ravindra K. Ahuja , Thomas L. Magnanti und James B. Orlin (1993). Netzwerkflüsse : Theorie, Algorithmen und Anwendungen . Prentice-Hall, Inc. ISBN 978-0-13-617549-0Die
  2. ^ Morton Klein (1967). „Eine primale Methode für minimale Kostenflüsse mit Anwendungen auf Zuordnungs- und Transportprobleme“. Management Science . 14 (3): 205–220 . CiteSeerX 10.1.1.228.7696 . doi : 10.1287/mnsc.14.3.205 . 
  3. ^ Refael Hassin (1983). „Das Problem des minimalen Kostenflusses: Ein vereinheitlichender Ansatz für bestehende Algorithmen und ein neuer Baumsuchalgorithmus“. Mathematical Programming . 25 : 228–239 . doi : 10.1007/bf02591772 .
  4. ^ Thomas R. Ervolina & S. Thomas McCormick (1993). „Zwei stark polynomische Schnitt-Aufhebungsalgorithmen für minimalen Netzwerkfluss“ . Discrete Applied Mathematics . 4 (2): 133–165 . doi : 10.1016/0166-218x(93)90025-j .
  5. ^ a b Andrew V. Goldberg & Robert E. Tarjan (1989). „Finding minimum-cost circulations by canceling negative cycles“. Journal of the ACM . 36 (4): 873–886 . doi : 10.1145/76359.76368 . hdl : 1721.1/149134 .
  6. ^ Jack Edmonds & Richard M. Karp (1972). „Theoretische Verbesserungen der algorithmischen Effizienz für Netzwerkflussprobleme“ . Journal of the ACM . 19 (2): 248–264 . doi : 10.1145/321694.321699 .
  7. ^ Goldberg, Andrew V. & Tarjan, Robert E. (1990). „Finding minimum-cost circulations by successive approximation“. Mathematics of Operations Research . 15 (3): 430–466 . doi : 10.1287/moor.15.3.430 . hdl : 1721.1/149133 .
  8. ^ James B. Orlin (1997). „Ein primaler Netzwerk-Simplex-Algorithmus mit polynomieller Laufzeit für minimale Kostenflüsse“. Mathematical Programming . 78 (2): 109–129 . doi : 10.1007/bf02614365 . hdl : 1721.1/2584 .