Question

J'ai récemment créé un solveur Sudoku utilisant C #, qui publie la solution à un sudoku après un temps raisonnable dans de nombreux cas. J'ai utilisé la réduction de base de Sudoku SAT (c'est-à-dire x111, ce qui signifie que c'est vrai si la colonne 1, la ligne 1 est remplie par 1). La méthode que j'ai faite cela ne prend pas dans une grande clause de variables, mais implicitement résout une grande proposition (qui peut être générée) pour chaque puzzle.

En raison du manque d'universalité, qu'il ne peut absorber aucune clause pour un autre puzzle NP-Complete, cela compte-t-il toujours comme un solveur SAT? Et y a-t-il plusieurs façons de réduire le sudoku en SAT (c'est-à-dire que pourriez-vous avoir de nombreuses façons différentes d'avoir cette grande proposition)?

EDIT: La façon dont j'ai créé le solveur Sudoku est de représenter chaque cellule par 9 variables, qui sont des classes dans la solution. Le programme convertit l'entrée de l'utilisateur en une proposition booléenne spécialement conçue pour Sudoku (c'est-à-dire obéissant à toutes les contraintes de Sudoku). Il résout ensuite la proposition. En raison du fait que Sudoku a été réduit à SAT et résolu, je me demande si le programme compte comme un solveur SAT (à lequel je crois que la réponse est non, car elle ne prendra aucune formule propositionnelle et ne le résout pas). Cependant, je veux aussi savoir que le `` l'unicité '' de Sudoku est en quelque sorte perdu lorsqu'il est converti en SAT, car les «vrais» problèmes de Sudoku n'ont qu'une seule solution, mais pour autant que je sache, SAT veut seulement savoir s'il y a une solution possible ou non.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top