Können Top-SAT-Löser einfache Zahlen berücksichtigen?


11

Moderne SAT-Löser sind sehr gut darin, viele reale Beispiele für SAT-Instanzen zu lösen. Wir wissen jedoch, wie man harte generiert: Verwenden Sie beispielsweise eine Reduzierung vom Factoring auf SAT und geben Sie die RSA-Nummern als Eingabe an.

Dies wirft die Frage auf: Was ist, wenn ich ein einfaches Beispiel für Factoring nehme? Anstatt zwei große Primzahlen auf Bits zu nehmen, was ist, wenn ich eine Primzahl auf Bits und eine Primzahl q auf Bits nehme , sei und die Codierung als SAT-Instanz. wäre eine leicht zu faktorisierende Zahl durch Brute-Force-Such- oder Siebverfahren, da einer der Faktoren so klein ist; Nimmt ein moderner SAT-Löser mit einer gewissen Standardreduzierung vom Factoring zum SAT auch diese Struktur auf?n/2plognn/lognN=pqFACTOR(N)N

Kann oben SAT-Löser Faktor wobei schnell?N=pq|p|=logn

Antworten:


10

Es gibt andere viel einfachere Fälle, von denen wir nachweislich wissen, dass die aktuellen Algorithmen nicht in subexponentieller Zeit gelöst werden können. Diese Algorithmen können nicht gezählt werden (fast alle sind Verbesserungen der DPLL, die dem Propositional Proof-System der Auflösung entsprechen).

Leider sind solche Beispiele unbefriedigende Beispiele. Die Frage nach der Suche nach natürlichen, zufriedenstellenden harten Instanzen für diese Algorithmen ist ein interessantes Forschungsproblem (Russeell Impagliazzo erwähnte dies während des Workshops zur Komplexität von Beweisen im letzten Jahr in Banff). Es gibt zufriedenstellende Fälle, in denen wir nachweislich wissen, dass die Algorithmen schlecht ausfallen, wenn es einen solchen Fall gibt, aber sie sind nicht sehr natürlich (sie basieren auf Formeln, die die Solidität von Algorithmen ausdrücken).

In Bezug auf das Factoring gibt es theoretisch kein Ergebnis, das besagt, dass es mit aktuellen Algorithmen nicht gelöst werden kann, wenn die Größe der Zahlen klein ist (z. B. logarithmisch wie in Ihrem Fall, dh die Zahlen werden unär angegeben), und tatsächlich können wir einfach schreiben Polynomzeitalgorithmen, die diese Zahlen berücksichtigen. Ob ein bestimmtes SAT-Solver-Programm sie lösen kann, hängt möglicherweise vom jeweiligen Algorithmus ab.


logNN/logN

@Artem, jede für die Auflösung niedrigere Beweiskomplexität würde ein Beispiel geben, zum Beispiel das Pigeon-Hole-Prinzip. Aus der Berechnung dieser Algorithmen für diese Instanz kann leicht ein Auflösungsbeweis (Widerlegungsbeweis) für die unbefriedigende Instanz extrahiert werden. Es gab eine schöne Umfrage von Nathan Segerlind aus dem Jahr 2007, dass das IIRC dies unter anderem abdeckt. Lassen Sie mich wissen, wenn es nicht da ist und ich werde Ihnen eine andere Referenz finden.
Kaveh

@Artem, ich denke, das Argument funktioniert auch für den Fall, dass nur eine der Zahlen logarithmisch ist, dh wir können es in Polynomzeit lösen, indem wir alle kleinen Zahlen durchgehen, um zu sehen, ob eine von ihnen ein Faktor des Produkts ist.
Kaveh

@Kaven ja, deshalb habe ich eine der Zahlen logarithmisch groß gemacht. Ich erkläre es in der Frage. Ich möchte nur keine Antwort, die eine unäre Darstellung voraussetzt, wie in Ihrem dritten Absatz vorgeschlagen. Ich werde später einen Blick auf Segerlind werfen. Nochmals vielen Dank für den Kommentar: D.
Artem Kaznatcheev

@Artem, du bist willkommen. :) (Ich habe unary verwendet, weil ich angenommen habe, dass beide Zahlen klein sind und unary verwendet wurden, um mit der Tatsache umzugehen, dass die Größe in ihnen exponentiell sein sollte. Alternativ kann man sie einfach auffüllen, um sie groß zu machen.)
Kaveh
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.