lunes, 21 de julio de 2014
SWI_Prolog / Arbol Genealogico
Este es un ejemplo de como se hace un árbol genealógico de la familia en "SWI Prolog" que se descarga directamente desde internet. este programa es muy funcional para hacer consultas solo agregando relaciones o hechos en los cuales para el árbol solo se utilizan hechos padre a hijo.
el signo de % significa un comentario
el singo de , significa conjunción
el singo de . significa disyunción
los signos :- significan condicional
-los hecho se definen de la siguiente manera:
padre(Silvio,laura) % se lee Silvio es el padre de laura
madre(elvira,lisbe) % se lee elvira es el madre de lisbe
y asi sucesivamente todos los hechos padre e hijoo madre e hijo.
-las condiciones se definen de la siguiente manera:
hermanos(X,Y) :- padre(Z,X), padre(Z,Y). % se lee X es hermano de Y si Z es el padre de X y Z es el padre de Y
abuelos(X,Z):- padre(X,A),padre(A,Z). % se lee X es abuelo de Z si X es padre de A y A es padre de Z
-para las consultas después de tener los hechos en relación padres e hijos se hace de la siguiente manera:
?- hermanos(Andres,laura). % se escribe tal cual, los nombres pueden variar!
?- tios(ruben,daniela). % se escribe tal cual, los nombres pueden variar!
Un ejemplo de como se hacen los hechos y las condiciones basados en el árbol genealógico:
madre(lisbe,laura).
madre(lisbe,alejandra).
madre(lisbe,daniela).
madre(lisbe,andres).
padre(silvio,laura).
padre(silvio,alejandra).
padre(silvio,daniela).
padre(silvio,andres).
padre(francisco,silvio).
padre(francisco,jesus).
padre(francisco,rosalva).
padre(francisco,nelsy).
madre(erlinda,silvio).
madre(erlinda,jesus).
madre(erlinda,rosalva).
madre(erlinda,nelsy).
madre(nelsy,tatiana).
madre(nelsy,miguel).
madre(rosalva,natalia).
madre(rosalva,diego).
padre(luis,lisbe).
padre(luis,johanna).
padre(luis,brigithe).
padre(luis,hsneider).
madre(elvira,lisbe).
madre(elvira,johanna).
madre(elvira,brigithe).
madre(elvira,hsneider).
madre(johanna,carlos).
madre(brigithe,nicole).
madre(hsneider,steven).
diferente(X,Y):- X\=Y.
hermanos(X,Y):- madre(W,X),madre(W,Y),diferente(X,Y).
hermanos(X,Y):- padre(P,X),padre(P,Y),diferente(X,Y).
tios(X,Y):- padre(Z,Y),hermanos(X,Z).
tios(X,Y):- madre(Z,Y),hermanos(X,Z).
abuelos(X,Z):- padre(X,A),madre(A,Z).
abuelos(X,Z):- madre(X,B),madre(B,Z).
abuelos(X,Z):- madre(X,C),padre(C,Z).
abuelos(X,Z):- padre(X,D),padre(D,Z).
sobrinos(X,Y):- padre(W,X),hermanos(W,Y).
sobrinos(X,Y):- madre(P,X),hermanos(P,Y).
primos(X,Y):- padre(W,X),padre(Z,Y),hermanos(Z,W).
primos(X,Y):- padre(W,X),madre(Z,Y),hermanos(Z,W).
primos(X,Y):- madre(W,X),madre(Z,Y),hermanos(Z,W).
primos(X,Y):- madre(W,X),padre(Z,Y),hermanos(Z,W).
nietos(Z,X):- padre(X,A),madre(A,Z).
nietos(Z,X):- madre(X,B),madre(B,Z).
nietos(Z,X):- madre(X,C),padre(C,Z).
nietos(Z,X):- padre(X,D),padre(D,Z).
?- hermanos(andres,alejandra).
true
?- abuelo(luis,nicole).
true
?- tios(ruben,steven).
false
?- primos(laura,natalia).
true
Suscribirse a:
Comentarios de la entrada (Atom)

No hay comentarios.:
Publicar un comentario