lunes, 9 de junio de 2014

MI ÁRBOL FAMILIAR





El siguiente árbol es mi árbol genealógico.
 Notemos que en Prolog el árbol familiar anterior, se puede representar con el siguiente programa, por mencionar solo algunos:
Nota: Dado que prolog no acepta de dos nombres, pues entonces todos los nombres deberían llevar 2. Entonces cambiaremos
-Miguel angel-> Miguel
-Miguel Jr. -> Miguelito

progenitor(francisca, miguel).
progenitor(blas, miguel).
progenitor( fernando, edilia).
progenitor(maura, edilia).
progenitor( miguel, nayeli).
progenitor( miguel, edwar).
progenitor(edilia, nayeli).
progenitor(edwar, miguelito).

Podemos realizar preguntas como las siguientes:
?- progenitor(edilia, nayeli).
?- progenitor(edilia, miguel).
?- progenitor(edwar, miguel).
?- progenitor( X, edilia).
?- progenitor( maura, X).
?- progenitor( X, Y).
1.2. Conjunciones de cláusulas.
Ahora queremos preguntar ¿quién es el abuelo de Miguel Jr?

El programa no incluye la relación 'abuelo', sin embargo podemos hacer la pregunta en dos pasos:
1). Quién es el progenitor de Miguel Jr, asumimos que es algún Y.
2). Quién es el progenitor de este Y, asumimos que es algún X.
Esta pregunta de dos pasos se puede escribir en Prolog:
?- progenitor( Y, miguelito) , progenitor( X, Y).
X = Miguel Ángel
Y = Edwar
la pregunta puede ser entendida como: "encuentra X y Y tal que se satisfagan las dos relaciones simultáneamente".
Si cambiamos el orden de las cláusulas, se produce el mismo resultado:
?- progenitor( X, Y) , progenitor( Y, miguelito).
X = Miguel Ángel
Y = Edwar





No hay comentarios:

Publicar un comentario