Eingang ist ein Universum und eine Familie von Untermengen von , sagen wir, . Wir gehen davon aus, daß die Teilmengen in abdecken können , dh .U F ⊆ 2 U F U ⋃ E ∈ F E = U
Eine inkrementelle Überdeckungssequenz ist eine Folge von Teilmengen in , z. B. , die erfülltA = { E 1 , E 2 , ... , E | A | }
1) ,
2) jeder Neuling hat einen neuen Beitrag, dh , ;⋃ i - 1 j = 1 E i ⊊ ⋃ i j = 1 E i
Das Problem besteht darin, eine inkrementelle Überdeckungssequenz maximaler Länge zu finden (dh mit maximalem ). Beachten Sie, dass eine Sequenz maximaler Länge schließlich bedecken muss , dh .
Ich habe versucht, einen Algorithmus oder einen Näherungsalgorithmus zu finden, um die längste inkrementelle Überdeckungssequenz zu finden. Ich habe mich nur gefragt, wie diese Variante des Set-Cover-Problems heißt. Vielen Dank!
quelle
Antworten:
Hier zeige ich, dass das Problem NP-vollständig ist.
Wir konvertieren einen CNF wie folgt in eine Instanz Ihres Problems. Angenommen, die Variablen des CNF sind und die Klauseln sind , wobei . Es sei wobei alle Mengen in der Vereinigung vollständig disjunkt sind. Tatsächlich ist und , während eine beliebige Menge von Kardinalitäten . bezeichne auch und für jedes eine wachsende Familie der Länge darin fest, die mit für bezeichnet istx i m C j n < m U = ∪ i ( A i ∪ B i ∪ Z i ) A i = { a i , j | x i ∈ C j } ∪ { a i , 0 } B i = { b i , j ∣ x i ∈ C j } ∪n xich m Cj n < m U= ∪ich(Ai∪Bi∪Zi) Ai={ai,j∣xi∈Cj}∪{ai,0} Z i k = 2 n + 1 Z = ∪ i Z i Z i k Z i , l l = 1 .. k x i 2 k F A i ∪ Z i , l B i ∪ Z i , l C j F Z x i ≤ C j { aBi={bi,j∣xi∈Cj}∪{bi,0} Zi k=2n+1 Z=∪iZi Zi k Zi,l l=1..k . Für jede Variable addieren wir Mengen zu , jede Menge der Form und . Für jede Klausel fügen wir eine Menge zu , die enthält , und für jedes Element und für jeden Element .xi 2k F Ai∪Zi,l Bi∪Zi,l Cj F Z xi∈Cj {ai,j} x¯i∈Cj {bi,j}
Angenommen, die Formel ist erfüllbar, und Sie legen eine erfüllende Zuordnung fest. Wählen Sie dann die Mengen der Form oder , je nachdem, ob wahr ist oder nicht. Dies sind inkrementelle Mengen. Fügen Sie nun die Mengen hinzu, die den Klauseln entsprechen. Diese vergrößern sich auch immer weiter, da die Klauseln befriedigend sind. Schließlich können wir noch weitere Mengen hinzufügen (eine für jede Variable), damit die Sequenz abdeckt .k Ai∪Zi,l Bi∪Zi,l xi nk m k U
Nehmen wir nun an, dass Mengen in einer inkrementellen Reihenfolge gesetzt werden. Beachten Sie, dass höchstens Mengen, die entsprechen, für jedes ausgewählt werden können . Wenn also in der inkrementellen Sequenz keine Klauselsätze vorhanden sind, kann höchstens ausgewählt werden, was zu wenig ist. Beachten Sie, dass wir, sobald eine Klauselmenge ausgewählt ist, höchstens zwei Mengen entsprechend jedem auswählen können , insgesamt höchstens Mengen. Daher müssen wir mindestens Variablensätze auswählen, bevor ein Satz von Klauseln ausgewählt wird. Aber da wir höchstens für jedes x i auswählen könnenk + 1 x i x i n ( k + 1 ) x i 2 n n ( k - 1 ) k + 1n(k+1)+m k+1 xi xi n(k+1) xi 2n n(k−1) k+1 xi Dies bedeutet, dass wir für jedes mindestens , als k = 2 n + 1 . Dies bestimmt den "Wert" der Variablen, daher können wir nur "wahre" Klauseln auswählen.1 k=2n+1
Update: Der Wert von von n auf 2 n + 1 geändert, wie von Marzio herausgestellt.k n 2n+1
quelle
Dies ist ein Mengenpackungsproblem unter der Bedingung, dass es für die Lösung für jede Teilmenge B ⊆ A immer ein Element in ⋃ X ∈ B X gibt , das genau einmal behandelt wird.A B⊆A ⋃X∈BX
Beweis: Wenn Sie eine Lösung für Ihr Problem gefunden haben, hat es sofort diese Eigenschaft. In der Tat, wenn die optimale Lösung für Ihr Problem ist, dann betrachten Sie eine Teilmenge B dieser Mengen und nehmen an, dass E i die letzte Menge in dieser Sequenz ist, die in B vorkommt . Durch die erforderliche Eigenschaft, dass die Lösung inkrementell ist, folgt, dass E i ein Element abdeckt, das keine vorherige Menge abdeckt, was die obige Eigenschaft impliziert.E1,…,Em B Ei B Ei
Was die andere Richtung betrifft, ist es auch einfach. Gehen Sie von Lösung , suchen Sie das Element, das genau einmal abgedeckt ist, stellen Sie es als letzten Satz in der Sequenz ein, entfernen Sie diesen Satz und wiederholen Sie den Vorgang. QED.A
Das ist ein ziemlich natürliches Problem ...
Schnelle Erinnerung: Finden Sie in dem Problem mit dem Packen von Sätzen bei einer gegebenen Familie von Sätzen die maximale Teilmenge von Sätzen, die einer zusätzlichen Einschränkung entsprechen (z. B. wird kein Element mehr als zehnmal abgedeckt usw.).
quelle