Prolog - Programacion prolog Ayuda con este problema o guia

 
Vista:

Programacion prolog Ayuda con este problema o guia

Publicado por antony RAal (1 intervención) el 14/05/2015 06:28:43
3. Árbol genealógico, cree un fichero herencia con hechos del siguiente tipo:

es_un(rapaz,ave).
es_un(aguila,rapaz).
es_un(halcon,rapaz).
es_un(buitre,rapaz).
es_un('aguila perdicera',aguila).
es_un(calzada,aguila).
es_un('cernicalo primilla',halcon).
es_un('cernicalo vulgar',halcon).
tiene(ave,plumas).
tiene(ave,pico).
tiene(rapaz,garrasFuertes).
tiene(rapaz,vistaProfunda).

El predicado es_un(C1,C2) se utiliza para representar que la clase de objetos C1 es una subclase directa de C2. El predicado tiene(C,P) se usa para representar que los objetos de la clase C admiten la propiedad P.

a. Aumente la potencia del predicado tiene, añadiendo una regla (con cabecera tiene) que diga que las propiedades aplicables a una clase también son aplicables a cualquier subclase que herede de ella (directamente o a través de una línea de herencia), para lo que tendrá que usar el predicado es_un.

Por ejemplo, podremos deducir que un cernícalo primilla tiene alas; es decir, tiene('cernicalo primilla',alas) debe devolver un éxito.

b. Añada las reglas necesarias para poder definir el predicado es_un_tipo_de(C1,C2), que nos dirá si la clase C1 es una subclase directa de C2 o existe una línea de herencia entre C1 y C2.
Por ejemplo, podremos deducir que un cernícalo primilla es un tipo de ave; es decir, es_un_tipo_de('cernicalo primilla',ave) debe devolver éxito.

c. Nos preguntamos ahora si no hubiese sido mejor definir la regla con cabecera tiene del apartado a), usando el predicado es_un_tipo_de definido en el apartado b), en vez de utilizar el predicado es_un. Justifique su respuesta.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder