Vuelta atrás o (backtracking)

16
VUELTA ATRÁS O (BACKTRACKING) Giancarlo Ciliberti G. Ing. Sistemas

description

Muestra parte del algoritmo que se usa, una pequeña descripción de en que consiste.

Transcript of Vuelta atrás o (backtracking)

Page 1: Vuelta atrás o (backtracking)

VUELTA ATRÁS O (BACKTRACKING)

Giancarlo Ciliberti G.

Ing. Sistemas

Page 2: Vuelta atrás o (backtracking)

¿QUE ES ?

Es una estrategia usada para solucionar problemas

que tienen soluciones completas.

Este algoritmo esta diseñado para la solución que

consta de una serie de decisiones.

Para la implementación de este algoritmo se usan

los algoritmos recursivos, la cual llaman unos valores

a un determinado punto de la posible solución.

Page 3: Vuelta atrás o (backtracking)

ESQUEMA GENERAL

En la siguiente PPT se mostrara el

algoritmo de forma general y se

mostraran también una pequeña

descripción de cada una de sus partes y

las funciones que cada una llama:

Page 4: Vuelta atrás o (backtracking)

En la parte roja, se puede

cambiar encontrar la

mejor solución,

eliminaremos esta

instrucción. Y en su lugar

compararemos la solución

obtenida con una de

referencia, para ver si

tenemos que actualizar la

mejor solución obtenida

hasta el momento.

Page 5: Vuelta atrás o (backtracking)

En la parte roja: Si

queremos todas las

soluciones la instrucción

cambiaria por

NoQuedanOpciones(o)

para conseguir así todas

las soluciones posibles.

También habría que hacer

esto para la mejor

solución.

Page 6: Vuelta atrás o (backtracking)

EXPLICACIÓN DE FUNCIONES

Page 7: Vuelta atrás o (backtracking)

IN IC IAROPC IONES(ETAPA I , GRUPOOPC IONES O)

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 posterior.

Page 8: Vuelta atrás o (backtracking)

SELECC IONARNUEVAOPC ION(GRUPOOPC IONES O , OPC ION 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 vitando

muchas pruebas innecesarias con valores que según

nuestra estimación no nos conducirán al éxito.

Page 9: Vuelta atrás o (backtracking)

ACEPTABLE(OPCIÓN N)

Esta función es por tanto de vital importancia,

porque tiene funciones de poda que pueden convertir

el algoritmo en mucho más eficiente. Para construirla,

se suele llevar a cabo un análisis exhaustivo del

problema a tratar, para identificar esas situaciones de

la solución parcial en la que no debemos expandir

más porque nunca llegaremos a una solución.

Page 10: Vuelta atrás o (backtracking)

ANOTAROPCION(ETAPA I , OPC IÓN N)

Anota la opción n elegida en las funciones anteriores

dentro de la solución parcial que llevamos construida

hasta la etapa i. Esta opción fue elegida en Seleccionar

Nueva Acción y comprobada como válida en Aceptable,

de manera que tenemos asegurado que es una

alternativa que aún no hemos probado, y que no

incumple ninguna de las reglas de poda que hayamos

introducido en nuestro programa.

Page 11: Vuelta atrás o (backtracking)

CANCEL AMOS ANOTACION(ETAPA I , OPC ION N)

Realiza la acción contraria. Debido a que

esa opción n que habíamos anotado no ha

llevado a una solución, o estamos buscando

soluciones alternativas, la eliminamos de la

solución parcial en la etapa i, para que

podamos probar con otra si es que existe.

Page 12: Vuelta atrás o (backtracking)

NOQUEDANOPCIONES(O)

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,

inevitablemente 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.

Page 13: Vuelta atrás o (backtracking)

ARBOL DE BUSQUEDA

Page 14: Vuelta atrás o (backtracking)
Page 15: Vuelta atrás o (backtracking)

APLICACIONES

Vuelta atrás se usa en la implementación de

los lenguajes de programación tales como Lenguaje

de programación Planar y Prologo. Además, se usa

en los análisis sintácticos de los compiladores. Su

uso en inteligencia artificial ha sido muy

importante, dando lugar a nuevos tipos de

búsquedas como el A estrella.

Page 16: Vuelta atrás o (backtracking)

GRACIAS