domingo, 3 de marzo de 2013

Ejercicios 1.7

Link para ver la tarea...

Ejercicios 1.7 ¿Cómo hace las preguntas Prolog?

Ejercicios 1

Vamos a Realizar los ejercicios que se encuentran en el archivo  Prolog estos temas a tratar son del curso que llevamos sobre Programación Lógica.

Los primeros ejercicios son:
  
1. Asumiendo las relaciones definidas en el ejemplo, ¿qué contestará Prolog a las
siguientes preguntas?



Primero que nada sabemos que para que este nos funciones debemos declarar las clausalas para estos ejercicios es suficiente con declarar las clausulas de progenitor.



 Ahora le hacemos la pregunta y el resultado es false.

a). ?- progenitor( jaime, X).
b). ?- progenitor( X, jaime).
c). ?- progenitor( pamela, X), progenitor( X, patricia).
d). ?- progenitor( pamela, X), progenitor( X, Y), progenitor(Y,jaime).


Bueno para no meter tantas imagenes solo saco una haciendo las  cuatro consultas requeridas.

2. Formule en Prolog las siguientes preguntas acerca de la relación progenitor:
a). ¿ cómo se llama el progenitor de patricia ?


      ?- progenitor(X,patricia).

b). ¿ tiene elizabeth algún hijo ?



      ?- progrenitor(elizabeth,X).

c). ¿ cómo se llama el abuelo de patricia ?


     ?- progenitor(roberto,patricia), progenitor(X,roberto).



Segundos ejercicios.

1.3. Traduzca las siguientes sentencias a reglas Prolog.

a). Cualquiera que tiene un hijo es feliz (introduzca la relación unaria llamada 'feliz').


Para todo X y Y
X es feliz, si X es progenitor de Y.

en Prolog:

feliz(X):- progenitor(X,Y).

Añadimos la clausula feliz.


Después hacemos la pregunta de quienes son felices.



Las veces que se repiten los nombres son la cantidad de hijos que tienen.

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).



Para todo X y Y.
X progenitor de Y, Y hermana de Z,
entonces X tiene dos hijos.

en prolog:
tiene-dos-hijos(X):- progenitor(X,Y), progenitor(X,Z).

 Añadimos la clausula tiene-dos-hijos

1.4. Defina la relación 'nieto' usando la relación 'progenitor'.

Para todo X,Y,Z.
Z es progenitor de Y, Y es progenitor X,
entonces X es nieto de Z.

En prolog:
nieto(X,Z):- progenitor(Z,Y), progenitor(Y,X).


 
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.


Para todo X,Y
X es tia de Y, si X es hermana de Z,
Z es progenitor de Y y X es mujer.

En prolog:

tia(X,Y):- hernana(X,Z), progenitor(Z,Y), mujer(X).


Ahora la pregunta.



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

Este ejercicio se sigue de

Primera regla.
Para todo X y Z,
X es predecesor de Z si
X es progenitor de Z.


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


Segunda regla.

Para todo X y Z,
X es predecesor de Z si
existe algun Y tal que
(1) X es progenitor de Y y
(2) Y es predecesor de Z.


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


 Ahora queremos saber si

(Primera regla)  predecesor( X, Z) :- progenitor( X, Z).
(Segunda regla) predecesor( X, Z) :- progenitor( Y, Z) , predecesor( X, Y).


¿Es apropiada esta definición?

Añadimos primera y segunda regla.



Respuesta: Si



¿Puede usted dibujar un diagrama que corresponda con
esta definición?


Primero si X es predecesor de Z es verdadero, por lo consiguiente X es progenitor de Z.
Segundo Y es progenitor de Z, entonces Y es predecesor de Z.
Tercero X es predecesor de Y, entonces X es progenitor de Y.

Por lo tanto existe la relacion de que X es predecesor de Z, pero no es progenitor de Z. es como si existiera la relacion padre y abuelo donde ellos son los predecesores.



Material de apoyo Programación Lógica (Prolog)

Para aquellos que no cuentan con el material.
Tenemos tres pdf que podiras consultar.

Link de descarga:

-Prolog
-El lenguaje de programación Prolog de M. Teresa Escrig
-Temas Programacion Logica IA 

Seguidores