Um wie viel können wir die Anzahl der Klauseln reduzieren, indem wir von

8

Wenn wir annehmen, dass wir mit einer Instanz von k -SAT beginnen und versuchen, das Problem in eine Instanz von (k+m) -SAT zu konvertieren, in der es (k+m) Literale pro Klausel gibt, können wir eine Reduzierung der Gesamtzahl der Klauseln?

Nach dem Posten wurde mir klar, dass wir nicht garantieren können, dass die Anzahl der Klauseln reduziert werden kann. Ich frage mich jedoch, ob wir n Klauseln haben, könnten wir so etwas wie n/k+O(1) Klauseln durch eine "Reduktions" -Technik erhalten?

Wenn ja, um wie viel können wir garantieren, dass die Gesamtzahl der Klauseln um reduziert werden kann? Wenn wir zum Beispiel mit k -SAT mit nk Klauseln beginnen, was ist die kleinste garantierte nk+m , die neue Anzahl von Klauseln, die sich ergibt, wenn wir diese Instanz in (k+m) -SAT konvertieren?

Noch wichtiger ist, wie führen wir diese Konvertierung durch?

Matt Groff
quelle

Antworten:

5

Eine Art der Umwandlung ist einfach die Umkehrung der Umwandlung von k-sat in 3-sat:

Denken Sie daran, die Umwandlung von k-sat in "j" -sat, :j<k

(x1x2...xj...xk)(x1x2...xjd)(d¯xj+1xj+2...xk)

Hier ist eine Dummy-Variable, was so etwas wie "Diese Klausel ist nicht wahr, aber eine andere Klausel, die ich kenne, ist" bedeutet. Die andere Klausel ist die nächste Klausel, die vom Original abgespalten wurde. Das Obige ist ein Beispiel, in dem 2 j k ist , andernfalls ist der 2. geteilte Knoten immer noch größer als j , und wir müssen diesen auf die gleiche Weise erneut teilen.d2jkj

Konvertierung rückgängig machen

, dann können Sie die Klauseln kombinieren in:(x1x2...xj)(x¯jxj+1...xk)

(x1x2...xj1xj+1xj+2...xk)

Beachten Sie das fehlende in dieser neuen Formel.xj

Natürlich ist es nicht garantiert , dass Sie solche Klauseln in einer beliebigen Formel finden, sodass das kleinste garantierte gleich n k ist .nk+mnk

Bei gewöhnlichen Formeln erscheinen jedoch eine Variable und ihre Negation in der Formel. Andernfalls können Sie eine reine wörtliche Eliminierung durchführen ( hier beschrieben ). Nehmen wir der Einfachheit halber auch an, dass . Dann können wir zwei beliebige Klauseln kombinieren, die in einem einen Literal und in dem anderen dessen Negation enthalten. Da jedes Literal eine andere Klausel mit einer Negation haben sollte, kann man empirisch davon ausgehen, dass Sie in der Lage sein sollten, die Anzahl der Klauseln ungefähr zu halbieren (Sie könnten mit einigen Literalen und ihren Negationen in bereits verbundenen Klauseln stecken bleiben, und daher werden Sie mit bleiben einige nicht verbindbare Klauseln am Ende; eine optimale Verbindung solcher Klauseln könnte ein weiteres interessantes Problem sein).k+m2k2

BEARBEITEN:

Nach dem Nachdenken wurde mir klar, dass darf und nicht an anderer Stelle in der Formel verwendet werden muss, um die beiden Klauseln, zu denen es gehört, zu reduzieren. Daher ist diese Art von Klauseln (eine enthält ein Literal und die andere ihre Negation, wobei dieses Literal an keiner anderen Stelle in der Formel verwendet wird) viel seltener als ich oben gedacht habe. Die eigentliche Antwort lautet also: Es gibt keine Garantie dafür, um wie viel wir die Anzahl der Klauseln in der Formel reduzieren können.xj

Realz Slaw
quelle
Wie haben Sie diese Umrechnungsformel erhalten? Es scheint mir falsch zu sein, und Sie können es anhand der Wahrheitstabelle überprüfen.
Matt Groff
Hallo, ich habe es vor langer Zeit gelesen, aber Sie können es hier sehen . Ich hätte es vielleicht falsch geschrieben oder bei der Konvertierung etwas unklar gemacht. Wenn ja, können Sie darauf hinweisen.
Realz Slaw
@MattGroff Ich kann meinen Fehler scheinbar nicht finden. Können Sie ein Gegenbeispiel liefern?
Realz Slaw
(AB)(Ad)(d¯B)d¯d
ABAB(Ad)(d¯B)0000|d={0,1}0111|d={1}1011|d={0}1111|d={1,0}
Realz Slaw