Ich versuche den Maximum Independent Set eines Biparite Graph zu finden.
In einigen Notizen "13. Mai 1998 - University of Washington - CSE 521 - Anwendungen des Netzwerkflusses" fand ich Folgendes :
Problem:
Bei einem zweiteiligen Graphen , findet einen unabhängigen Satz , die so groß wie möglich ist, wobei und . Eine Menge ist unabhängig, wenn keine Kanten von zwischen Elementen der Menge vorhanden sind.
Lösung:
Konstruieren Sie ein Flussdiagramm auf den Eckpunkten . Für jede Kante gibt es eine unendliche Kapazitätskante von nach . Für jedes gibt es eine Einheitskapazitätskante von bis , und für jedes gibt es eine Einheitskapazitätskante von bis .
Finden sie eine endliche Kapazität Schnitt , mit und . Lassen und . Die Menge ist unabhängig, da keine Kanten mit unbegrenzter Kapazität den Schnitt kreuzen. Die Größe des Schnitts ist. Um die unabhängige Menge so groß wie möglich zu machen, machen wir den Schnitt so klein wie möglich.
Nehmen wir das als Diagramm:
A - B - C
|
D - E - F
Wir können dies wie folgt in einen zweigeteilten Graphen aufteilen
Wir können durch Brute-Force-Suche feststellen, dass die einzige maximale unabhängige Menge . Versuchen wir die obige Lösung durchzuarbeiten:
Die konstruierte Flussnetz-Adjazenzmatrix wäre also:
Hier stecke ich fest, der kleinste begrenzte Kapazitätsabbau, den ich sehe, ist trivial: mit einer Kapazität von 3.
Die Verwendung dieses Schnitts führt zu einer falschen Lösung von:
Während wir erwartet haben ? Kann irgendjemand erkennen, wo ich in meinem Denken / Arbeiten einen Fehler gemacht habe?
quelle
Antworten:
Das Komplement einer maximalen unabhängigen Menge ist eine minimale Scheitelabdeckung.
Um eine minimale Scheitelpunktabdeckung in einem zweigeteilten Graphen zu finden, siehe König's Theorem .
quelle
Die angegebene Lösung ist eindeutig falsch, wie Sie anhand des Gegenbeispiels demonstrieren. Beachten Sie, dass der Graph U + V eine zusammenhängende Komponente durch die Kanten mit unendlicher Kapazität ist. Daher muss jeder gültige Schnitt alle A, B, C, D, E, F auf derselben Seite enthalten.
Beim Versuch zurückzuverfolgen, woher die Lösung stammt: http://www.cs.washington.edu/education/courses/cse521/01sp/flownotes.pdf nennt Network Flows von Ahuja, Magnanti und Orlin für einige der Probleme. Dieses Buch ist nicht urheberrechtlich geschützt und kann von http://archive.org/details/networkflows00ahuj heruntergeladen werden , enthält jedoch anscheinend nicht dieses Problem und diese Lösung (es wird nach jedem Auftreten von "zweigeteilt" gesucht).
Beachten Sie, dass der Erklärungsabschnitt der Lösung nicht zeigt, dass der kleinste Ausschnitt des von ihm erstellten Diagramms der maximalen unabhängigen Menge entspricht. Es zeigt nur einen Weg, einen unabhängigen Satz zu erhalten.
Und doch können Sie sehen, was der Algorithmus versucht zu tun. Hier ist, was die tatsächliche maximale unabhängige Menge in Bezug auf ihren s, t-Schnitt entspricht:
Die Kante mit unendlicher Kapazität, die den Algorithmus unterbricht, wird hervorgehoben.
Ich bin mir nicht sicher, wie ich den Algorithmus auf das bringen soll, was beabsichtigt war. Vielleicht sollten die Kosten einer unendlichen Flanke Null sein, wenn sie rückwärts geht (dh wo sie von S nach T geht, aber von t nach s überquert)? Aber ist es bei dieser Nichtlinearität immer noch leicht, den minimalen / maximalen Durchfluss zu finden? Wenn wir über eine Möglichkeit nachdenken, die Lösung von @Jukka Suomela für den Algorithmus von der Frage abzukoppeln, gibt es eine Schwierigkeit, wenn wir von der maximalen Anpassung zur minimalen Vertex-Abdeckung übergehen: Die maximale Anpassung kann durch einen max-flow ermittelt werden Wie können Sie die minimale Scheitelpunktabdeckung mithilfe eines flussähnlichen Algorithmus wiederherstellen? Wie hier beschriebenNachdem die maximale Übereinstimmung gefunden wurde, werden die Kanten zwischen U und V gerichtet, um die minimale Scheitelpunktabdeckung zu finden. Dies zeigt also wiederum nicht, dass eine einfache Anwendung von Min-Cut / Max-Flow alles ist, was zur Lösung dieses Problems erforderlich ist.
quelle
quelle
Der Schnitt sollte auf dem tatsächlichen Durchfluss liegen, nicht auf den Kapazitäten. Da der Fluss von s endlich ist, ist jeder {S, T} -Schnitt endlich. Der Rest ist wie oben erklärt.
quelle
quelle