Inkrementeller maximaler Durchfluss in dynamischen Diagrammen

12

Ich suche nach einem schnellen Algorithmus zur Berechnung des maximalen Durchflusses in dynamischen Diagrammen. dh wenn ein Graph G=(V,E) und , haben wir den maximalen Fluss in von nach . Dann wird der neue / alte Knoten mit seinen entsprechenden Kanten hinzugefügt / gelöscht, um einen Graphen . Was ist ein maximaler Durchfluss in einem neu erstellten Diagramm? Gibt es eine Möglichkeit, die Neuberechnung des maximalen Durchflusses zu verhindern?F G s t u G 1s,tVFGstuG1

Jede Vorverarbeitung, die nicht sehr zeit- und speicherintensiv ist, wird geschätzt.

Die einfachste Idee ist die Neuberechnung des Durchflusses.

Eine weitere einfache Idee ist, alle in der vorherigen Berechnung des maximalen Durchflusses verwendeten Erweiterungspfade abzuspeichern, um einen Scheitelpunkt hinzuzufügen v. Wir können einfache Pfade (im aktualisierten Kapazitätsdiagramm nach vorherigem Schritt) finden, die von der Quelle ausgehen, zu der v dann weitergehen zum Ziel, aber das Problem ist, dieser Pfad sollte einfach sein, ich könnte nicht besser als Ö(nm) für diesen Fall finden, für m=|E|. (Beachten Sie auch, dass dies in erfolgen könnte, wenn es nur ein Pfad wäre, aber das ist nicht der Fall O(n+m).)

Auch zum Entfernen von Knoten über Idee funktioniert nicht.

Ich habe auch schon Papiere wie Inkrementelle Annäherung für Kanten gesehen , aber in diesem Fall scheinen sie nicht gut genug zu sein, es ist mehr als für jede Kante und in diesem Fall scheint es keine geeignete Erweiterung zu sein (wir berechnen nur einen Fluss neu). Derzeit verwende ich auch den Ford-Fulkerson-Algorithmus für maximalen Durchfluss. Wenn es eine bessere Option für Online-Algorithmen gibt, ist es gut, dies zu wissen.O(m)

Saeed
quelle
Könnten Sie bitte klären, "aber das Problem ist, dieser Weg sollte einfach sein" Teil? Ich habe es nicht verstanden.
Dmytro Korduban
@ maldini.ua, Tatsächlich meine ich, der Pfad, der von der Quelle zu und dann von v zum Ziel führt, sollte keinen gemeinsamen Scheitelpunkt haben (außer v ). Angenommen, v ist ein neu hinzugefügter Knoten. Wenn dem nicht so wäre, könnten wir einige Überprüfungen überspringen und einen schnelleren Algorithmus haben (im Durchschnitt oder möglicherweise asymptotisch). vvvv
Saeed,
Verstanden, aber für mich ist es nichts Besonderes an . Ich denke, die einfachste Idee zur Neuberechnung ist die folgende: 1) Hinzufügen eines neuen Scheitelpunkts mit Kanten zum Restgraphen ; 2) Finden Sie den maximalen Durchfluss in der aktualisierten Restgrafik mit einem Maximalflussalgorithmus Ihrer Wahl. Der von Ihnen vorgeschlagene Fall wird vom Maximum-Flow-Algorithmus "automatisch" verarbeitet (dh, es werden keine Erweiterungspfade usw. gefunden). Wenn Sie daran interessiert sind, Knoten zu entfernen, kann ich dies als Antwort schreiben. PS Um es klar zu sagen, haben Sie eine gerichtete oder ungerichtete Grafik? v
Dmytro Korduban
@ maldini.ua, normale Neuberechnung fügt hinzu Komplexität der aktuellen Lösung, daher denke ich nicht, dass sie gut ist (möglicherweise ist sie gut, wenn man weiß, dass normalerweise zu viele Kanten nutzlos sind und in der Tat kein Problem mit der sehr hohen Leistung darstellen), aber wenn Sie eine Idee zum Entfernen haben Knoten, ich bin interessiert, um Ihre Idee zu sehen, Auch Grafik ist gerichtet. PS interessiert mich aber in beiden fällen. |G|
Saeed
Denken Sie daran, dass Sie es im Restdiagramm ausführen. Zu diesem Zeitpunkt sollten viele Kanten mit einer Kapazität von Null vorhanden sein. Normalerweise funktioniert es ziemlich schnell, besonders in spärlichen Diagrammen (zumindest bei mir). Auf der anderen Seite klingt der Ansatz des "einfachen Pfades" für mich ein bisschen nach einer zusätzlichen Raffinesse. Vergessen Sie auch nicht, dass Sie für die Laufzeit des Ford-Fulkerson festgelegt haben (wobei | f | durch die Summe der Kapazitäten der benachbarten Kanten von v begrenzt ist ). O(|f||E|)|f|v
Dmytro Korduban

