¿Qué algoritmo debo usar para crear un solucionador de Sudoku?

Sudoku se puede resolver utilizando el algoritmo de seguimiento recursivo.

¿Qué es el algoritmo de retroceso?

En los algoritmos de retroceso, intenta construir una solución paso a paso. Si en algún paso queda claro que la ruta actual en la que se encuentra no puede conducir a una solución, regrese al paso anterior (retroceso) y elija una ruta diferente. Brevemente, una vez que agota todas sus opciones en un cierto paso, retrocede.

Piensa en un laberinto o un laberinto: ¿cómo encuentras el camino desde una entrada hasta una salida? Una vez que llegue a un callejón sin salida, debe retroceder. ¿Pero retroceder a dónde? al punto de elección anterior. El retroceso también se conoce como búsqueda en profundidad .

Enfoque para resolver el sudoku usando el algoritmo de retroceso recursivo

  1. Como todos los demás problemas de Backtracking, podemos resolver Sudoku uno por uno asignando números a celdas vacías.
  2. Antes de asignar un número, debemos confirmar que el mismo número no está presente en la fila actual, la columna actual y la subcuadrícula 3X3 actual.
  3. Si el número no está presente en la fila, columna o subcuadrícula respectiva, podemos asignar el número y verificar de forma recursiva si esta asignación conduce a una solución o no.
  4. Si la asignación no conduce a una solución, entonces intentamos el siguiente número para la celda vacía actual. Y si ninguno de los números (1 a 9) conduce a la solución, devolvemos falso y volvemos a la celda anterior e intentamos el siguiente número posible allí.

Referencia:

Solucionador de Sudoku usando Backtracking Recursivo | Code Pumpkin: contiene una explicación clara y la implementación del programa Java. Vale la pena leer..!!

Sin duda, el algoritmo más rápido para resolver sudoku es a través de Dancing Links de Donald Knuth. Es la forma más rápida de resolver problemas de cobertura exactos. Puede encontrar implementaciones de enlaces de baile sudoku solucionador en todo Internet

Puedes hacerlo retrocediendo o aprendiendo a máquina …