Ich bin daran interessiert, Clique auf SAT zu reduzieren , ohne die Instanz viel größer zu machen.
Die Clique befindet sich in NP, sodass sie mithilfe des logarithmischen Raums auf SAT reduziert werden kann. Durch die einfache Reduzierung des Garey / Johnson-Lehrbuchs wird die Instanz auf Kubikgröße vergrößert. Allerdings -Clique in P für jeden festen ist so gibt es „sollte“ eine effiziente Reduktion zumindest sein für feste .k k
Eine Möglichkeit, die Reduktion zu erstellen, besteht darin , die SAT-Variablen als charakteristischen Vektor zu verwenden. Eine Variable, die auf true gesetzt ist, zeigt an, dass sich der zugehörige Scheitelpunkt in der Clique befindet. Diese Reduzierung ist natürlich, erzeugt jedoch eine SAT-Instanz mit quadratischer Größe, wenn der Graph dünn ist. Für einen spärlichen Graphen sind quadratisch viele Klauseln erforderlich, um zu erzwingen, dass in jedem Paar nicht benachbarter Scheitelpunkte höchstens ein Scheitelpunkt in der Clique sein darf.
Versuchen wir es besser zu machen als .
Die generische Reduktion von Cook / Schnorr / Pippenger / Fischer funktioniert, indem zuerst ein polynomial zeitgebundener NDTM genommen wird, der die Sprache bestimmt, der NDTM durch einen ahnungslosen DTM simuliert wird, der ahnungslose DTM durch eine Schaltung simuliert wird und dann die Schaltung durch eine 3 simuliert wird -SAT-Instanz. Dies erzeugt eine 3-SAT-Instanz der Größe wenn die NDTM-Zeitgrenze . Der Log-Faktor scheint aufgrund des Overheads bei der Simulation durch eine ahnungslose Maschine unvermeidbar. Für Clique scheint man , was eine 3-SAT-Instanz von ergibt, die für festes quasilinear istt ( n ) k t ( n ) = O ( n k ) O ( n k ( log n + log k ) ). In seiner Arbeit von 1988 fragte Cook, ob es eine bessere generische Reduktion für Sprachen in NP gibt, und soweit ich weiß, ist dies noch offen. Clique hat jedoch viel Struktur, so dass man es in diesem Fall vielleicht besser machen kann.
Gibt es eine bessere Reduktion von Clique zu SAT?
Ist es insbesondere für festes möglich , Clique auf SAT zu reduzieren , während die Zunahme der Instanzgröße linear gehalten wird? Oder kann man ein vorhandenes Ergebnis verwenden, um zu argumentieren, dass dies wahrscheinlich nicht möglich ist? Ich habe versucht, Fortnow / Santhanam und Dell / van Melkebeek zu verwenden, aber der Overhead scheint zu groß zu sein, als dass diese Ergebnisse etwas Bestimmtes implizieren könnten .k
(Ich habe mit einer Reduzierung gearbeitet, die den Log-Faktor zu vermeiden scheint, aber bevor ich mehr Zeit mit den blutigen Details verschwendete, um deren Richtigkeit zu überprüfen, möchte ich wissen, ob eine solche Reduzierung bereits bekannt ist oder ob dies unwahrscheinlich ist existieren.)
quelle
Antworten:
Sie können clique als SAT-Instanz mit -Variablen und -Klauseln ausdrücken . Für festes ist dies in linear .k O(nk) O(nk2) k n
Sei wenn der te Scheitelpunkt in der Clique ist (nach lexikographisch sortierter Reihenfolge). Mit anderen Worten, ist eine "One-Hot" -Codierung des ten Scheitelpunkts in der Clique (es ist der charakteristische Vektor für eine Menge mit einem Element). Dies führt Variablen ein.xiv=1 v i xi i nk
Jetzt können Sie für jedes mithilfe von Klauseln erzwingen, dass die entsprechenden zwei Eckpunkte durch eine Kante verbunden sind. Beispielsweise lautet eine Klausel wobei die Eckpunkte sind, die dem Scheitelpunkt benachbart sind . Sie erhalten eine Klausel pro Scheitelpunkt . Dies führt insgesamt -Klauseln ein.(i,j) n (¬xiu∨xjv1∨⋯∨xjvm) v1,…,vm u u O(nk2)
Für jedes können Sie mithilfe von -Klauseln erzwingen, dass ein Vektor des Hamming-Gewichts 1 ist und dass . Dies fügt insgesamt weitere Klauseln hinzu.x i x i < x i + 1 O ( n ) O ( n k )i xi xi<xi+1 O(n) O(nk)
Es könnte möglich sein, es besser zu machen, indem Variablen verwendet werden, um die Scheitelpunkte in der Clique darzustellen ( Bits reichen aus, um den ten Scheitelpunkt in der Clique darzustellen ) und dann eine Schaltung aufzubauen, um zu prüfen, ob eine Menge von Scheitelpunkten vorliegt einer Clique entsprechen. Ein Ansatz zum Aufbau einer solchen Schaltung könnte darin bestehen, die Liste aller Paare dieser Eckpunkte in sortierter Reihenfolge zu erstellen und diese dann mit der Liste der Kanten unter Verwendung des Merge-Verfahrens von Mergesort oder ähnlichem zu vergleichen Das. Es könnte möglich sein, so etwas wie eine - Schaltung zu erhalten, die dann in eine SAT-Instanz derselben Größe übersetzt wird (wobeilg n i k k ( k - 1 ) / 2 O ( ( n + m + k 2 ) Poly ( lg n ) ) m =klgn lgn i k k(k−1)/2 O((n+m+k2)poly(lgn)) m= die Anzahl der Kanten in der Grafik). Ich habe jedoch nicht versucht, die Details herauszufinden, um festzustellen, ob dies tatsächlich möglich ist.
quelle