Вы находитесь на странице: 1из 5

León Ugalde Elsa Noemi

090300062

Programación lógica-funcional EJERCICIO PRACTICO 3

01. Marzo. 2012

(1) Extienda el programa definiendo reglas para definir cada una de las siguientes. Cargue su programa y pruébelo.

Extensión del programa

definiendo reglas para definir cada una de las siguientes. Cargue su programa y pruébelo. Extensión del
1
1

León Ugalde Elsa Noemi

090300062

Pruebas:

(a) child_of(A,B)

Programación lógica-funcional EJERCICIO PRACTICO 3

(b)

grandfather_of(A,B)

(c)

grandmother_of(A,B)

(d)

great_grandfather_of(A,B)

01. Marzo. 2012

a) Comprobando la regla: child_of(X,Y):-parent(X,Y). Me regresa los resultados de X es el hijo de
a)
Comprobando la regla:
child_of(X,Y):-parent(X,Y).
Me regresa los resultados de X es
el hijo de Y, sin importar si Y es
madre o padre
2
2

León Ugalde Elsa Noemi

090300062

Programación lógica-funcional EJERCICIO PRACTICO 3

01. Marzo. 2012

b) Comprobando la regla: grandfather_of(A,B):-parent(W,B), father(A,W). Me regresa los resultados de A es el abuelo
b)
Comprobando la regla:
grandfather_of(A,B):-parent(W,B), father(A,W).
Me regresa los resultados de A es el abuelo de B,
sin importar si B (nieto) es hombre o mujer.
c)
Comprobando la regla:
grandmother_of(A,B):-parent(W,B), mother(A,W).
Me regresa los resultados de A es la abuela de B,
sin importar si B (nieto) es hombre o mujer.
3
3

León Ugalde Elsa Noemi

090300062

Programación lógica-funcional EJERCICIO PRACTICO 3

01. Marzo. 2012

Comprobando la regla: d) great_grandfather_of(A,B):-parent(Y,B), parent(X,Y), father(A,X). Me regresa los resultados
Comprobando la regla:
d)
great_grandfather_of(A,B):-parent(Y,B), parent(X,Y),
father(A,X).
Me regresa los resultados de A es el bisabuelo de B,
sin importar si B (bisnieto) es hombre o mujer.

(2) Construir la secuencia de diagramas similar a la de la Sección 3.3 para mostrar la secuencia de eventos cuando Prolog busca satisfacer el objetivo (goal):

-ancestor(luouise,Desc).

[A1]ancestor(X,Y):-parent(X,Y). [A2]ancestor(X,Y):-parent(X,Z),ancestor(Z,Y). //sustituyendo los valores queda:
[A1]ancestor(X,Y):-parent(X,Y).
[A2]ancestor(X,Y):-parent(X,Z),ancestor(Z,Y).
//sustituyendo los valores queda:
//sustituyendo los valores queda:
ancestor(louise,Desc):-parent(louise,Desc).
ancestor(louise,Desc):-parent(louise,Z),ancestor(Z,Desc).
Recorre desde [P1] pero no le sirven porque tienen
constantes que no coinciden, llega a [P3]
Recorre desde [P1] pero no le sirven porque tienen
constantes que no coinciden conel goal, llega a [P3]
[P3]parent(louise,Desc):-mother(louise,Desc).
[P3]parent(louise,Z):-mother(louise,Z).
Recorre desde [M1] hasta que encuentra una con la
constante louise:
Recorre desde [M1] hasta que encuentra coincidencia en
[M9]
[M9]mother(louise,caroline).
[M9]mother(louise,caroline).
//encuentra valor para Desc,
Desc = caroline
//encuentra valor de Z, Z = caroline
Encuentra:
[P4]parent(louise,Desc):-father(louise,Desc).
Sigue recorriendo hasta terminar, al no encontrar otra caso
en el que louise sea madre-mother(louise,Z)- llega a:
Pero no existe el caso en que louise sea padre, por lo
tanto es fallido.
[A1]ancestor(Z,Desc):-parent(Z,Desc).
Encuentra [P1] y [P2] pero las constants no coinciden
hasta llegar a:
[P3]parent(Z,Desc):-mother(Z,Desc).
Recorre desde [M1] hasta que encuentra una coincidencia
de que caroline es madre-mother(Z,Desc).- Z= caroline:
[M10]mother(caroline,david).
//encuentra valor de Desc,
Desc = david
Sigue recorriendo, pasa a [M11] donde encuentra la
siguiente coincidencia de que caroline es madre:
[M11]mother(caroline,david).
//encuentra valor de Desc,
Desc = janet
4
4

León Ugalde Elsa Noemi

090300062

Programación lógica-funcional EJERCICIO PRACTICO 3

01. Marzo. 2012

-Busca (usando backtracking) las dos primeras personas que Prolog identifica como desdencentes de louise.

personas que Prolog identifica como desdencentes de louise. -Predice la salida producida si el usuario forza

-Predice la salida producida si el usuario forza repetidamente el sistema con backtrack. Verifica tu predicción cargando el programa y probándolo.

si el usuario forza repetidamente el sistema con backtrack. Verifica tu predicción cargando el programa y
5
5