Ist Logical Min-Cut NP-Complete?


24

Logical Min Cut (LMC) -Problemdefinition

Angenommen, G=(V,E) ist ein ungewichteter Digraph, s und t sind zwei Eckpunkte von V , und t ist von aus erreichbar s. Das LMC-Problem untersucht, wie wir t aus unerreichbar machen können, sindem wir einige Kanten von entfernen, wobei wir Gdie folgenden Einschränkungen beachten:

  1. Die Anzahl der entfernten Kanten muss minimal sein.
  2. Wir können nicht jede Austrittskante eines Scheitelpunkts von entfernen G(dh bei keinem Scheitelpunkt mit ausgehenden Kanten können alle ausgehenden Kanten entfernt werden).

Diese zweite Einschränkung wird als logische Entfernung bezeichnet. Wir suchen also nach einer logischen, minimalen Entfernung einiger Kanten von so dass t von s nicht erreichbar wäre .Gts

Lösungsversuche

Wenn wir die logische Entfernungsbeschränkung des LMC-Problems ignorieren, ist es das Min-Cut-Problem im ungewichteten Digraphen , sodass es polynomiell lösbar ist (Max-Flow-Min-Cut-Theorem).G

Wenn wir die minimale Entfernungsbeschränkung des LMC-Problems ignorieren, wird es in einer DAG wieder polynomiell lösbar sein: Finden Sie einen Knoten so dass k von s erreichbar ist und t von k nicht erreichbar ist . Dann betrachte man einen Pfad p, der ein beliebiger Pfad von s nach k ist . Betrachten Sie nun den Pfad p als einen Untergraphen von G : Die Antwort ist jede Austrittskante des Untergraphen p . Es ist offensichtlich, dass der Vertex k durch DFS in G in der Polynomzeit gefunden werden kann. Leider funktioniert dieser Algorithmus im Allgemeinen nichtkkstkpskpGpkG für einen willkürlich gerichteten Graphen.

Ich habe versucht, das LMC-Problem durch eine dynamische Programmiertechnik zu lösen, aber die Anzahl der erforderlichen Zustände zur Lösung des Problems wurde exponentiell. Außerdem habe ich versucht, einige NP-Complete-Probleme wie 3-SAT, max2Sat, max-cut und Clique auf das LMC-Problem zu reduzieren, bei dem ich keine Reduzierung gefunden habe.

Ich persönlich denke, dass das LMC-Problem NP-vollständig ist, auch wenn eine binäre DAG ist (dh eine DAG, bei der kein Knoten einen Grad größer als 2 hat).G

Fragen

  1. Liegt das LMC-Problem NP-Complete in einem beliebigen Digraphen ? (Hauptfrage)G
  2. Ist das LMC-Problem NP-Complete in einer beliebigen DAG ?G
  3. Ist das LMC-Problem NP-Complete in einer beliebigen binären DAG ?G

Ich bin mir ziemlich sicher, dass das Problem in wenn Ihr Diagramm ungerichtet ist . Wäre das eine ausreichende Antwort auf Ihre Frage? P
Alex ten Brink

@ SaeedAmiri: finde einen Min-Cut für und t . Wenn es einen Scheitelpunkt trennt, muss dieser Scheitelpunkt s oder t sein . Wenn es beides ist, dann gibt es keinen solchen minimalen Schnitt. Angenommen, t ist der nicht verbundene Scheitelpunkt und ( t , v ) die Kante. Entfernen Sie diese Kante und führen Sie einen rekursiven Minischnitt für s und v durch . ststt(t,v)sv
Alex ten Brink

Durch eine einfache Beobachtung kann geschlossen werden, dass, wenn das folgende Problem NP-vollständig ist, das LMC-Problem auch NP-vollständig ist (ich bin nicht sicher, dass das Gegenteil wahr ist). Angenommen, ist ein Digraph. Wie wir einen min-cut auf G haben können (Partition V nach S und T st, die Anzahl der Kanten von S nach T ist minimal) und es existiert kein Vertex v zu V st, zu dem der Kopf jeder Austrittskante von v gehört bis T (die Austrittskante ist von S bisG=(V,E)GVSTSTvVvTS ). T
Amirv


2
Amirv, für das Problem mit Constraint (2) ist der von Ihnen vorgeschlagene Algorithmus meines Wissens nicht ganz richtig. Es kann eine Lösung geben, obwohl es für alle Knoten v einen Pfad von s nach v und einen Pfad von v nach t gibt. Betrachten Sie den Graphen mit V = { s , t , a } und E = { ( s , t ) , ( s , a ) , ( a , s ) } .G=(V,E)V={s,t,a}E={(s,t),(s,a),(a,s)}
Neal Young

Antworten:


1

