Está en la página 1de 5

Len Ugalde Elsa Noemi 090300062

Programacin lgica-funcional EJERCICIO PRACTICO 3

01. Marzo. 2012

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

Extensin del programa

Len Ugalde Elsa Noemi 090300062

Programacin lgica-funcional EJERCICIO PRACTICO 3

01. Marzo. 2012

Pruebas: (a) child_of(A,B) (b) grandfather_of(A,B) (c) grandmother_of(A,B) (d) great_grandfather_of(A,B)

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

Len Ugalde Elsa Noemi 090300062

Programacin lgica-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 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.

Len Ugalde Elsa Noemi 090300062

Programacin lgica-funcional EJERCICIO PRACTICO 3

01. Marzo. 2012

d)

Comprobando la regla: 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 Seccin 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). //sustituyendo los valores queda: ancestor(louise,Desc):-parent(louise,Desc). Recorre desde [P1] pero no le sirven porque tienen constantes que no coinciden, llega a [P3] [P3]parent(louise,Desc):-mother(louise,Desc). Recorre desde [M1] hasta que encuentra una con la constante louise: [M9]mother(louise,caroline). //encuentra valor para Desc, Desc = caroline Encuentra: [P4]parent(louise,Desc):-father(louise,Desc). Pero no existe el caso en que louise sea padre, por lo tanto es fallido.

[A2]ancestor(X,Y):-parent(X,Z),ancestor(Z,Y). //sustituyendo los valores queda: ancestor(louise,Desc):-parent(louise,Z),ancestor(Z,Desc). Recorre desde [P1] pero no le sirven porque tienen constantes que no coinciden conel goal, llega a [P3] [P3]parent(louise,Z):-mother(louise,Z). Recorre desde [M1] hasta que encuentra coincidencia en [M9] [M9]mother(louise,caroline). //encuentra valor de Z, Z = caroline Sigue recorriendo hasta terminar, al no encontrar otra caso en el que louise sea madre-mother(louise,Z)- llega a: [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

Len Ugalde Elsa Noemi 090300062

Programacin lgica-funcional EJERCICIO PRACTICO 3

01. Marzo. 2012

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

-Predice la salida producida si el usuario forza repetidamente el sistema con backtrack. Verifica tu prediccin cargando el programa y probndolo.

También podría gustarte