Scott Aaronsons heutiger Blogbeitrag enthielt eine Liste von interessanten offenen Problemen / Aufgaben in der Komplexität. Besonders eines hat meine Aufmerksamkeit erregt:
Erstellen Sie eine öffentliche Bibliothek von 3SAT-Instanzen mit möglichst wenigen Variablen und Klauseln, deren Lösung bemerkenswerte Konsequenzen hätte. (Zum Beispiel Instanzen, die die RSA-Faktorisierungsherausforderungen codieren.) Untersuchen Sie die Leistung der besten aktuellen SAT-Löser in dieser Bibliothek.
Dies hat meine Frage aufgeworfen: Was ist die Standardtechnik, um RSA / Factoring-Probleme auf SAT zu reduzieren, und wie schnell ist sie? Gibt es eine solche Standardreduzierung?
Nur um klar zu sein, mit "schnell" meine ich keine Polynomzeit. Ich frage mich, ob wir der Komplexität der Reduktion engere Grenzen gesetzt haben. Gibt es zum Beispiel eine bekannte kubische Reduktion?
quelle
Als ich das, was @Amir schrieb, erweiterte, stieß ich auf die folgende nette Webseite, auf der sich ein CNF-Generator für Factoring-Schaltungen befindet , die man zB auf einigen der (jetzt inaktiven) RSA Factoring Challenge- Nummern ausführen kann . Die generierten Instanzen sind im DIMACS- Format, das direkt an einen der aktuellen Wettbewerber des jährlichen SAT- Solver- Wettbewerbs gesendet werden kann . In Bezug auf harte SAT-Instanzen im Allgemeinen scheinen die Benchmark-Probleme, die auf der Website des SAT-Wettbewerbs angegeben wurden, sehr nützlich zu sein.
quelle
Hier ist ein Artikel zum Generieren von SAT-Instanzen aus Factoring:
Horie, S. & Watanabe, O. [1997] " Hard instance generation for SAT " Algorithmen und Berechnung 1350: 22-31 ( pdf )
quelle
ToughSat von Henry Yuen und Joseph Bebel ist ein weiteres Tool, das dem von @Martin ähnelt und CNF-Formeln generiert, die Instanzen von Factoring und andere schwierige Probleme codieren.
quelle
Siehe
satfactor
:Konvertieren Sie die ganzzahlige Faktorisierung in ein boolesches Problem der ZUFRIEDENHEIT
Überblick
Das Bestimmen von Faktoren mit einer großen ganzen Zahl ist seit mindestens Euklids Zeit für den Menschen von Interesse. Es ist kein allgemeiner Algorithmus für dieses Problem bekannt, der in Bezug auf die Anzahl der zur Darstellung der Ganzzahl benötigten Bits in weniger als exponentieller Zeit skaliert.
Was macht dieser Code?
Konvertiert ein Ganzzahlfaktorisierungsproblem in ein boolesches SATISFIABILITY-Problem. Wenn das Problem von einem SAT-Löser gelöst wird, werden die ganzzahligen Faktoren extrahiert.
Die Zufriedenheitslöser von Boolen verbessern sich jedes Jahr. Alle 2 Jahre findet ein internationaler Wettbewerb zwischen Solvern statt (siehe http://www.satcompetition.org/ und http://www.satlive.org/ ). Wie gut können diese hochmodernen Löser eines der ältesten offenen mathematischen Probleme lösen, die es gibt?
Dieses Projekt hat zwei Hauptziele:
1) Konvertieren Sie das Problem und faktorieren Sie eine ganze Zahl von Interesse!
2) Erstellen Sie schnell entweder ein lösbares oder ein unlösbares ZUFRIEDENHEITS-Problem, dessen Schwierigkeit vom Entwickler leicht kontrolliert werden kann.
- Um ein unlösbares SATISFIABILITY-Problem zu erstellen, codieren Sie einfach eine Primzahl.
- Um schwierigere, aber lösbare Probleme zu erzeugen, wählen Sie größere zusammengesetzte Zahlen mit weniger Faktoren.
Die Anzahl der Interessenten kann beliebig groß sein!
Es gibt einige Open-Source-Löser für ZUFRIEDENHEIT. Einige davon finden Sie unter http://www.satlive.org/ .
Bauen
make -C src /
Wie man
Geben Sie eine Anzahl von Interessen in binärer Form ein:
bin / iencode 10101> composite.21
// Löse mit deinem Lieblingslöser und füge die Ergebnisse in die Datei solution.txt ein
bin / extract-sat composite.21 solution.txt
Der Ausgang wäre:
00011
00111
Dies sind Binärdarstellungen für die Dezimalzahlen 3 und 7, die Faktoren von 21.
Wenn eine Eingabe-Ganzzahl mehr als 2 Faktoren enthält und das SAT-Problem gelöst ist, werden nur zwei der Faktoren ausgegeben. Dies sind möglicherweise keine Primzahlen (Sie können dies problemlos in Maxima, Maple oder Mathematica testen).
Nicht alle SAT-Solver-Ausgaben haben dasselbe Format. Möglicherweise müssen Sie diese Ergebnisse leicht behandeln. Für extract-sat ist eine Lösungsdatei mit einer Liste von Ganzzahlen (in beliebig vielen Zeilen) erforderlich. Beispielsweise,
1 -2 3 4 -5 ...
quelle