Sei G = (V, E) eine gewichtete DAG, s und t zwei Eckpunkte von G, und LSTMC = (G, s, t) sei eine Instanz des logischen st-min-cut-Problems. Es ist offensichtlich, dass das LSTMC-Problem NP ist. Nun sollten wir zeigen, dass das LSTMC NP-schwer ist. Wir reduzieren das Schlagmengenproblem auf das LSTMC-Problem. Sei S = {s1, s2, ..., sn} die gegebene Menge und {a1, a2, ..., am} die Vereinigung aller Mengen. Unter Berücksichtigung der Zahl k1 gibt das Entscheidungsproblem des Schlagmengenproblems an, ob eine Menge A mit k1 Elementen existiert, so dass jedes Element von S (jede Menge si st i = 1..n) mindestens ein Element von A enthält. We bezeichne das Schlagsatzproblem als HS (S). Wir konstruieren die gewichtete DAG G 'aus der Menge S mit dem Algorithmus HS2LSTMC. Dieser Algorithmus betrachtet s als den Quellenscheitelpunkt der DAG G '. Für jede Menge si von HS st i = 1..n berücksichtigt der Algorithmus den entsprechenden Scheitelpunkt, si und fügt jedem si eine Kante mit unendlichem Gewicht von s hinzu. Dann betrachtet der Algorithmus für jedes Element aj der Vereinigung der Eingangssätze stj = 1..m den entsprechenden Scheitelpunkt aj und addiert eine Kante mit einer Gewichtung von Null von jedem si zu jedem ajstajsi in HS. Schließlich betrachtet der Algorithmus zwei Endscheitelpunkte, die als t und k bezeichnet werden, und addiert zwei Kanten von jedem aj st j = 1..m zu den beiden Endscheitelpunkten. Es ist klar, dass G 'in Polynomzeit hergestellt werden kann.

Nun soll gezeigt werden, dass HS (S) genau dann eine Antwort mit k1 Elementen hat, wenn LSTMC = (G ′, s, t) eine Antwort mit einigen logisch entfernten Kanten hat, so dass die Summe der Gewichte der entfernten Kanten ist k1.

Der Einfachheit halber führen wir diesen Teil des Beweises anhand eines Beispiels durch:

Angenommen, in der folgenden Abbildung ist S = {s1, s2, s3}, so dass s1 = {1, 2, 3}, s2 = {1, 4} und s3 = {2, 5}. Fig. 2 zeigt die gewichtete DAG G 'des LSTMC-Problems entsprechend dem Schlagmengenproblem HS (S). In diesem Beispiel ist die Menge A, nämlich die Vereinigung aller Elemente von S, A = {1, 2, 3, 4, 5}. Wir haben | S | = 3 und | A | = 5. Dieses Beispiel zeigt, wie eine beliebige Instanz des Treffersatzproblems mithilfe einer bestimmten Instanz des logischen St-Min-Cut-Problems in einer gewichteten DAG gelöst werden kann. Wenn wir eine Antwort auf LSTMC = (G ′, s, t) berechnen und die entfernten Kanten der Antwort in Form von (aj, t) betrachten, die als E1 (1 ≤ j ≤ m) bezeichnet werden, dann ist die Endmenge von E1 ist eine Antwort auf HS (S). Eine Antwort auf das LSTMC-Problem ist die Kantenmenge E1 = {(s1, 2), (s1, 3), (s2, 4), (s3, 5), (1, t), (2, t)}. Also ist die Endmenge der Teilmenge E2 = {(1, t), (2,

Die Ermäßigung


0

Hier ist (ein Versuch) ein Polynom-Algorithmus für LMC auf beliebigen binären DAGs .G

Dies beantwortet Frage 3. (Entschuldigen Sie die unordentliche Beschreibung im Voraus. :))

Werfen Sie zunächst "für immer" alle Scheitelpunkte aus, von denen aus Sie nicht erreichen können . Wir kümmern uns nicht um diese, da sie nicht Teil irgendeines sind s - t Weg.sst

Definieren Sie als Nächstes die Sub-DAGs und B , die anfangs leer sind. Dann gilt für alle Eckpunkte v AB ,vG{s,t}

Testen Sie, ob es einen Pfad von nach t gibt . Wenn ja, fügen Sie v aufvtv . Wenn nicht, füge v zu B hinzu .AvB

Die Kanten von und B sollen die Kanten sein, die durch die Scheitelpunkte in jeder Menge induziert werden (vorerst ignorieren Sie alle Kanten von s nach A , von A nach t und von A nach B)ABsAAtAB ; beachten Sie auch, dass es keine Kanten von nach t von gibt Konstruktion).Bt

