Actualmente tengo un rompecabezas de sudoku solver del programa y he probado todos los puzzles que puedo encontrar que están etiquetados como "los más duros" en varios sudoku juegos de video y libros de rompecabezas. Mi solver ha resuelto todos ellos. Se utiliza en la actualidad las siguientes 4 reglas en tiempo polinomial (es decir, el polinomio de tiempo si la junta se $N^2 \times N^2$ en lugar de $9 \times 9$).
1) cada celda para ver si sólo uno de los valores es posible para el celular
2) Compruebe para cada fila/columna/bloque si hay un valor que sólo una célula puede tener
3) Compruebe para cada fila/columna/bloque si hay 2, las células que sólo puede tener el mismo 2 valores. (Luego hay otras plazas en el mismo grupo puede tener los valores)
4) Para cada fila/columna y bloque que se cruza con ella, a ver si hay un valor que sólo puede aparecer en la intersección de 3 células, ya sea para la fila/columna o para el bloque. Entonces no hay otras plazas en la fila/columna o bloque puede tener ese valor.
Después de que estas reglas se aplican repetidamente, si el rompecabezas no está resuelto, entonces el programa adivina un valor de una celda y ve si esto conduce a una solución o contradicción cuando los cuatro reglas se aplican repetidamente. Si la contradicción es la que se encuentra, entonces se quita el valor de los valores posibles para la célula. Esta adivinanza se aplica por separado para cada celda+valor posible si el número de valores posibles para la celda es de 3 o menos. No hay simultánea en vilo durante varias celdas. Si al menos un valor posible es removido por algunas células, los 4 reglas se aplicó de nuevo varias veces hasta que adivinar es necesario de nuevo. Y repetir. Si es que alguna vez sucede que las 4 reglas y adivinar no proporcionen ningún tipo de información adicional, entonces el programa se da por vencido y se imprime la solución parcial que se encuentran.
Ahora, hay alrededor de 10 o de 20 diferentes polinomio tiempo las reglas que se han ideado para descartar posibilidades y deducir de las células de los valores en el sudoku, y sólo he aplicado la 4. Además, la adivinación sólo se adivina una celda del valor en un momento y simplemente quita el valor de los valores posibles para el celular si existe una contradicción se encuentra. Así que es extraño para mí que este resuelve todos los puzzles más difíciles que puedo encontrar. Alguien puede producir un rompecabezas bastante difícil que mi programa no puede resolver?