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 a 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 .
- ¿Cuál es la mejor manera de resolver el cubo de Rubik 3 × 3 sin algoritmo?
- Cómo resolver un cubo 4by4 rubix capa por capa
- ¿Alguien puede hacer un tutorial completo y fácil de seguir para aprender a resolver un cubo de Rubik 7 × 7?
- Cómo resolver este interesante rompecabezas / pregunta numérica
- ¿Cuántas personas en el mundo pueden resolver un cubo de Rubik?
Enfoque para resolver el sudoku usando el algoritmo de retroceso recursivo
- Como todos los demás problemas de Backtracking, podemos resolver Sudoku uno por uno asignando números a celdas vacías.
- 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.
- 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.
- 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 Backcurcking Recursivo | Code Pumpkin: contiene una explicación clara y la implementación del programa Java. Vale la pena leer..!!