Antworten:

6

Der beschriebene Ansatz ist möglicherweise theoretisch nicht optimal. Es ist nur eine einfache praktische Lösung, die für den Autor funktionieren kann. Ich kann keine Referenzen nennen, weil ich immer dachte, dass es eine weithin bekannte Folklore ist, aber seltsamerweise hat es niemand in der Antwort gepostet. Also mache ich es.

Angenommen, wir haben ein ungerichtetes Netzwerk . Angenommen, es ist in einer Datenstruktur gespeichert, die ein einfaches Einfügen / Löschen von Scheitelpunkten / Bögen ermöglicht. Manchmal verwenden wir das Restnetz G f (dh mit aktualisierten Kapazitäten c f = c - f ).G=(V,E,c)Gfcf=c-f

Im ersten Teil wird das Einfügen / Löschen von Scheitelpunkten behandelt. Es ist mehr oder weniger einfach für Einfügungen:

  1. Fügen Sie dem verbleibenden Netzwerk einen neuen Scheitelpunkt mit entsprechenden Kanten hinzu.
  2. Finden Sie mit einem Maxflow-Algorithmus Ihrer Wahl einen maximalen Durchfluss im aktualisierten Restnetzwerk.

Bei Löschungen wurden die Dinge komplizierter. Stellen Sie sich vor wir den Scheitelpunkt geteilt wir sind in 2 Hälften löschen v i n und v o u t , so dass alle in-Bögen Punkte v i n , alle out-Bögen aus geht v o u t und dieses neue Eckpunkte verbunden sind durch einen Bogen von unendlicher Kapazität. Dann ist das Löschen von v gleichbedeutend mit dem Löschen des Bogens zwischen v i n und v o u t . Was wird in diesem Fall passieren? Lassen Sie uns mit f v bezeichnenvvichnvÖutvichnvÖutvvichnvÖutfvdie Strömung durch den Scheitelpunkt . Dann v i n überschüssige Erfahrung f v Durchflußeinheiten und v o u t Mangel erfahren wird f v Durchflußeinheiten rechts nach dem Löschen (die Strömungsbeschränkungen offensichtlich aufgebrochen werden). Um die Flussbeschränkungen wieder aufrechtzuerhalten, sollten wir die Flüsse neu ordnen, aber auch den ursprünglichen Flusswert so hoch wie möglich halten. Lassen Sie uns zuerst sehen, ob wir eine Umlagerung durchführen können, ohne den Gesamtfluss zu verringern. Um dies zu überprüfen, finden Sie einen maxflow ~ f v von v i n bis v o uvvichnfvvÖutfvfv~vin im "abgeschnittenen" Restnetz (dh ohne die Verbindung von v i n und v o u t ). Wir sollten esoffensichtlich f v binden. Wenn es zufällig gleich f v ist, haben wir Glück: Wir haben den Fluss, der durchv lief,soneu zugewiesen, dass der Gesamtfluss nicht geändert wurde. Im anderen Fall muss der Gesamtdurchfluss um einen "nutzlosen" Überschuss vonΔ= f v - ~ f v Einheitenverringert werden. Verbinden Sie dazu vorübergehendsundtvoutvinvoutfvfvvΔ=fvfv~stdurch einen Bogen mit unendlicher Kapazität und führe den Maxflow-Algorithmus erneut von zu v o u t aus (wir sollten den Flow durch Δ begrenzen ). Dadurch wird das verbleibende Netzwerk repariert und die Durchflussbeschränkungen werden wieder aufrechterhalten, wodurch der Gesamtdurchfluss automatisch um Δ verringert wird .vinvoutΔΔ

Die zeitliche Komplexität solcher Aktualisierungen kann vom verwendeten maxflow-Algorithmus abhängen. Die schlimmsten Fälle mögen zwar ziemlich schlimm sein, aber es ist immer noch besser als eine vollständige Neuberechnung.

