miércoles, 6 de agosto de 2014

PRÁCTICA EN PROLOG

Fecha de clases: 22 de julio/2014


INTRODUCCIÓN 


El propósito es realizar un ejercicio en PROLOG que identifique el parentesco que tienen los integrantes de una familia y quienes tienen posibilidad de procrear. Para esto debe construir un árbol genealógico:


(haga clic en la imagen para agrandarla)


Base del conocimiento:


hijo(angel,hector).
hijo(victoria,hector).
hijo(jose,hector).
hijo(feliciano,hector).
hijo(salvador,hector).
hijo(miguel,angel).
hijo(angelica,angel).
hijo(nathaly,victoria).
hijo(erik,jose).
hijo(cinthia,jose).
hijo(dora,jose).
hijo(wellintong,feliciano).
hijo(andres,feliciano).
hijo(hirene,feliciano).
hijo(liana,leyo).
hijo(marisol,leyo).
hijo(robin,leyo).
hijo(frecia,leyo).
hijo(alejandro,liana).
hijo(cristhiam,liana).
hijo(diana,marisol).
hijo(kerly,robin).
hijo(adriana,robin).
hijo(erik,frecia).
hijo(cinthia,frecia).
hijo(dora,frecia).
hombre(hector).
hombre(angel).
hombre(jose).
hombre(feliciano).
hombre(salvador).
hombre(leyo).
hombre(robin).
mujer(victoria).
mujer(liana).
mujer(marisol).
mujer(frecia).


Reglas:


hermano(X,Y):-hijo(X,Z),hijo(Y,Z).
primo(X,Y):-hijo(X,Z),hijo(Y,W),hermano(Z,W).
primopaterno(X,Y):-hijo(X,Z),hijo(Y,W),hermano(Z,W),(hombre(W)).
primomaterno(X,Y):-hijo(X,Z),hijo(Y,W),hermano(Z,W),(mujer(W)).
tio(X,Y):-hijo(Y,Z),hermano(Z,X).
puedeprocrear(X,Y):-not(hermano(X,Y)),not(hijo(X,Y)),not(hijo(Y,X)),not(primo(X,Y)),not(tio(X,Y)),not(tio(Y,X)),not((hombre(X),hombre(Y));(mujer(X),mujer(Y))).



Pruebas:

Para esto, dentro del mismo PROLOG hacemos clic en File/Consult y seleccionamos ambos archivos (Base del Conocimiento  y Reglas) una a la vez y escribimos:






Conclusión:

Todo depende de la correcta declaración de las reglas. El objetivo es que el programa sea eficaz en sus respuestas, para esto la base del conocimiento debe estar llena de datos específicos (esenciales); es decir, sólo los necesarios, y establecer buenas reglas para que esa base de conocimiento abastezca y genere las respuestas solicitadas. 

No hay comentarios.:

Publicar un comentario