sesion6: sección de constants y backtracking · facultad de ingeniería y arquitectura sección de...
TRANSCRIPT
Facultad de Ingeniería y Arquitectura 2017-II Ingeniería de Sistemas – Sistemas Expertos
Sesion6: Sección de Constants y Backtracking
Oscar Bazán Ch.
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
La sección Contants:
Cabe resaltar que al usarla no diferencia entre
minúsculas y mayúsculas, es diferente que las
variables:
Ejm:
CONSTANTS
Dos = 2
GOAL
A=dos, write(A).
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
En el ejemplo anterior mostrará el valor 2 seguido
de A= 2.
Otra cosa, la declaración debe darse antes del
inicio del programa o antes de cualquier
declaración.
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
BACKTRACKING
Cuando se busca información, se va a la parte
superior de todo el programa.
Para hacer un match de igual forma.
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
Ejemplo y explicación de backtracking:
PREDICATES
nondeterm le_gusta(symbol,symbol)
sabe(symbol,symbol)
nondeterm comida(symbol)
CLAUSES
le_gusta(peter,X):-
comida(X), sabe(X,bien).
sabe(pizza,bien).
sabe(amburguesa,regular).
comida(amburguesa).
comida(pizza).
GOAL
le_gusta(peter, Que).
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
Se puede apreciar el orden en que se han
colocado los hechos.
1ero. Se llama a “comida(Que)”.
Lo primero que encuentra es “amburguesa”. (3era
línea)
2do. Busca el match (yendo a la parte superior
nuevamente) con “sabe(amburguesa, regular)”
(2da línea). Pero no satisface.
3ero. Retrocede a comida(“amburguesa”) donde
se quedó y toma el siguiente valor:
comida(“pizza”).
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
De esta forma hizo backtracking.
Que=pizza
1 Solution
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
DIFERENCIA “<>”
VEAMOS CÓMO SE MANIFIESTA UN
BACKTRACKING MEDIANTE LA DIFERENCIA:
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
DOMAINS
joven = symbol
edad = integer
PREDICATES
nondeterm jugador(joven, edad)
CLAUSES
jugador(peter,19).
jugador(paul,24).
jugador(oscar,20).
jugador(susana,19).
GOAL
jugador(Persona1, 19),
jugador(Persona2, 19),
Persona1 <> Persona2.
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
¿Cuál crees que debe ser el resultado del Goal?.
Lo más lógico sería:
Persona1=peter, Persona2=susana
1 solution
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
Sin embargo por el backtracking empleado en
Visual Prolog, cada vez se inicia nuevas
búsquedas.
Cuando llegue a buscar a partir de
jugador(susana,19) como Persona1, encontrará
primero a peter y el resultado real será:
Persona1=peter, Persona2=susana
Persona1=susana, Persona2=peter
2 Solutions
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
Se concluye que el backtracking podría ocasionar
resultados redundantes. Es por ello que se
debería tener mucho cuidado con la lógica
empleada.
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
Con el mismo ejemplo, si nuestro Goal fuese:
jugador(Person1, 19), jugador(Person2, 20).
¿Cuál sería el resultado?...
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
Veamos OTRO EJEMPLO DE BACKTRACKING:
DOMAINS
nombre,cosa = symbol
PREDICATES
le_gusta(nombre, cosa)
lee(nombre)
es_investigador(nombre)
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
CLAUSES
le_gusta(john,correr):-!.
le_gusta(juan,nadar):-!.
le_gusta(pedro,libros):-!.
le_gusta(susana,peliculas):-!.
le_gusta(Z,libros):-
lee(Z),
es_investigador(Z).
lee(john).
es_investigador(john).
Goal
le_gusta(X,correr).
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
La respuesta:
X=john
1 Solution.
Facultad de Ingeniería y Arquitectura Sección de Constants y Backtracking
PRINCIPIOS BÁSICOS DE BACKTRACKING:
1. Los subgoals se pueden satisfacer de la parte
superior hacia la inferior del programa.
2. Las cláusulas son revisadas en orden, de arriba
hacia abajo del programa.
3. Cuando un subgoal hace match con la cabecera
de la regla, el cuerpo de la regla podría también
satisfacerse. O sea, el cuerpo de la regla
constituye un nuevo grupo de subgoals a
satisfacer.
4. Un goal se satisface cuando se halla un match
de un hecho para cada uno de las extremidades
(hojas) de un árbol – goal.