Der zweite Teil ist der zu verwendende Maxflow-Algorithmus. Soweit ich weiß, benötigt der Autor keinen sehr komplexen (aber immer noch effizienten) Algorithmus mit einer kleinen versteckten Konstante, um ihn auf einer mobilen Plattform auszuführen. Seine erste Wahl für Ford-Fulkerson (ich gehe davon aus, dass es sich um Edmonds-Karp handelt ) sieht aus dieser Sicht nicht schlecht aus. Es gibt aber auch einige andere Möglichkeiten. Die erste Variante, die ich empfehlen würde, ist die Variante des Dinic-Algorithmus, da sie in der Praxis recht schnell ist und auf sehr einfache Weise implementiert werden kann. Andere Optionen können die Kapazitätsskalierung von Ford-Fulkerson in O ( | E |O(|V|2|E|) und schließlich verschiedene Versionen von Push-Relabel mit Heuristik. In jedem Fall hängt die Leistung von einem Anwendungsfall ab, sodass der Autor den besten empirisch finden sollte.O(|E|2logCmax)

Dmytro Korduban
quelle
Nach dem Lesen der Antwort des letzten VZN habe ich den ähnlichen Ansatz auf der Seite 90 von beschrieben gefunden dies .
Dmytro Korduban
Wie ich beim Entfernen des Knotens verstehe, werden Sie mit Fluss im Restgraphen berechnen, aber ich denke, dass dies nicht zutrifft. Tatsächlich haben Sie im Restgraphen einige Kanten, die für die Berechnung von f v verwendet werden, und Sie sollten diesen Kanten zusätzliche Kapazität hinzufügen , dann berechne ~ f v und verwende dann Δ . fv~fvfv~Δ
Saeed,
Wenn Sie eine Durchflusseinheit von nach u verschieben , verringern Sie c f ( v , u ) um 1 und erhöhen c f ( u , v ) um 1, da der Durchfluss antisymmetrisch ist ( f ( v , u ) = - f ( u , v ) ). Dies definiert einen echten Restgraphen, sodass alles gut funktioniert. vucf(v,u)cf(u,v)f(v,u)=f(u,v)
Dmytro Korduban
Irgendwelche Ideen, wie Sie dies tun würden, wenn Sie die Kantenkapazität ändern möchten?
Chet
-1

ok unter berücksichtigung neuer infos und vermeidung einiger kniffliger falscher start / red herring refs (mea culpa), hier sind einige neue refs dazu.

Schnelle Lösung einer Online-Sequenz von Problemen mit maximalem Durchfluss mit Erweiterungen für die Berechnung robuster Minimalschnitte Doug Altner und Özlem Ergun

Dieser Verweis berücksichtigt Online- Sequenzen von MFPs und "Warmstarts", dh aufbauend auf inkrementellen Chgs zu einem früheren MFP. "Wir zeigen, dass unsere Algorithmen die Laufzeit im Vergleich zu ähnlichen Codes, die einen Black-Box-MFP-Solver verwenden, um eine Größenordnung verkürzen. Insbesondere zeigen wir, dass unser Algorithmus für robuste Minimalschnitte Instanzen in Sekunden lösen kann, die über vier benötigen würden Stunden mit einem Black-Box-Maximum-Flow-Solver. "


Fortschritte bei Problemen mit maximalen Durchflussmengen Altner, Douglas S., Georgia Tech

In dieser Dissertation von 2008 (PDF zum Herunterladen) geht der Autor auf das Problem des inkrementellen Hinzufügens von Bögen ein, das dem Problem des Hinzufügens neuer Scheitelpunkte (mit mehreren neuen Bögen) "nahe genug" zu sein scheint.

Ein Großteil dieses Verweises befasst sich mit dem Löschen von Teilen des Netzwerks (Kürzungen / "Verbot"), wie im ersten Teil des Abstracts angegeben

siehe esp "IV ONLINE-ABLAUF VON MAXIMALEN DURCHFLÜSSEN LÖSEN.... S63".

"Das Ziel dieses Kapitels ist es jedoch, den Leser davon zu überzeugen, dass die iterative Verwendung eines Black-Box-Maximum-Flow-Lösers zur Lösung einer großen Sequenz von MFPs zu einer enormen Anzahl unnötiger Berechnungen führen kann."

p66 In den oben genannten Anwendungen sind die MFPs typischerweise topologisch ähnlich. Das heißt, das nächste MFP in der Sequenz unterscheidet sich vom vorherigen durch Hinzufügen oder Entfernen einer kleinen Anzahl von Lichtbögen oder durch vorhersagbare Änderung der Kapazität eines lokalisierten Lichtbogensatzes Wenn diese Instanzen gelöst werden, ist die Zeit und der Raum, die erforderlich sind, um irgendetwas zu speichern, das über die Lösung des vorherigen Problems hinausgeht, in der Regel nicht gerechtfertigt. "

Der Autor von p67 verwendet auch hier den "Warmstart" -Ansatz. "Eine effektive Strategie zur schnellen Lösung einer gesamten Online-Sequenz von Optimierungsproblemen ist die Entwicklung effizienter Heuristiken für die Neuoptimierung. Zu diesem Zweck entwickeln wir einen modifizierten Maximalflussalgorithmus, der für einen effizienten Warmstart ausgelegt ist."

Siehe insbesondere Seite 71, die das spezifische inkrementelle New-Arc-Problem aufweist:

New Arc Maximum Flow Reoptimization Problem (NAMFRP)

der autor betrachtet die allgemeineren probleme p67

Problem der erneuten Optimierung des
maximalen Durchflusses (MFROP) Problem der erneuten Optimierung des maximalen Durchflusses durch einen einzelnen Lichtbogen (MFSAROP)

vzn
quelle
-3

Aus einer kurzen Suche geht hervor, dass die Online-Version ein Bereich aktiver Forschung ist. Sie erwähnen nicht den Anwendungsbereich, der dazu beitragen könnte, die Literatursuche einzugrenzen. Eine Möglichkeit besteht darin, nach einem Anwendungsbereich zu suchen, in dem es die meisten oder neuesten Innovationen gibt. Daher gibt es eine gewisse Anwendung des inkrementellen maximalen Durchflusses in Bildverarbeitungssystemen und einige Algorithmen dafür. Probieren Sie Maximum Flows by Incremental Breadth-First Search in Microsoft Research Labs. Wenn man das Intro zu diesem Artikel paraphrasiert, ist der Boykov- und Kolmogorov-Algorithmus anscheinend für Sehinstanzen gut geeignet und es sind keine exponentiellen Zeitgegenbeispiele bekannt, obwohl er außerhalb der Sehanwendungen möglicherweise eine schlechte Leistung erbringt. Es könnte sich also lohnen, den B & K-Algorithmus für Ihre Daten auszuprobieren und zu sehen, wie er funktioniert.

Sie scheinen zu sagen, dass ein inkrementeller Algorithmus, der in der Anzahl der Graphenkanten linear ist, nicht ausreicht? Aber ist das nicht ein ziemlich hoher Wirkungsgrad? Mit wie vielen Kanten haben Sie es zu tun? Möglicherweise besteht der Ansatz darin, die Kosten für das Durchlaufen des Diagramms zu senken, wenn dies teuer oder ein wesentlicher Faktor ist (z. B. in db gespeichertes Diagramm im Vergleich zum im Speicher gespeicherten Diagramm).

Hier ist eine interessante Arbeit, die argumentiert, dass, während der nicht inkrementelle Algorithmus für den maximalen Durchfluss in P ist, die inkrementelle Version NP vollständig ist. "Nach unserem besten Wissen sind unsere Ergebnisse die ersten, die ein P-Zeit-Problem finden, dessen inkrementelle Version NP-vollständig ist."

Inkrementeller Durchfluss von Hartline, Sharp

vzn
quelle
Danke, ich habe Ihre referenzierten Papiere nicht gelesen, ich werde sie mir ansehen (ich habe einige Papiere zuvor gesehen und sie für nutzlos befunden), aber in Bezug auf meinen Problembereich ist es ein Problem in der realen Arbeitssituation im Aktienmarketing. Es ist etwas kompliziert zu sagen, was passiert ist, als ich herausfand, dass ich dieses Problem lösen sollte. Eigentlich dachte ich nicht, dass es auf den ersten Blick schwierig ist, aber nachdem ich einen Code ausprobiert habe, sehe ich, dass es nicht so einfach ist. Dieser Algorithmus wird auf Mobiltelefonen ausgeführt, sie sind nicht so schnell (und Kunden mögen meinen Algorithmus nicht :). Manchmal werden auch zu viele Kanten mit einem neuen Knoten kommen. und das ist ein Engpass.
Saeed,
interessant. Klingt so, als sollten Sie sich wahrscheinlich für Heuristiken entscheiden, die auf begrenzter Rechenleistung basieren und schnelle Updates erfordern. Kann die Verarbeitung stattdessen vom "Client" (in Ihrem Fall anscheinend von den Telefonen) auf den Server verschoben werden? Muss jeder Client eine andere Version (dh andere Daten) des Problems berechnen?
vzn
Im Iran ist das größte Problem die Geschwindigkeit der Internetverbindung. Daher kann ich es nicht auf die Serverseite verschieben. Wenn es in Ordnung wäre (gute Geschwindigkeit), wäre eine Neuberechnung mit Sicherheit nicht schlecht.
Saeed
6
Ich verstehe nicht, wie dies die ursprüngliche Frage beantwortet, bei der es um ein Diagramm geht, das sich im Laufe der Zeit durch Hinzufügen von Knoten und Kanten entwickelt. Der erste Artikel beschreibt einen inkrementellen Algorithmus für das Standardproblem des One-Shot-Maxflow. Das zweite Papier beschreibt ein Papier für ein anderes "inkrementelles Maxflow" -Problem, bei dem die Anzahl der Kanten festgelegt ist, deren Kapazität jedoch mit der Zeit zunimmt.
Jeffs
1
@ Jɛ ɛ E, ja, Sie haben Recht :) Tatsächlich sehe ich vorher ähnliche Papiere wie referenzierte Papiere, aber wie Sie sagten, sie haben nichts mit meinem Problem zu tun, das meiste nahe Papier, das ich bis jetzt sehe, habe ich referenziert.
Saeed,
-5

