Después de pasar menos de 15 segundos mirando el rompecabezas, parece que retroceder optimizado para explorar opciones más probables de ser victoriosas lo haría primero.
Para que el algoritmo elija primero la dirección de búsqueda más prometedora, usaría una variación de un algoritmo X: mantener un montón de listas de qué dígito (¿es un dígito o un número? No importa) se ajusta a qué celdas, y primero iterando sobre las celdas donde el número de opciones es el más pequeño; idealmente uno.
En otras palabras:
- una estructura de datos por celda, para contener la lista de las opciones que aún se ajustan a esta celda,
- una estructura de datos para todas las celdas, para permitir dibujar rápidamente la siguiente celda a considerar, que tiene la menor cantidad posible de opciones,
- y un algoritmo para mantener incrementalmente sincronizados los dos anteriores, a medida que la búsqueda sube y baja (considerando y sin considerar cierta opción).
También estoy seguro de que una solución DP puede funcionar. Sin embargo, probablemente sería la mejor opción para tableros “largos” (ej. 8 * N, donde N es grande); para tableros pequeños, el DFS con las estructuras de datos descritas anteriormente debería estar bien.
- ¿Qué ejercicios / rompecabezas / actividades puedo hacer que me ayudarán a pensar más rápido?
- ¿Resolver acertijos de Sudoku o Kakuro tiene algún efecto beneficioso para tu cerebro?
- Cómo escribir un programa que resuelva un Sudoku usando backtraking y sets
- ¿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