Dank des Max-Flow-Min-Cut-Theorems wissen wir, dass wir jeden Algorithmus verwenden können, um einen maximalen Fluss in einem Netzwerkgraphen zu berechnen, um einen -Min-Cut zu berechnen . Daher ist die Komplexität der Berechnung eines minimalen ( s , t ) -Flusses nicht größer als die Komplexität der Berechnung eines maximalen ( s , t ) -Flusses.
Könnte es weniger sein? Könnte es einen Algorithmus zur Berechnung eines Minimums geben, der schneller ist als jeder Max-Flow-Algorithmus?
Ich habe versucht, eine Reduzierung zu finden, um das ) -Max-Flow-Problem auf das ( s , t ) -Min-Cut-Problem zu reduzieren, konnte aber keine finden. Mein erster Gedanke war, einen Divide-and-Conquer-Algorithmus zu verwenden: Finden Sie zuerst einen Min-Cut, der die Grafik in zwei Teile trennt; Finden Sie nun rekursiv einen Maximalfluss für den linken Teil und einen Maximalfluss für den rechten Teil und kombinieren Sie diese mit allen Kanten, die den Schnitt kreuzen. Dies würde in der Tat funktionieren, um einen maximalen Durchfluss zu erzeugen, aber seine Laufzeit im ungünstigsten Fall könnte bis zu dem O ( | V | ) -fachen der Laufzeit des Min-Cut-Algorithmus betragen. Gibt es eine bessere Reduzierung?
Mir ist klar, dass der Satz von Max-Flow-Min-Cut zeigt, dass die Komplexität der Berechnung des Werts eines Max-Flow der Komplexität der Berechnung der Kapazität eines Min-Cut entspricht, aber das ist nicht das, wonach ich frage. Ich frage nach dem Problem, einen maximalen Durchfluss und einen minimalen Schnitt zu finden (explizit).
Dies hängt sehr eng mit der Berechnung eines maximalen Durchflusses aus einem minimalen Schnitt zusammen , außer: (1) Ich bin bereit, Cook-Reduzierungen (Turing-Reduzierungen) und nicht nur Karp-Reduzierungen (Viel-Eins-Reduzierungen) zuzulassen, und (2) Vielleicht können wir bei einen Graphen G 'finden, so dass der Min-Cut von G ' es einfach macht, den Max-Flow von G zu berechnen , was für diese andere Frage nicht möglich ist.
Antworten:
Hier ist ein möglicher Ansatz:
Angenommen, Sie kennen den Schnitt S, und dann ist das Auffinden des Flusses von nach t ein Minimalkosten- Netzwerkflussproblem mit null Kosten, da Sie den Abfluss an jedem Scheitelpunkt in V ∖ S und im Zufluss bei t genau kennen . Angenommen, f bezeichnet einen S - t - Fluss und A die Knotenbogenmatrix (dh Zeile i , Spalte j hat 1, wenn i der Schwanz von j ist , -1, wenn es der Kopf ist, sonst Null), und sei b so, dass A f = b wenn fS t V∖S t f S−t A i j i j b Af=b f befriedigt das Angebot / die Nachfrage und die Flusserhaltung. Dann können wir mit der Gaußschen Eliminierung eine praktikable Lösung in Operationen.|V|3
Um einen Schnitt aus einem Fluss zu finden, müssen wir den Restgraphen konstruieren, der höchstens Zeit und dann möglicherweise überqueren | V | Ecken.|E| |V|
Bei vollständigen Diagrammen und wenn der Minimalschnitt nur die Quelle oder nur die Senke ist, dauert die Reduzierung im ungünstigsten Fall in beiden Richtungen gleich lange. Ich denke jedoch, dass es schneller geht , eine praktikable Lösung für finden als | V | 3 angesichts der besonderen Struktur. Ich bin mir nicht sicher, wie ich das beweisen soll.Af=b |V|3
quelle