Eine weitere Möglichkeit / Richtung ist der Push-Relabel-Maximalfluss- Algorithmus, der "einer der effizientesten Algorithmen für den Maximalfluss" ist und in Abhängigkeit von Ihren Daten bessere Komplexitätsprofile aufweisen kann. zB wie auf der Wikipedia-Seite steht

O(V3)O(V2EO(VElog(V2/E))

vzn
quelle
3
Auch hier sehe ich nicht, wie diese Antwort für die gestellte Frage relevant ist. Push-Relabel ist eine bekannte Lehrbuchstrategie zur Lösung des Standardproblems mit maximalem Durchfluss.
Jeffs
Also ist Ford-Fulkerson ... richtig? & OP bittet um etwas Besseres. Kennst du etwas, das beweist, dass Push-Relabel schlimmer ist als Ford-Fulkerson? Das unklare OP kennt sich mit Push-Relabel aus. Meine Güte, der im Lehrbuch auftauchende Algorithmus ist sicherlich kein unmittelbares Kriterium, um die Antwort hier abzulehnen, oder?
vzn
3
Eigentlich ja; Fragen, die in Standardlehrbüchern (oder Wikipedia) beantwortet werden, sind nicht auf Forschungsniveau. Die erste gestellte Frage zu inkrementellen Abläufen ist jedoch interessant und definitiv umfangreich. (Das Fehlen endgültiger Antworten legt nahe, dass die richtige Antwort möglicherweise "Gute Frage. Niemand weiß es."
Lautet
vzn, danke für deinen beitrag, aber: "kennst du etwas, das beweist, dass push-relabel schlechter ist als ford-fulkerson" ist kein guter grund, es als antwort zu posten, wenn du weißt, warum "push-relabel" in online-algorithmen besser ist als Ford-Falkerson ist es gut zu sagen, ich persönlich mag Ford-Falkerson wegen der Einfachheit, niedrigen konstanten Faktor, und ich kenne es aus der Vergangenheit. Aber wie gesagt, ich kann nicht sagen, dass es in allen Fällen eine gute Option ist, auch diese Algorithmen sind nicht einfach vergleichbar, sie benötigen praktische Tests.
Saeed
Wenn Sie einen Maximalflussalgorithmus haben, der für Ihre Daten nicht gut funktioniert, versuchen Sie es mit einem anderen Algorithmus, insbesondere mit einem Algorithmus, von dem behauptet wird, dass er gut funktioniert, da einige für verschiedene Datenprofile optimiert sind. nein, es ist nicht online / "Vertex inkrementell", aber es könnte für den Offline-Fall besser sein, wenn es keine Alternative gibt. Die Online-Versionen, während sie existieren, wie ich oben festgestellt habe, werden wahrscheinlich sehr schwer zu implementieren sein ...
vzn