Esquema general de Backtracking

Anuncio
Esquema general de Backtracking
Rosana Matuk
Encontrar una solución
intentándolo con una de varias
opciones. Si la elección es
incorrecta, el cómputo retrocede o
vuelve a comenzar desde el punto
de decisión anterior y lo intenta
con otra opción.
Definición de Backtracking
Paul E. Black, Dictionary of
Algorithms and Data Structures,
U.S. National Institute of
Standards and Technology
El siguiente esquema sirve para resolver aquellos problemas en los que estamos buscando una solución, es decir, cuando encontremos la primera que cumpla
todas las restricciones, finalizaremos, sin importarnos si en realidad existen algunas más o si se trata de la mejor de las posibles.
Función Backtracking(i: Etapa)devuelve: Boolean
if SolucionCompleta(i) then
Exito ← V erdadero
else
Exito ← F also
IniciarOpciones(i, o: Lista Opcion)
repeat
SeleccionarNuevaOpcion(o, n: Opcion)
if Aceptable(n) then
AvanzarUnPaso(i, n)
Exito ← Backtracking(i)
if Exito = false then
DeshacerUltimoPaso(i, n);
end
end
until (Exito = verdadero) o NoQuedanOpciones(o);
end
Retorna Exito
end
1
1. IniciarOpciones(i: Etapa i, o: Lista Opcion)
En base a las alternativas elegidas en la solución parcial i que nos llega
como parámetro, introducimos en o el grupo de opciones posibles que
podemos probar en la etapa actual. Si ninguno de estos valores condujese
a una solución válida, la llamada a la función finalizarı́a y volverı́amos a
una etapa anterior.
2. SeleccionarNuevaOpcion(o: Lista Opcion, n: Opción)
De entre todas las alternativas posibles que tenemos en o, elegimos una.
Aquı́ podemos realizar funciones de poda, que pueden ser muy beneficiosas
en ciertos algoritmos, proporcionando opciones que tienen una alta probabilidad de convertirse en solución y evitando muchas pruebas innecesarias
con valores que según nuestra estimación no nos conducirán al éxito. La
opción elegida tiene que ser desechada o marcada como usada en el grupo
de opciones o, para que no volvamos a probar con el mismo valor repetidas
veces, es decir, el conjunto vaya reduciéndose hasta que no queden mas
alternativas por probar.
3. Aceptable(n: Opción)
Los problemas que resuelve este tipo de esquemas algorı́tmicos tienen como caracterı́stica que buscan un grupo de valores que cumplen entre sı́ una
serie de restricciones. El cumplimiento de estas restricciones se comprueba
en esta función. Si la opción no es aceptable no será necesario expandir
por esa rama las posibilidades porque en ningún caso nos llevarán a una
solución. De esa manera evitamos tener que explorar zonas del espacio de
alternativas que sólo nos harán perder tiempo de búsqueda sin proporcionar ningún resultado.
4. NoQuedanOpciones(o: Lista Opcion)
Indica si todavı́a existe en el grupo inicial que calculamos en cada función
recursiva, alguna alternativa más que probar. Si no queda ninguna opción,
hemos terminado de buscar en la etapa actual, y debemos ir hacia atrás
a la anterior llamada recursiva para buscar nuevas alternativas por donde
expandir el árbol de posibilidades.
2
Descargar