viernes, 13 de junio de 2014

Ejercicio 2.4 de prolog Pedro Francisco

1. Considere el programa anterior y realice la traza de ejecución

a  la pregunta : 





 enorme(X), oscuro(X).


Analizando:

(a). Pregunta.   

?- oscuro( X), enorme( X).        % Quién es oscuro y enorme ?

Traza de la ejecución.
(1). Lista inicial de metas : oscuro(X), enorme(X).
(2). Examina el programa de arriba hacia abajo  buscando  una  cláusula cuya cabeza empate con la primera meta : oscuro(X). Se encuentra la cláusula 7 : 

               oscuro( Z) :- negro( Z).

se reemplaza la primera meta con el cuerpo instanciado de la cláusula 7, dando una nueva lista de metas :  

               negro(X), enorme(X).

(3). Examina el programa para encontrar un empatamiento de negro(X). Se encuentra la cláusula 5: negro( gato). Esta cláusula no  tiene  cuerpo, así que la lista de metas, luego de instanciarse se convierte en :

               enorme(gato)

(4). Examina el programa para buscar la meta enorme(gato), no se encuentra ninguna cláusula. Por lo tanto se realiza un proceso de backtracking al paso 3) y se elimina la instanciación X = gato. Ahora la lista de metas es de nuevo:
               negro(X), enorme(X).

Se continúa examinando el programa a partir de la cláusula 5. No se encuentra ninguna cláusula. Por lo tanto se realiza un proceso de backtracking nuevamente al paso (2) y se continúa examinando a partir de la cláusula 7. Se encuentra la cláusula 8:
               oscuro(Z) :- cafe(Z).

Se reemplaza la primera meta en la lista de metas por cafe(X), dando:
               cafe(X), enorme(X)

(5). Examina el programa buscando empatar cafe(X), encuentra cafe(oso). Esta cláusula no tiene cuerpo, así que la lista de metas es ahora:
               enorme(oso)

(6). Examina el programa  y  encuentra  la  cláusula  enorme(oso).  Esta cláusula no tiene cuerpo, así que la lista de metas se queda vacía. Esto indica una terminación exitosa y la instanciación correspondiente a la variable queda como :

               X = oso. 


b) Pregunta.      
?- enorme(X), oscuro(X).       % Quién es oscuro y enorme ?

Traza de la ejecución.
(1). Lista inicial de metas: enorme(X), oscuro(X).
(2). Examina el programa de arriba hacia abajo  buscando  una  cláusula cuya cabeza empate con la primera meta : enorme(X). Se encuentra en la cláusula 1:

enorme(oso).

Esta cláusula no  tiene  cuerpo, así que la lista de metas, luego de instanciarse se convierte en : 
oscuro(oso)

(3). Examina el programa para encontrar un empatamiento de oscuro(oso). Se encuentra la cláusula 7:

oscuro( Z) :- negro( Z).  

se reemplaza la primera meta con el cuerpo instanciado de la cláusula 7, dando una nueva lista de metas :  

               enorme(oso), negro(oso). 

(4). Examina el programa para buscar la meta negro(oso), no se encuentra ninguna cláusula. Por 

lo tanto se realiza un proceso de backtracking al paso 3) y se elimina la instanciación negro(oso). 

Ahora la lista de metas es de nuevo:  

               enorme(oso), oscuro(oso). 

Se continúa examinando el programa a partir de la cláusula 7. Se encuentra la cláusula 8:  

               oscuro(Z) :- cafe(Z).

Se reemplaza la segundo meta en la lista de metas por cafe(X), dando:  

               enorme(oso), cafe(oso). 

(5). Examina el programa buscando empatar cafe(X), encuentra cafe(oso). Esta cláusula no tiene 

cuerpo, así que la lista de metas se queda vacía. Esto indica una terminación exitosa y la 

instanciación correspondiente a la variable queda como :  


               X = oso. 


Mi árbol genealógico. Pedro Francisco



¿Como crear un Árbol Genealógico en Prolog?



 Se debe escribir el código utilizando el siguiente formato y 

siguiendo las reglas que marca el software.


Para el ejemplo de arriba tendremos el siguiente código:









1.- ¿Quién es mi papá?

2.- ¿Quién es mi mamá?

3.- ¿Quién es mi abuelo?

4.- ¿Quién es mi abuela?

5.- ¿Quién es mi hermana? 










Prolog, ejercicio 2 capitulo 2.

1. ¿ Las siguiente operaciones de matching tienen éxito ó fallan ?


Si tienen éxito, ¿cuáles son las instanciaciones resultantes en las 


variables?









(a). punto( A, B) = punto( 2, 3).
si tuvo exito





(b). punto( A, B) = punto( X, Y, Z).


(c). +( 2, 2) = 4.


(d). +( 2, D) = +( E, 2).



(e). triangulo(punto(-1,0),P2,P3) = 

triangulo(P1,punto(1,0),punto(0,Y)).





Ejercicio 1, prolog, capitulo 2

Sugiera una representación para rectángulos, cuadrados y 

círculos como objetos Prolog estructurados. Escriba algunos 

ejemplos que representen objetos físicos concretos utilizando la

representación que sugirió.








Ejercicio 1.7 prolog capitulo1

1.7. Trate de entender como Prolog deriva respuestas a las 


siguientes preguntas, usando el programa familiar. Dibuje  


también los diagramas de derivación  correspondientes.

Identifique los bactrakings que se encuentre:





1.?- progenitor(alejandra,pedro).



2 ?- madre(guadalupe,pedro).


3 ?- abuelo(isael,juana).


4 ?- madre(juana,isael).






Entendiendo Prolog ejercicio 1.3, 1.4, 1.5, 1.6.

1.3. Traduzca las siguientes sentencias a reglas Prolog. 
a). Cualquiera que tiene un hijo es feliz (introduzca la relación unaria llamada 'feliz'). 
b). Para todo X, si X tiene un hijo que tiene una hermana, entonces X tiene dos hijos 
 (introduzca la relación tiene-dos-hijos). 






1.4. Defina la relación 'nieto' usando la relación 'progenitor'. 
 Recomendación: Será similar a la relación abuelo. 

1.5. Defina la relación tia( X, Y) en términos de las relaciones 

'progenitor' y 'hermana'. Dibuje primero un diagrama para 


ésta relación.





1.6. Considere la siguiente definición alternativa de predecesor: 



 predecesor( X, Z) :- progenitor( X, Z). 

 predecesor( X, Z) :- progenitor( Y, Z) , predecesor( X, Y). 

¿Es apropiada esta definición? 


La primera definición no es apropiada.

Mientras que la segunda si lo es.











¿Puede usted dibujar un diagrama que corresponda con 

esta definición? 




lunes, 26 de mayo de 2014