N-Queens Problem es el problema clásico de backtracking: coloca N reinas en un tablero N×N de forma que ninguna se ataquen entre sí (no compartan fila, columna, ni diagonal).
Es el problema introductorio por excelencia para entender backtracking: prueba una posición, avanza recursivamente, y deshace (backtrack) si la posición no lleva a una solución válida.
Cómo Funciona
- Inicializa tablero vacío
N×N. - Coloca una reina en la fila actual (por filas para evitar conflicts en fila).
- Prueba cada columna de la fila:
- Si es segura (no hay otra reina en columna ni diagonales): colócala y avanza a la siguiente fila.
- Si no es segura: prueba la siguiente columna.
- Backtrack: si ninguna columna funciona en la fila actual, deshace la última colocación y prueba otra opción.
- Termina cuando todas las
Nreinas están colocadas (solución) o cuando todas las opciones se agotan (sin solución).
Idea Clave
Backtracking es DFS con poda: exploras el espacio de soluciones de forma sistemática, pero descartas ramas enteras cuando una decisión parcial viola una restricción.
La clave de eficiencia es la pruning: si colocas una reina en (row, col) y hay un ataque, no sigas explorando esa rama.
Ejemplo Trabajado
N = 4. Busca una solución.
Proceso:
- Fila 0: prueba col 0 → segura. Coloca Q en (0,0).
- Fila 1: prueba col 0 (ataca), col 1 (ataca diagonal), col 2 → segura. Coloca Q en (1,2).
- Fila 2: prueba col 0 (ataca), col 1 (segura). Coloca Q en (2,1).
- Fila 3: prueba col 0 (ataca), col 1 (ataca), col 2 (ataca), col 3 (segura). Coloca Q en (3,3).
Solución: [1, 3, 0, 2] (columna de reina en cada fila).
Representación:
. Q . .
. . . Q
Q . . .
. . Q .
Casos Extremos y Trampas
- N = 1 — trivial, una solución.
- N = 2, 3 — no tienen solución (imposible colocar sin ataque).
- N = 4 — 2 soluciones.
- Contar todas — no pares en la primera; explora todas las ramas.
Variantes
| Problema | Objetivo | Complejidad |
|---|---|---|
| N-Queens | Una solución | O(N!) backtrack |
| N-Queens Count | Todas las soluciones | O(N!) backtrack |
| N-Queens Bitmask | Optimizada | O(N!) pero rápida |
Aplicaciones
- SAT solving — N-Queens es NP-completo
- Asignación de recursos — scheduling sin conflictos
- Criptografía — diseño de sistemas sin colisiones
- Enseñanza — ejemplo canónico de backtracking
Trayectoria de Práctica
- Implementa N-Queens backtracking; encuentra una solución para N=8.
- Extiende para contar todas las soluciones.
- Optimiza con bitmask: representa columnas y diagonales como bits.
- ¿Por qué N=2 y N=3 no tienen solución? Demuéstralo.
- Investiga N-Queens como grafo: ¿cuántos movimientos de un caballo para resolver?