Que Es Backtracking
Que Es Backtracking
Que Es Backtracking
LIMA – PERÚ
2019
I. QUE ES BACKTRACKING
Backtracking (o Vuelta Atrás) es una técnica de recursión intensiva para resolver problemas
por etapas, que utiliza como árbol de decisiones la propia organización de la recursión. Cuando
se “avanza” de etapa se realiza una llamada recursiva, y cuando se “retrocede” lo que se hace
es terminar el correspondiente proceso recursivo, con lo que efectivamente se vuelve al
estado anterior por la pila de entornos creada en la recursión. Como el árbol de decisiones no
es una estructura almacenada en memoria, se dice que Backtracking utiliza un árbol implícito y
que se habitualmente se denomina árbol de expansión o espacio de búsqueda.
Hay que recordar que el árbol no está almacenado realmente en memoria, solo se recorre a la
vez que se genera, por lo que todo lo que quiera conservarse (decisiones tomadas, soluciones
ya encontradas al problema, etc.) debe ser guardado en alguna estructura adicional.
Finalmente, debido a que la cantidad de decisiones a tomar y evaluar puede ser muy elevada,
si es posible es conveniente tener una función que determine si a partir de un nodo se puede
llegar a una solución completa, de manera que utilizando esta función se puede evitar el
recorrido de algunos nodos y por tanto reducir el tiempo de ejecución.
Sistema Anti-sombras
1.- Localización planta solar: Latitud: 38º (Ejemplo: España) 2.- Tamaño de los módulos: 50mx
2m
3.- Inclinación óptima de los módulos: 36º
4.- Paneles fijos: Orientación Sur. Alineación Este-oeste
5.- Seguidor 1 eje: Alineado norte-sur. Movimiento Este -> Oeste
Concepto Backtracking
Objetivos:
Experiencia real:
CHEF es un planificador basado en casos que toma como entrada una conjunción de submetas
que necesita lograr para conseguir un plan como salida. Su dominio es la creación de recetas.
Las recetas son vistas como planes. Las recetas proporcionan la secuencia de pasos a seguir
para preparar un plato.
Por tanto la entrada de CHEF son las metas que se pueden conseguir con las recetas (por
ejemplo, incluye pescado, sofreír, sabor salado) y la salida es una receta (plan), que puede
obtener esas metas. Como planificador basado en casos, CHEF crea sus planes a partir de
viejos planes que funcionaron en situaciones similares y los modifica para adaptarlos a la
nueva situación. Por tanto el primer paso en la creación de un plan es recuperar una vieja
receta que cumpla el mayor número posible de metas de la entrada. Para recordar esta
clasificación indexa los planes por las metas que logra. Ternera con brócoli es indexado por
varias metas, entre ellas, incluye carne, incluye una verdura fresca, sofreír y lograr sabor
salado. El siguiente paso es adaptar el viejo plan a la nueva situación. Esto se hace en dos
etapas. Primero, se re instancia el viejo plan, es decir, crea una instancia en la que sustituye los
nuevos objetos por los del viejo plan. Por ejemplo, si está creando una receta de pollo con
guisantes desde la receta de ternera con brócoli, sustituye ternera por pollo y brócoli por
guisantes.
Para poder hacer esto, necesita conocer los roles que desempeñan los objetos en la vieja
receta. CHEF tiene un conocimiento bastante limitado sobre esto y para saber qué objetos
sustituir y por cuáles busca las similitudes entre los objetos del viejo plan y los del nuevo y
sustituye los objetos del nuevo plan por los más similares del viejo plan. Por ejemplo, si el pollo
y la ternera están definidos como carne, los sustituye. En la segunda etapa, aplica críticas de
objeto para adaptar el viejo plan a la nueva situación.
Un ejemplo es, el pato no debe tener grasa antes de sofreírlo. Se expresaría de la siguiente
manera:
Esta crítica está asociada al objeto pato, y cada vez que se usa el pato en una receta se dispara
la crítica. Si hay un paso de deshuesar el pato en la receta que se está creando, se añadiría
detrás un pasó indicando que se debería de quitar la grasa al pato. Las críticas de objeto
generalmente añaden pasos de preparación especiales a la receta (deshuesar, quitar la
grasa…).
Las críticas son la forma en que CHEF codifica el conocimiento sobre procedimientos
especiales asociados al uso de objetos de su dominio. Su uso durante la adaptación muestra la
interacción entre el uso de experiencia y de conocimiento general de los sistemas CBR.
Después de la re instanciación y la aplicación de críticas, CHEF obtiene un plan completo. Para
validar el plan lo ejecuta en un simulador muy parecido al mundo real y si es correcto lo
almacena, si no crea una explicación causal de por qué no funcionó el plan y lo usa como
índice para reparar el plan. Los TOPs (paquetes de organización temática) son estructuras que
encierran conocimiento general del dominio Relacionan el conocimiento acerca de cómo
interaccionan entre sí los objetivos del caso considerado. En CHEF, se usan para caracterizar de
un modo abstracto las interacciones entre las etapas de una receta.
CHEF emplea tres tipos de estrategias de reparación: (1) dividir y reformular los pasos del plan,
(2) alterar el plan para que se ajuste a la solución esperada o (3) buscar un plan alternativo.
En primer lugar CHEF elige la estrategia de reparación buscando casos similares en el TOP que
sugieran una reparación y después chequea la posibilidad de aplicar las condiciones para cada
plan reparado. Así encuentra el más apropiado. Aplica el plan de reparación apropiado,
resolviendo el plan fallido. CHEF realiza otra etapa más antes de acabar, actualiza su
conocimiento del mundo para poder anticiparse y no repetir el error que acaba de cometer.
Para ello, encuentra unos predictores del tipo de fallo y lo usa como índice para advertir de la
posible ocurrencia del fallo. Evidentemente estos índices son extraídos de la explicación previa
del fallo, aislando la parte de la explicación que describe características del medio
responsables del fallo. La siguiente figura muestra la arquitectura de CHEF.
Los rectángulos representan sus unidades funcionales, los círculos sus fuentes de
conocimiento y los óvalos las entradas y salidas de cada proceso funcional.
El presente informe contiene la descripción de las características que posee los sistemas basados
en Encadenamiento hacia Atrás.
DEFINICIÓN
A diferencia del trabajo con encadenamiento hacia delante el encadenamiento hacia atrás
comienza con una hipótesis y a partir de ella es que se intenta probar la hipótesis recolectando
información.
El primer paso es definir los datos iniciales Se comienza con la definición de las metas del
sistema
Por lo tanto en términos mas sencillo podemos decir que el encadenamiento hacia atrás no es
mas que: “La estrategia de inferencia que intenta probar una hipótesis recolectando
información de apoyo”.
Es un método muy útil en aplicaciones con muchos datos disponibles de partida, de los
que solo una pequeña parte son relevantes.
Es un sistema interactivo, sólo pregunta lo estrictamente necesario a diferencia del
encadenamiento hacia delante que no pregunta nada.
Que continúa siendo una línea de razonamiento, aun si debería cambiar a uno distinto.
Algunos de los casos en los que se debería usar encadenamiento hacia atrás es cuando:
PROCESO DE DESARROLLO
Cuando una primitiva es encontrada, el sistema pregunta al usuario información acerca de esta
primitiva, entonces el sistema usa esta información para ayudar a probar las submetas y la meta
original.
EJEMPLO
Supongamos que un paciente va al doctor, el doctor luego de escuchar el problema del paciente
creé que tiene una infección de garganta. Ahora bien veremos como un sistema experto basado
en reglas de encadenamiento hacia atrás puede solucionar este problema.
REGLA 1
REGLA 2
hechos
hechos
La regla se puede aplicar hacia atrás cuando existe un objetivo OBJ que concuerda con
el consecuente C.
Cuando se aplica una regla hacia atrás, se procede a sustituir la demostración de OBJ por
la demostración de los antecedentes A de la regla; esto es, el objetivo inicial OBJ se
reemplaza por todos los objetivos A.
Un motor de inferencia
con encadenamiento hacia atrás:
parte de unos hechos (datos) y de un objetivo inicial,
va cotejando (emparejando) los consecuentes de las reglas con la lista de
objetivos, y
va aplicando las reglas hacia atrás (aumentando así la lista de objetivos) hasta que todos
ellos coincidan con hechos de la memoria de trabajo
Ejercicio
Un poco de Historia
Principio de incertidumbre -> Desarrollo por Heisenberg en 1927
Es imposible conocer conjuntamente con exactitud, la posición y la velocidad de
una partícula.
Heisenberg calculo la magnitud de esa inexactitud (Premio Nobel de física)
Diagnóstico medico
Predicción financiera
Exploración minera / petrolera
Interpretación de imágenes (visión)
Reconomiento de voz
Monitoreo / control de procesos industriales complejos
Causas de la incertidumbre
Información
Información Incompleta (falta de análisis o falta de campos).
Poco confiable (medidores , instrumentos y análisis poco confiables).
Ruido o distorsión ( ruido o distorsión en sistemas de visión, de reconocimiento
de voz , de comunicaciones)
Conocimiento
Impreciso (si tiene dolor de cabeza posiblemente tiene gripe)
Contradictorio(si tiene dolor de cabeza es problable que tenga gripe, pero
también es posible que no tenga gripe, opiniones encontradas de expertos
Representación
No adecada(no se selecciono la presentación idónea para la aplicación).
Falta de poder descriptivo(las representaciones no permiten representar
adecuadamente el conocimiento del dominio, como la expresa el experto)
Efectos de Incertidumbre
Monotonica
Modular
Caracteística Modular
Un sistema de reglas es modular, ya que para saber la verdad de una regla sólo tiene que
considerarla a ésta, sin importar el resto del conocimiento.
Si A entonces B -> Si A es verdadero, B es verdadero
Con incertidumbre
Característica Monotonica
No-numericas
Logicas no-monotónicas
Sistema de mantenimiento de verdad (TMS,ATMS)
Teorías de endosos
Empíricas (MYCIN, Prospector)
Métodos aproximados
Redes Bayesianas
Teoría de Dempster – Shafer
Lógica difusa
Definición:
En un sistema basado en reglas "si-entonces", encadenamiento que empieza
afirmando las conclusiones de todas las reglas cuyas cláusulas "si" son verdaderas y
luego comprobando qué nuevas reglas pueden aplicarse dados los nuevos hechos
inferidos; proceso que continúa hasta que se alcanza un objetivo o bien se agotan las
posibilidades.
Motor de inferencia
¿Cómo se van aplicando las reglas de la base de conocimiento sobre los hechos de la
memoria de trabajo?
las va disparando hasta que se satisface algún objetivo o hasta que ninguna
regla sea aplicable.
41
temperatura = 40
enfermo dos semanas
garganta inflamada
temperatura
temperatura = 40 enfermo
= 40 enfermo
dos semanas
dos semanas garganta
garganta
inflamada
inflamada fiebre fiebre
posibleposible infección
infección bacteriana infección en la
bacteriana
garganta
Diagnóstico: Posible infección en la garganta
Para probar esta la meta de que el paciente tiene infección de garganta, el sistema selecciona la
regla meta Regla 1, e intenta probar las premisas de esta regla , ya que ambas premisas son
conclusiones de otras reglas cada premisa por lo que estas se tornan sub meta para ser probada.
Ahora bien para probar que ‘Hay señales de infección de garganta’ el sistema ve las premisas de
la regla 2 y para probar ‘Hay evidencia de que el organismo es estreptococo, el sistema ve las
premisas de la regla 3.
Todas esas premisas son primitivas, y se requiere que el usuario provea información.
Ya que en este problema el sistema fue capaz de probar estas dos reglas, las premisas de la regla
meta fueron probadas, lo que significa que la meta inicial de que el paciente tiene infección de
garganta también es probada, ya que es la conclusión de la regla meta.
Meta Simple
El sistema fue diseñado para conocer acerca de una sola infección que vendría a ser de garganta.
Preguntas Simples
La sesión fue conducida en un modo interactivo usando lenguaje natural. Se hacen preguntas
que pueden ser contestadas con SI o NO, o también seleccionar de una lista de respuestas.
Los sistemas debe ofrecer una transparencia en su razonamiento proveyendo una explicación
del WHY (por qué) de algunas preguntas. La mayoría de los shells manejan estos tipos de
preguntas.
Despliegue De Fallas
El sistema debe desplegar al final el resultado al usuario algo así como: –Infección de garganta
Esto puede ser solo un resultado intermedio del camino de otra recomendación. Ejemplo:
El sistema debe ser diseñado para soportar la inteligencia del usuario usando una simple vía,
mediante la inteligencia. Esto significa que el usuario tiene información que puede ser de ayuda
al sistema.
Red De Seguridad
Documentación De Reglas
Las reglas están escritas en una sintaxis que depende del lenguaje de programación o el shell del
sistema experto que escoja para el desarrollo del sistema. Obtener esta sintaxis puede ser
dificultoso para interpretar rápidamente, lo cual perjudica en la depuración y mantenimiento
del sistema. Por esta razón es importante la documentación de cada regla con información que
puede ayudar a su interpretación.
Cadena De Inferencias
Cuando revisamos un conjunto de reglas, es difícil determinar qué reglas soportan otras, durante
el proceso de inferencia. Por lo tanto, los diseñadores, usan una forma alternativa para revisar
el proceso de inferencia, desplazando gráficamente las reglas en una Cadena de inferencias.
Cadena De Inferencias: Representación gráfica de las reglas del sistema con premisas y
conclusiones de reglas, dibujadas como nodos y su relación como enlaces.
DIAGNÓSTICO DE MENINGITIS
OR Se sospecha de meningitis
Note: Información a ser desplegada debe ser diseñada y accedida por esta instancia.
MEMORIA DE TRABAJO
PASO 1
PASO 2
Observar la primera premisa en la REGLA 1 y ver si esta lista en la memoria de trabajo -
NO.
PASO 3
Observar si esta premisa existe en “THEN” como parte de una regla -NO.
PASO 4
Usuario: NO
MEMORIA DE TRABAJO
PASO 5
PASO 6
PASO 7
PASO 8
COMENTARIO: Las primeras dos premisas de la REGLA 3 son conocidas y son primitivas,
causando la siguiente pregunta a ser contestada.
PASO 9
Usuario: SI
PASO 10
Usuario: SI
PASO 11
COMENTARIO: El usuario necesita saber por qué esta pregunta es importante. El sistema
responde exhibiendo la regla seguida.
[REGLA 4]
COMENTARIO: El usuario ahora fuerza a pedir por qué es importante determinar como las
Cultivos observadas son meningitis. El sistema debería responder desplegando las reglas que
necesito esta información, entonces pedir la siguiente pregunta.
PASO 12
[REGLA 3]
Sin embargo, si
PASO 13
Usuario: NO
MEMORIA DE TRABAJO
COMENTARIO: El sistema no tubo éxito en establecer meningitis por el resultado del test
(Premisa 1, REGLA 2). A continuación se intentará establecer por consideraciones los síntomas
del paciente (Premisa 2, REGLA 2).
PASO 14
PASO 15
PASO 16
Usuario: SI
Usuario: SI
Usuario: SI
PASO 17
La REGLA 5, que causa la regla 2, que en turnos causan la REGLA 1 para asegurarse de que la
infección es meningitis, causando el siguiente despliegue a ser causado.
Meta Simple
El sistema fue diseñado para conocer acerca de una sola infección, llamada Meningitis. Por lo
tanto, solo una simple meta fue establecida.
Preguntas Simples
La sesión fue conducida en un modo interactivo usando lenguaje natural. Se hacen preguntas
que pueden ser contestadas con SI o NO, o también seleccionar de una lista de respuestas. Sin
embargo se puede diseñar el sistema para acomodar la entrada de cadenas o números.
La sesión mantiene el foco en este tema, es decir test del paciente o sus síntomas. Esta instancia
es solicitada al usuario y ocurre a causa del empleo del método de búsqueda primero en
profundidad. Esta es una característica de los sistemas de encadenamiento hacia atrás, que son
atractivos para aplicaciones que requieren usar interacción.
Despliegue De Fallas
El sistema despliega al final el resultado al usuario –Infección es meningitis –Paso 17. Esto puede
ser solo un resultado intermedio del camino de otra recomendación. Ejemplo:
El sistema del ejemplo ha sido diseñado para soportar la inteligencia del usuario usando una
simple vía. Mediante la inteligencia. Esto significa que el usuario tiene información que puede
ser de ayuda al sistema.
Red De Seguridad
El ejemplo incorpora un despliegue por defecto que debe ser presentado al usuario si la
información no fue reconocida como meningitis –entonces ELSE parte de la REGLA 1. Esto en
un programa tradicional provocaría “No puede computar”, pero en un sistema inteligente,
llamaría a la red de seguridad, ya que este proviene al sistema de fallas para reportar.
Facilidad De Expansión
En los tradicionales sistemas basados en reglas, se puede fácilmente expandir el sistema para
mejorar su desempeño. Una técnica de expansión es hacer que exista un conocimiento
profundo. Ejemplo. Considerar la primera premisa de la REGLA 5. Que puede ser ambigua “El
paciente sufre de persistentes dolores de cabeza”. El sistema debería ser expandido para inferir
esta premisa, usando más información, como muestra la siguiente regla.
IF El paciente experimenta dolores de cabeza cada día.
Documentación De Reglas
Las reglas están escritas en una sintaxis que depende del lenguaje de programación o el shell del
sistema experto que escoja para el desarrollo del sistema. Obtener esta sintaxis puede ser
dificultoso para interpretar rápidamente, lo cual perjudica en la depuración y mantenimiento
del sistema. Por esta razón es importante la documentación de cada regla con información que
puede ayudar a su interpretación.
Cadena De Inferencias
Cuando revisamos un conjunto de reglas, es difícil determinar qué reglas soportan otras, durante
el proceso de inferencia. Por lo tanto, los diseñadores, usan una forma alternativa para revisar
el proceso de inferencia, desplazando gráficamente las reglas en una Cadena de inferencias.
AGENDA DE METAS
Una agenda de metas es considerada como “una serie de metas por conseguir en una cierta
secuencia”.
Todos los sistemas de encadenamiento hacia atrás necesitan al menos una meta para iniciar la
sesión, pero en muchas aplicaciones el sistema necesita perseguir una serie de metas en una
secuencia establecida.
EJEMPLO:
1 . El animal es un pájaro
1 .1 . El pájaro es un petirrojo.
1 . 2. El pájaro es un canario.
2 . El animal es un mamífero
2 . 1 El mamífero es un caballo.
3 . El animal es un reptil.
Aquí el sistema intenta probar primero si el animal es un pájaro, un mamífero o un reptil, luego
si es un pájaro se prueba si es un petirrojo o un canario. Si no se prueba que el animal es un
pájaro, se ve si es un mamífero, y se continua con el mismo procedimiento.
A veces el orden de la lista de la agenda es demasiado rígido para algunos problemas en los que
el sistema podría tomar ventaja de información específica acerca del problema. Se podría
diseñar el sistema para trabajar con un usuario inteligente, por ‘usuario inteligente’ se refiere a
un usuario que tenga información que pueda ayudar a guiar al sistema. Una forma simple de
hacer esto es presentando al usuario al principio de la sesión un menú de metas u objetivos que
se desean perseguir. Si el usuario no tiene información para dirigir la búsqueda, el sistema
iniciara con una lista de metas por defecto.
METAS ESTABLECIDAS POR REGLAS
AND Fijar nueva meta para diseñar transistores con disipador de calor.
INFERENCIA MONÓTONA
En los tipos de problemas que se ha visto, se ha asumido que los hechos encontrados no cambian
durante la sesión, es decir una vez que el hecho se coloca en la memoria de trabajo, esta
permanece ahí. Por ejemplo consideremos un problema de diagnóstico electrónico:
Razonamiento monótono.- Método de razonamiento que asume que una vez que un hecho se
a afirmado, este no puede ser alterado durante el curso del razonamiento.
INFERENCIA NO MONÓTONA
Algunos sistemas trabajan con hechos cuyo estado puede cambiar durante la sesión. Además
otra información lógica depende de que este hecho cambie o no. Consideremos el siguiente
ejemplo:
Dada la afirmación y la regla, deberíamos concluir que debemos llevar un paraguas. Pero si antes
que consigamos un paraguas para de llover , podríamos dejar el paraguas . En este sentido la
retracción del hecho 1, implica la retracción del hecho 2. Los sistemas con este tipo de
procesamiento usan razonamiento no monótono.
SISTEMAS SEPARADOS
Cuando existen problemas complejos los diseñadores del sistema dividen el problema en sub
tareas y diseñan sistemas expertos separados para cada tarea. Cada sistema resuelve una parte
del sistema, luego pasa el control al otro sistema.
Una ventaja es que cada sistema pude tener su propia técnica de inferencia.
Liste varios problemas que son apropiados para un sistema de encadenamiento hacia atrás.
Ejemplo:
Primero se verifica por medio del motor de inferencia las reglas que se aplican R1 y R2, Se
selecciona R1. Que genera “Desaprueba”, que se añade
=(Nahuel,Daniel,Desaprueba)
=(Nahuel,Daniel,Desaprueba,Aprueba)
=(Nahuel,Daniel,Desaprueba ,Aprueba,Feliz)
El encadenamiento hacia atrás se define como la que trabaja bajo un enfoque guiado por
objetivos, es decir si usamos el ejemplo anterior se puede determinar si se da “Feliz” con los
hechos “Daniel” y “Nahuel”.
El motor de inferencia tendría que verificar las relgas aplicables. En este ejemplo se pude la R3
es decir “Feliz” que se tiene como consecuente, generado por “Aprueba”
Se continuara intentando probar “Feliz” con R2, y se obtiene “Nahuel” que es un hecho en la
base de hechos y como se ha probado el subjetivo, también se prueba “Feliz”