À moins que P = NP, il n'existe pas d'algorithme en temps polynomial pour générer des problèmes de Sudoku généraux avec exactement une solution.
Dans sa thèse de maîtrise, Takayuki Yato a défini Le Problème d'Une Autre Solution (ASP), où le but est, étant donné un problème et une solution, de trouver une solution différente à ce problème ou de montrer qu'aucune n'existe. Yato a ensuite défini la complétude ASP, des problèmes pour lesquels il est difficile de trouver une autre solution, et a montré que Sudoku est ASP-complet. Comme il prouve aussi que la complétude ASP implique la difficulté NP, cela signifie que si vous permettez des tableaux de Sudoku de tailles arbitraires, il n'existe pas d'algorithme en temps polynomial pour vérifier si le puzzle que vous avez généré a une solution unique (à moins que P = NP).
Désolé de briser vos espoirs pour un algorithme rapide!
1 votes
Écrivez un algorithme qui résout un sudoku peu importe le nombre d'indices qu'il contient, même s'il n'en a aucun. Cet algorithme vous aidera dans de nombreuses tâches futures. La chose la plus basique qu'il fera est de vous donner une variété de sudokus résolus que vous pourrez utiliser pour créer des sudokus insolubles avec l'aide d'une fonction différente qui supprimera des indices et une autre qui trouvera le nombre de solutions à chaque fois que vous en retirerez un.
0 votes
J'ai généré les 81 nombres représentant l'une des solutions possibles à un sudoku sans nombres cachés. Voir ci-dessous: ``` 1 2 3 4 5 6 7 8 9 4 5 6 7 8 9 1 2 3 7 8 9 1 2 3 4 5 6 2 3 4 5 6 7 8 9 1 5 6 7 8 9 1 2 3 4 8 9 1 2 3 4 5 6 7 3 4 5 6 7 8 9 1 2 6 7 8 9 1 2 3 4 5 9 1 2 3 4 5 6 7 8 ```
0 votes
Ensuite, j'ai fixé le résultat de la computation dans un ``cache'' en utilisant une sorte de mémoïsation et j'ai généré un tableau mélangé de 9 chiffres que j'ai utilisé pour échanger les 81 chiffres avec ceux correspondants dans ce tableau mélangé. Exemple: Tableau mélangé: 9 6 1 2 5 4 7 8 3 >> Index: 1 2 3 4 5 6 7 8 9 >> nouveau tableau de 81 chiffres: ``` 9 6 1 2 5 4 7 8 3 2 5 4 7 8 3 9 6 1 ... ```