INSTITUTO TECNOLÓGICO DE MATEHUALA
CARRERA: INGENIERÍA EN SISTEMAS
COMPUTACIONALES
MATERIA: INTELIGENCIA ARTIFICIAL
DOCENTE: ROMÁN CRUZ ARRIAGA
TEMA: REGLAS Y BUSQUEDA EN PROLOG
Sanchez Castañeda Lazaro Raul
Nuero de control: 16660363
08/07/2020
INSTALACIÓN DE PROLOG
Para comenzar esta práctica quiero comentar que no agregare lo de la instalación de Prolog ya que
Prolog ya lo había instalado con anterioridad con algunos ejercicios que realizamos con Thelma
ahora en la cuarentena. He a qui la evidencia de que ya lo tengo instalado.
Ruta de los programas que bamos a crear de SWI-PROLOG
ESTRATEGIAS DE CONTROL PAGINA 11 PROLOG TUTORIAL.
Que es lo que sucede.?
Ejecución paso a paso de la resolución de la consulta:
esHombre(X) la variable X toma el primer valor de la “base de datos o base de
conocimiento de Prolog”, que fue asignada con anterioridad” en este caso X
es remplazada por juan. → esHombre(juan)
Continuando hace la pregunta quiere(X,Y). donde X es remplazado por juan y
solo falta buscar en la base de conocimiento de programa si juan quiere a
alguien y como encontramos en primer lugar a maria, Y es remplazada por
maría de la siguiente manera.
quiere(juan,Y)
quiere(juan,maria).
Después de este resultado agregamos ( ; ) para buscar si Y puede ser
remplazada por alguien más.
Cada vez que se encuentra una solución, se intenta Re satisfacer el último
predicado ([Link]. quiere(juan,Y)). Para ello, PROLOG primero deshace la
última sustitución (Y=maria) y busca otra sustitución válida.
Y el resultado es el siguiente…
Esto fue lo que sucedió…
1°.- quiere(juan,Y)
2°.- quiere(juan,elena).
3°.- X=juan , Y=elena ;
Lo que prosigue es que Prolog sigue buscando con quien remplazar Y pero
como ya son todas las chicas con las que puede remplazarse Y debido a que en
la base de conocimiento juan se encuentra con maría y elena solamente, Aquí
es donde ocurre un fallo.
“Cuando un objetivo no pueda demostrarse de otra forma, diremos que da
FALLO. Entonces, se produce un retroceso y se intenta Re satisfacer el
predicado anterior (backtracking)”. (Cubero, Berzal 2003).
quiere(juan,Y)
/* FALLO */
Ahora como ya no hay con quien remplazar (juan, Y) la función es
regresarse para buscar ahora a con quien o con que remplazar X que en
este caso será pedro que se encentra en la base de datos de conocimiento
del programa.
esHombre(X) %Pregunta
esHombre(pedro) % se remplaza
quiere(pedro,Y)% Pregunta
quiere(pedro,raquel). %se remplaza
X=pedro , Y=raquel ; % resultado
Y aquí tenemos el resultado después de que haya echo las búsquedas
pertinentes, cuando no encuentra con quien remplazar Y ocurre un FALLO,
regresa para buscar a alguien con quien remplazar X pero tampoco hay con
quien remplazar en la base de conocimiento y ocurre otro FALLO, enseguida
muestra los resultados en pantalla de la siguiente manera.
CÓDIGO DE LAS PÁGINAS 20-21
Ejercicio guardado y compilado de las paginas 20 to 21.
Procedemos a dar una breve explicación de lo que sucede en los
siguientes casos:
CASO → a? abuelo(juan, X).
Lo que sucede es esto…
¡Se pregunta si juan es abuelo de alguien!
juan y X son variables que se van a remplazar en el primer caso, abuelo que
es la cabecera coincide con abuelo que es la regla que se encuentra en la base
de conocimiento. Y es aquí donde se remplaza la variable juan = Ab y X = Nieto
(Ab=juan) juan es abuelo si (:-) tiene un hijo
→(padre(Ab,Hijo) y efectivamente, si es
padre de Carlos, entonces se remplaza Ab
= juan E hijo = Carlos, enseguida busca que
Carlos tenga un hijo para validar la
condición como cierta y efectivamente
Carlos es padre de elena entonces juan
tiene un nieto y el resultado es X = elena;
¡En el primer caso analizado!
CASO → b? - abuelo(juan, elena).
En esta ocasión nos devuelve un true ya que esta tomando en cuenta la regla
que esta creada en la base de conocimiento
Entonces realiza el mismo procedimiento anterior descrito en el (CASO a) y
de manera lógica podemos entender que se esta preguntando si es abuelo de
elena o no, a cambio de el (CASO a) que se pregunta si juan es abuelo y quien
es ese niet@.
CASO → c.? - abuelo(Ab_,elena).
En este caso se pregunta quienes son los abuelos de elena, y en base a la
regla existente nos arroja que juan y victor son abuelos de elena.
Nota: Este caso no hice tanto énfasis en la explicación profunda ya que solo
pide que ejecutemos los códigos y mostremos los resultados como capturas
de pantalla.
COMPILE, EJECUTE (CONSULTE) MUESTRE LA PANTALLA DE SALIDA SOBRE
EL CÓDIGO DE LA PÁGINA 26.
A qui la consulta que se hace es sobre cual es la ciudad de donde proviene
la pieza tuerca
FIN