Dann berechnet die transitive Hülle von . Wir sind nämlich daran interessiert, eine Reihe von Eckpunkten zu finden {A , die die "Blätter" der Sub-DAG A sind .{a}A

Repariere so . Beachten Sie, dass es eine gerichtete Kante von a bis t geben muss . Dies liegt daran, dass konstruktionsbedingt (i) es einen s - t - Pfad durch a ∗ gibt , (ii) es keine Pfade von a durch B gibt und (iii) da A selbst eine DAG ist und a ein Blatt ist von A gibt es keinen Weg von a durch einen anderen Scheitelpunkt von A nach t .aatstaaBAaAaAt

Jetzt muss es auch eine gerichtete Kante von jedem Scheitelpunkt in zu einem Scheitelpunkt in B geben , oder einige der { a } müssen eine einzelne Kante zu t haben . In jedem Fall werden wir alle löschen erlaubt eine *t Rand.{a}B{a}tat

Wenn = 1, dann müssen wir entweder die Kante aus dem eindeutigen a t löschen , oder es gibt einen Scheitelpunkt im s - t - Pfad, der ein ∗ enthält , das zwei Pfade zu t hat - einen durch ein und einen direkt. Für den Fall, dass Letzteres zutrifft, nehmen wir ein t auf und gehen "gierig rückwärts" vor (Details dazu weiter unten).|{a}|atstataat

Wenn > 1, dann müssen wir entweder alle Kanten aus { a } t löschen , oder es gibt eine gewisse Anzahl von Kanten k < | { a } | früher in der transitiven Schließung von A , die alle Pfade von s durch die { a } zu t trennen .|{a}|{a}tk<|{a}|As{a}t

Hier verwenden wir die Tatsache, dass der Graph eine binäre DAG ist.G

Betrachten Sie die Menge der Vorgänger von . Da jeder dieser Eckpunkte höchstens zwei Ausmaße hat, gibt es genau drei Fälle:{a}

Fall 1 ein Vorgänger hat eine außerKante bis zu einem gewissen Eckpunkt in und ein Out-Rand zu einem gewissen Vertex in B .{a}B

In diesem Fall spielt es keine Rolle, ob wir die Kante vom Vorgänger zum Scheitelpunkt in oder die Kante vom Scheitelpunkt in { a } bis t löschen . Daher können wir diesen Scheitelpunkt "überspringen" (und prüfen, ob der Rückwärtspfad mit einem Pfad eines anderen Scheitelpunkts in { a } verschmilzt ).{a}{a}t{a}

Fall 2. Ein Vorgänger hat eine Außenkante zu einem Scheitelpunkt in und einen anderen Vorgänger von { a } .{a}{a}

In diesem Fall müssen wir entweder beide Kanten von bis t löschen, oder wir können eine einzelne frühere Kante im Pfad von s zum Vorgänger löschen , die beide Pfade trennt.{a}ts

Fall 3. Ein Vorgänger hat eine Außenkante zu zwei Eckpunkten in .{a}

Dies ist identisch mit Fall 2. Es spielt keine Rolle , ob wir einen der diesen Vorgängers Kanten löschen und die entsprechenden anderen Kanten von zu t oder beide der Kanten von der { eines * } zu t . Wir wollen nur wissen, ob wir den Pfad von s durch diesen Vorgänger zu t mit einer einzelnen Kante früher auf dem Pfad von s zum Vorgänger trennen können .{a}t{a}tsts

Insgesamt können wir, während wir die Vorgänger im transitiven Abschluss von rückwärts durchgehen , die "bisher besten" Entscheidungen gierig verfolgen. Das heißt, wir haben bei jedem Schritt eine offensichtliche Wahl, bei der einige Kanten gelöscht werden, aber wir möchten abwarten, ob eine bessere Option verfügbar ist. Sobald eine bessere Option gefunden wurde, können wir die vorherige Option "vergessen". Daher genügt eine gierige Wahl auf jeder Ebene der Vorgänger (solange wir bis zum Ende warten, um uns auf eine Wahl zu verpflichten).A

Therefore, with some basic memoization, the time and space complexities of this process appear to be at most O(|E|). This leaves out the fact that, while we can locally/greedily identify when we have found a "cheaper choice," it's a priori unclear which previously-recorded edges to remove. Therefore, we record the order in which we check edges as we go. Upon finding a better option, we repeat the search up to this point in order to find which previously-recorded edges to remove. The total time complexity of this step is O(|E|2) and space complexity O(|E|).

Altogether, the time complexity is O(|V|(|V|+|E|)) for initialization, plus O(|V|3) for the transitive closure, plus O(|E|2) for the search. The total time is O(|V|2+|E||V|+|V|3+|E|2)=O(|V|3+|E|2).

Upon completing the process, we obtain the minimum set of edges required to disconnect s from t while preserving at least one out-edge of every vertex in the graph (or we discover that a solution is impossible along the way, and abort).


I don't get the following statement: "[arc] from each vertex in {a} to some vertex in B, or some of the {a} have a single edge to t. In either case, we are allowed to delete any (a,t) arc." If a has only one out-arc, we are not allowed to delete it by definition! By the way, what's with the {a} notation?
Pål GD

Ah - I misread a comment about the second condition. It's not an integral part of the algorithm though -- if we cannot delete single out-arcs, we just don't. Skip it and move on the reverse-transitive-closure ordering. You either reach a vertex with two out-arcs or s (if so, output "no solution"). The {a} notation is because I'm thinking of the current collection of maximal vertices (generally speaking, there is more than 1 such vertex at a time, since a transitive closure is a partial ordering). Also, using just a seemed to imply an arbitrary element of A, which is not intended.
Daniel Apon

2
I finally managed to prove that this problem is NP-Complete.
amirv

1
@amirv Oh, please do share an outline of the proof in the form of an answer!
Raphael

1
The problem is NP-Complete, even if the underlying digraph is an unweighted binary DAG.
amirv
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.