Sei eine CNF-Formel mit Variablen und Sätzen. Es sei eine Variablenzuordnung und die Anzahl von Klauseln, die durch eine Variablenzuordnung zu erfüllt sind. . Definieren Sie dann Median-SAT als das Problem der Berechnung des Medianwerts von über alle . Wenn beispielsweise eine Tautologie ist, lautet die Lösung für Median-SAT da unabhängig von der Zuweisung jede Klausel erfüllt wird. Im Fall vonn m t ∈ { 0 , 1 } n f φ ( t ) ∈ { 0 , ... , m } φ f φ ( t ) t ∈ { 0 , 1 } n φ m ¯ S A TDie Lösung für Median-SAT könnte irgendwo zwischen und .m - 1
Diese Frage tauchte auf, als ich über zwei natürliche Erweiterungen von SAT, MAX-SAT und #SAT nachdachte und die Schwierigkeit des sich daraus ergebenden Problems abschätzte, wenn sie zusammengesetzt würden. Für MAX-SAT müssen wir eine bestimmte Variablenzuordnung finden, um die Anzahl der Variablen zu maximieren, die von erfüllt werden . Für #SAT müssen wir zählen, wie viele Zuweisungen alle Klauseln von erfüllen . Diese Variante wird hauptsächlich als Erweiterung von #SAT (und tatsächlich von #WSAT ) ausgeführt, behält jedoch einen Teil des MAX-SAT-Geschmacks bei, indem wir die Anzahl der zufriedenen Klauseln zählen, anstatt nur zu entscheiden, ob sie alle zufrieden sind oder nicht nicht.m φ
Dieses Problem scheint schwerer zu sein als #SAT oder #WSAT. Für jede Variablenzuweisung entscheidet #SAT über das Boolesche Problem, ob diese Zuweisung erfüllt oder nicht, während Median-SAT festlegt, "inwieweit" in Bezug auf die Anzahl der Klauseln erfüllt ist, die eine Zuweisung erfüllt.φ
Mir ist klar, dass dieses Problem etwas willkürlich ist. Die Berechnung des Durchschnitts oder der Modusanzahl von Klauseln, die von jeder Variablenzuweisung erfüllt werden, scheint die gleiche Qualität zu erfassen. Wahrscheinlich auch viele andere Probleme.
Wurde dieses Problem untersucht, vielleicht unter einem anderen Deckmantel? Wie schwer ist es im Vergleich zu #SAT? Mir ist a priori nicht klar, dass Median-SAT sogar in FPSPACE enthalten ist, obwohl es in FEXPTIME enthalten zu sein scheint.
quelle
Antworten:
Wenn eine Instanz von SAT, eine Ganzzahl und eine Variablenzuweisung gegeben sind, können wir in polynomieller Zeit entscheiden, ob genau k Klauseln erfüllt sind, indem wir einfach die Anzahl der erfüllten Klauseln zählen und testen, ob diese Anzahl gleich k ist . Daher können wir mit einem #P- Orakel die Gesamtzahl der variablen Zuordnungen berechnen, die genau k- Klauseln erfüllen .k k k k
Wie Max-SAT kann auch Median-SAT mit einem Orakel in Polynomzeit berechnet werden . Dies zeigt, dass das Problem in F P # P ⊆ F P S P A C E liegt .#P FP#P⊆FPSPACE
quelle
Dieses Problem kann gelöst werden , indem Anrufungen eines Orakels für MAJSAT.⌈lgm+1⌉
Es sei der gewünschte Medianwert für φ . Definieren Sie für festes k die Formel ψ k so, dass es für die Zuweisung x gilt, wenn x mindestens k der Klauseln von φ erfüllt . Beachten Sie, dass Sie bei φ in CNF-Form und bei k leicht ψ k in CNF-Form in Polynomzeit konstruieren können.M(φ) φ k ψk x x k φ φ k ψk
Angenommen, wir hatten ein Orakel für MAJSAT. Eine Abfrage der Formel würde uns sagen, ob die Mehrzahl der Zuweisungen die Formel ψ k wahr macht oder äquivalent dazu, ob M ( φ ) ≥ k ist . Um also M ( φ ) zu lernen , wenden Sie eine binäre Suche an (beginnen Sie mit k = m / 2 , und erhöhen oder verringern Sie dann k entsprechend den Ergebnissen des Orakels). Nach lg m + 1 Iterationen zeigt die binäre Suche den Wert von M ( φ )ψk ψk M(φ)≥k M(φ) k=m/2 k lgm+1 M(φ) . Jede Iteration erfordert eine Anfrage an unser Orakel für MAJSAT.
quelle