jueves, 21 de octubre de 2010

PROLOG - Cuñados

Laboratorio de Lenguajes de Programación - Semana 7

SE PLANTEA EL SIGUIENTE RAZONAMIENTO:

¿Qué persona es cuñado de Quién?
Se tienen los siguientes parentescos:
Pedro es hermano de Luis. Luis es el esposo de Ana; Antonio es el esposo de Elsa y Juan es el hermano de Luis. Carlos es hermano de Juan. Elsa es hermana de Luis y esposa de Antonio.


ANÁLISIS

Tenemos dos parejas de esposos:

esposos(luis, ana). luis esposo de ana
esposos(elsa, antonio). antonio esposo de elsa

Ahora, tenemos los siguientes parejas de hermanos:

hermanos(luis, pedro).
hermanos(luis, juan).
hermanos(juan, carlos). por consiguiente:
hermanos(luis,carlos).
hermanos(luis, elsa)., como elsa es hermana de luis, entonces se tienen los siguientes parentescos:
hermanos(elsa, luis).
hermanos(elsa, carlos).
hermanos(elsa, juan).
hermanos(elsa, pedro).

RAZONAMIENTOS

Para que Antonio tenga cuñados, es necesario que Elsa tenga hermanos, todos los hermanos de Elsa son cuñados de Antonio; y todos los hermanos de Luis son cuñados de Ana; esto nos parece lógico a nosotros, pero recordemos que a prolog es necesario declararselo, entonces:

cunados(X, Z), en este caso X puede ser Ana o Antonio, los que no pertenecen a la familia; y Z sera algun miembro de la familia de hermanos; Y sera el esposo/esposa de X

Z sera cuñado de X si: X y Y son esposos, y ademas Y y Z son hermanos

ejemplo literal:

luis es cuñado de antonio si: antonio y elsa son esposos y ademas elsa y luis son hermanos
carlos es cuñado de ana si: ana y luis son esposos y ademas luis y carlos son hermanos

La condición quedara algo asi:

cunados(X,Z) :- esposos(Y,X) , hermanos(Y,Z)

HIPÓTESIS

El programa completo tendría la siguiente declaración:

cunados(X,Z) :- esposos(Y,X) , hermanos(Y,Z).
esposos(luis, ana).
esposos(elsa, antonio).
hermanos(elsa, luis).
hermanos(elsa, juan).
hermanos(elsa, carlos).
hermanos(elsa, pedro).
hermanos(luis, pedro).
hermanos(luis, juan).
hermanos(juan, carlos).
hermanos(luis, carlos).
hermanos(luis, elsa).

EJECUCIÓN

Abrimos un archivo de texto, lo tecleamos y lo guardamos con la terminación *.pro / *.prolog.

Ahora veamos su ejecución, abrimos una terminal y ahora escribimos prolog para abrir el entorno de SWI-PROLOG:



Despues compilamos el código que tecleamos:


Queremos saber de las parejas de esposos quienes son los cuñados de Ana y quienes los de Antonio, asi que le preguntamos a Prolog lo siguiente:

cunados(antonio,X). (cunados de antonio?), no importa quien, listar todas las posibilidades.

cunados(ana,X). (cunados de ana?), no importa quien, listar todas las posibilidades.

RESULTADOS



CONCLUSIÓN

Sabiamos que cada uno tendría 4 cuñados, lo que aqui comprobamos es que el programa que tecleamos funciono bien porque nos regreso los resultados que esperabamos, si Luis tiene 4 hermanos, esos 4 hermanos son los cuñados de Ana, y los 4 hermanos de Elsa son los 4 cuñados de Antonio.

SALUDOS!!! ^_^

2 comentarios:

  1. Muy bien. Cinco puntos para el lab.

    ResponderEliminar
  2. pero aca solo saca los cuñados por parte de la pareja y los cuñados por parte de la misma familia como el esposo de una hermana de el o ella.

    ResponderEliminar