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.
- ¿Cómo escribirías un programa que pueda calcular los dígitos de phi (proporción áurea)?
- ¿Qué es el helecho Barnsley?
- Las calificaciones en una prueba intermedia se distribuyen normalmente con una media de 69 y una desviación estándar de 10. ¿Cuál es la probabilidad de que una clase de 27 tenga un promedio menor de 67 (3 lugares decimales)? ¿Cómo hago esto?
- ¿Todos los espacios nulos son subespacios? y todos los subespacios tienen un espacio nulo?
- ¿Qué es un algoritmo para encontrar la mediana de la complejidad en o (n) tiempo?
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
- 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 Backtracking Recursivo | Code Pumpkin: contiene una explicación clara y la implementación del programa Java. Vale la pena leer..!!