Le blog de Scott Aaronson a donné aujourd'hui une liste de problèmes / tâches ouverts intéressants en complexité. Un en particulier a retenu mon attention:
Construisez une bibliothèque publique d'instances 3SAT, avec aussi peu de variables et de clauses que possible, qui aurait des conséquences notables si elle était résolue. (Par exemple, les instances codant les défis d'affacturage RSA.) Enquêter sur les performances des meilleurs solveurs SAT actuels sur cette bibliothèque.
Cela a déclenché ma question: quelle est la technique standard pour réduire les problèmes RSA / factorisation en SAT, et à quelle vitesse est-elle? Existe-t-il une telle réduction standard?
Juste pour être clair, par "rapide", je ne veux pas dire le temps polynomial. Je me demande si nous avons des limites supérieures plus strictes sur la complexité de la réduction. Par exemple, y a-t-il une réduction cubique connue?
la source
En étendant ce que @Amir a écrit, je suis tombé sur la belle page Web suivante qui héberge un générateur CNF pour les circuits d'affacturage que l'on pourrait par exemple exécuter sur certains des numéros (maintenant inactifs) du RSA Factoring Challenge . Les instances générées sont en DIMACS format qui peut être directement envoyé à l'une des concurrents actuels dans le rapport annuel SAT solver la concurrence . En ce qui concerne les instances SAT dures en général, les problèmes de référence donnés sur le site de compétition SAT semblent être très utiles, également la classification en aléatoire / artisanal / industriel est agréable.
la source
Voici un article sur la génération d'instances SAT à partir de l'affacturage:
Horie, S. & Watanabe, O. [1997] " Génération d'instance dure pour SAT " Algorithmes et calcul 1350: 22-31 ( pdf )
la source
ToughSat par Henry Yuen et Joseph Bebel est un autre outil similaire à celui lié par @Martin, qui génère des formules CNF qui codent des instances d'affacturage et d'autres problèmes difficiles.
la source
Voir
satfactor
:Convertir la factorisation d'entiers en un problème booléen de SATISFIABILITÉ
Présentation
La détermination des facteurs d'un grand nombre entier intéresse l'homme depuis au moins le temps d'Euclide. Il n'y a pas d'algorithme général connu pour ce problème qui évolue en moins de temps exponentiel par rapport au nombre de bits nécessaires pour représenter l'entier.
Que fait ce code
Convertit un problème de factorisation d'entier en un problème de SATISFIABILITÉ booléenne. Si le problème est résolu par un solveur SAT, il extrait alors les facteurs entiers.
Les solveurs de satisfiabilité Boolen s'améliorent chaque année. Tous les 2 ans, une compétition internationale entre solveurs a lieu (voir http://www.satcompetition.org/ et http://www.satlive.org/ ). Dans quelle mesure ces solveurs à la pointe de la technologie peuvent-ils faire face à l'un des plus anciens problèmes de mathématiques ouvertes qui existent?
Ce projet a 2 objectifs principaux:
1) Convertir le problème et factoriser un entier d'intérêt!
2) Créez rapidement un problème de SATISFACTION résoluble ou insoluble, dont la difficulté est facilement contrôlée par le créateur.
- Pour créer un problème de SATISFACABILITÉ insoluble, il suffit de coder un nombre premier.
- Pour créer des problèmes plus difficiles mais résolubles, choisissez des nombres composites plus grands avec moins de facteurs.
Le nombre d'intérêt peut être de n'importe quelle taille!
Il existe des solveurs de SATISFIABILITÉ open source. Voir http://www.satlive.org/ pour certains d'entre eux.
Construire
faire -C src /
Comment
Entrez un certain nombre d'intérêt dans sa forme binaire:
bin / iencode 10101> composite.21
// résolvez avec votre solveur préféré et mettez les résultats dans solution.txt
bin / extract-sat composite.21 solution.txt
La sortie serait:
00011
00111
qui sont des représentations binaires pour les nombres décimaux 3 et 7, les facteurs de 21.
Si un entier d'entrée a plus de 2 facteurs et que le problème SAT est résolu, la sortie ne sera que deux des facteurs. Ce ne sont peut-être pas des nombres premiers (vous pouvez le tester facilement dans Maxima, Maple ou Mathematica).
Tous les résultats des solveurs SAT n'ont pas le même format. Vous devrez peut-être examiner ces résultats légèrement. extract-sat nécessite un fichier de solution contenant une liste d'entiers (sur un nombre quelconque de lignes). Par exemple,
1 -2 3 4 -5 ...
la source