Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Observar que este Algoritmo, solo encuentra el primer camino solución del estado inicial al estado final, éste
camino no necesariamente es el camino óptimo (camino de costo mínimo). Como su nombre indica, el
Algoritmo explora caminos, en caso de no encontrar camino solución, regresa y sigue otro camino.
El problema de las nReinas.
Dado una matriz cuadrada de n x n (n-filas por n-columnas) y n-Reinas, que se desea ubicar en el
tablero, tales que entre ellas no se puedan atrapar.
11 12
L1 = [] L1 = [31]
L1 = [32]
(2) 32 31
L1 = [] L1 = [43]
43
while(!L1.isEmpty()){
Regla R = elegirRegla(L1);
m[R.fil][R.col] = i + 1;
if(nReinas(m, i + 1)) return true;
m[R.fil][R.col] = 0;
}
return false;
}
En la ejecución de éste Algoritmo, buscaremos algunos indicadores para medir la eficacia de las
búsquedas utilizando heurísticas en la elección de la regla a apliar.
El Problema de las nReinas.
Para sistematizar el llenado de las reinas en el tablero, realizaremos de fila en fila, desde la primera hasta la
última. Es decir; encontraremos todas las reglas aplicables para la fila-i, luego fila-i+1, etc..
Para verificar si la posición i, j es válido, recorrer por toda la fila, toda la columna, y las diagonales
incluidos la posición i, j.
El Problema de las nReinas.
public static boolean diagSupDer(int m[][], int i1, int j1){
int i = i1, j = j1;
while(i >= 0 && j < m[i1].length){ Existen cuatro posibles
if(m[i][j] != 0) return false; diagonales, para cada uno
i = i - 1; de ellos se debe recorrer
j = j + 1; para verificar si no existe
} otra reina en el camino.
return true;
}
• El Algoritmo de backTrack(), resuelve el problema de buscar todas las soluciones, busca el primer camino
que se encuentra desde el estado inicial al estado final, aunque no necesariamente es la mejor solución.
• Los indicadores utilizados para medir la eficiencia de las búsquedas de caminos solución es la longitud de
camino y/o la cantidad de vueltas (caminos seguidos innecesariamente, que no llevan a la solución).
• Para el problema de las nReinas, utilizar como heurística elegir una casilla en lo posible del centro de la
matriz es mejor opción que elegir una casilla que se encuentra en los extremos de la matriz, ésta heurística
reduce considerablemente seguir caminos innecesarios. Sin embargo, la mejor heurística será aquella que
indique seleccionar una regla que se conduce directo a la solución. Esta heurística existe, pero no se conocer
sino que nos aproximamos a ella.