Bei einer Familie von höchstens n Teilmengen von { 1 , 2 , … , n } . Der Vereinigungsschluss F ist eine andere Mengenfamilie C, die jede Menge enthält, die konstruiert werden kann, indem die Vereinigung von 1 oder mehr Mengen in F genommen wird . Von | C | Wir bezeichnen die Anzahl der Sätze in C .
Was ist der schnellste Weg, um die Schließung der Gewerkschaft zu berechnen?
Ich habe eine Äquivalenz zwischen dem Gewerkschaftsschluss und der Auflistung aller maximal unabhängigen Mengen in einem zweigeteilten Diagramm gezeigt, daher wissen wir, dass die Entscheidung über die Größe des Gewerkschaftsschlusses # P-vollständig ist.
Es gibt jedoch eine Möglichkeit, alle maximalen unabhängigen Mengen (oder maximalen Cliquen) in Zeit für einen Graphen mit n Knoten und m Kanten aufzulisten. Tsukiyama et al. 1977. Dies ist jedoch nicht auf zweigeteilte Graphen spezialisiert.
Wir haben einen Algorithmus für zweigeteilte Graphen mit Laufzeit http://www.ii.uib.no/~martinv/Papers/BooleanWidth_I.pdf
Unsere Methode basiert auf der Beobachtung, dass jedes Element in durch die Vereinigung eines anderen Elements von C und einer der ursprünglichen Mengen hergestellt werden kann. Daher werden wir jedes Mal, wenn wir C ein Element hinzufügen, versuchen, es um eine der n ursprünglichen Mengen zu erweitern. Für jedes dieser n ⋅ | C | Sets müssen wir überprüfen, ob sie noch in C sind . Wir speichern C als binären Suchbaum, daher benötigt jede Suche log | C | ⋅ n Zeit.
Ist es möglich, den Gewerkschaftsschluss in der Zeit O ( | C | ⋅ n 2 ) zu finden ? Oder sogar in der Zeit O ( | C | ⋅ n ) ?