
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