Les meilleurs solveurs SAT peuvent-ils prendre en compte les nombres faciles?


11

Les solveurs SAT modernes sont très efficaces pour résoudre de nombreux exemples concrets d'instances SAT. Cependant, nous savons comment générer des disques durs: par exemple, utilisez une réduction de l'affacturage vers SAT et donnez les numéros RSA en entrée.

Cela soulève la question: et si je prends un exemple simple d'affacturage. Au lieu de prendre deux grands nombres premiers sur bits, que se passe-t-il si je prends un p premier sur log n bits et un premier q sur n / log n bits, soit N = p q et le codage F A C T O R ( N ) en tant qu'instance SAT. Nn/2plognn/lognN=pqFACTOR(N)Nserait un nombre facile à factoriser par recherche par force brute ou par tamisage, car l'un des facteurs est si petit; Est-ce qu'un solveur SAT moderne avec une réduction standard de l'affacturage à SAT reprend également cette structure?

Peut dépasser le facteur -solveurs N = p q| p | = log n rapidement?N=pq|p|=logn

Réponses:


10

Il existe d'autres exemples beaucoup plus simples que nous savons de manière prouvable que les algorithmes actuels ne peuvent pas résoudre en temps sous-exponentiel. Ces algorithmes sont incapables de compter (presque tous sont des améliorations de DPLL qui correspondent au système de preuve propositionnelle Resolution).

Malheureusement, ces exemples ne sont pas des exemples satisfaisants. La question de la recherche d'instances dures naturelles satisfaisables pour ces algorithmes est un problème de recherche intéressant (Russeell Impagliazzo l'a mentionné lors de l'atelier de complexité de la preuve l'an dernier à Banff). Il existe des exemples satisfaisants que nous savons de manière prouvable que les algorithmes échouent mal s'il y en a, mais ils ne sont pas très naturels (ils sont basés sur des formules exprimant la solidité des algorithmes).

En ce qui concerne l'affacturage, si la taille des nombres est petite (par exemple logarithmique comme dans votre cas, c'est-à-dire que les nombres sont donnés en unaire), alors théoriquement il n'y a aucun résultat qui dit qu'il ne peut pas être résolu par les algorithmes actuels, et en fait, nous pouvons écrire simple algorithmes de temps polynomiaux qui tiennent compte de ces nombres. Donc, si un programme de résolution SAT particulier peut les résoudre, cela dépendra de l'algorithme particulier.


logNN/logN

@Artem, toute complexité de preuve inférieure pour la résolution donnerait un exemple, prenez par exemple le principe du trou de pigeon. On peut facilement extraire une preuve de Résolution (réfutation) pour l'instance insatisfaisante du calcul de ces algorithmes sur cette instance. Nathan Segerlind a fait une belle enquête en 2007 sur le fait que l'IIRC couvre cela entre autres. Faites-moi savoir s'il n'est pas là et je vous trouverai une autre référence.
Kaveh

@Artem, je pense que l'argument fonctionne également dans le cas où un seul des nombres est logarithmique, c'est-à-dire que nous pouvons le résoudre en temps polynomial en parcourant tous les petits nombres pour voir si l'un d'eux est un facteur du produit.
Kaveh

@Kaven oui, c'est pourquoi j'ai fait l'un des nombres de taille logarithmique. Je l'explique dans la question. Je ne veux tout simplement pas d'une réponse qui suppose une représentation unaire comme le suggère votre troisième paragraphe. Je reviendrai sur Segerlind plus tard. Encore une fois, merci pour le commentaire: D.
Artem Kaznatcheev le

@Artem, vous êtes les bienvenus. :) (J'ai utilisé unaire parce que je supposais que les deux nombres sont petits et utilisés comme étant unaires pour faire face au fait que la taille devrait être exponentielle en eux, alternativement on peut simplement remplir pour les rendre grands.)
Kaveh
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.