Sie sind auf Seite 1von 6

1. Identificacin.

NOMBRE DE LA PRCTICA: Representacion de conocimiento con LP

No. DE PRCTICA: 2 NO. DE SESIONES: 2

NO. DE INTEGRANTES MXIMO POR EQUIPO: 2

2. Introduccin.

Antes que de empezar a programar, tenemos que tener en claro el significado de lo que es un
paradigma de programacin, este es una coleccin de patrones conceptuales que juntos modelan
el proceso de diseo y determinan la estructura del programa.
Los programas escritos en lenguajes con paradigmas declarativos, se construyen con hechos,
reglas, construcciones, relaciones o un conjunto de propiedades que nos pueda dar una solucin.

DLV es un sistema en Inteligencia Artificial basado en programacin lgica disyuntiva el cual ofrece
Front- ends a varios formalismos KR avanzados.

El Lisp fue creado originalmente como una notacin matemtica prctica para los programas de
computadora, basada en el clculo lambda de Alonzo Church. Se convirti rpidamente en el
lenguaje de programacin favorito en la investigacin de la inteligencia artificial (AI). Como
lenguajes de programacin precursor, el Lisp fue pionero en muchas ideas en ciencias de la
computacin, incluyendo las estructuras de datos de rbol, el manejo de almacenamiento
automtico, tipos dinmicos, y el compilador auto contenido.
El nombre LISP (en ingls, ceceo) deriva del "LISt Processing" (Proceso de LIStas). Las listas
encadenadas son una de las estructuras de datos importantes del Lisp, y el cdigo fuente del Lisp
en s mismo est compuesto de listas. Como resultado, los programas de Lisp pueden manipular el
cdigo fuente como una estructura de datos, dando lugar a los macro sistemas que permiten a los
programadores crear una nueva sintaxis de lenguajes de programacin de dominio
especfico empotrados en el Lisp.

Prolog es un lenguaje de programacin que resuelve sus consultas utilizando Backtrancking.


En Prolog no es necesario definir los pasos que haramos comnmente en el programa como en
los lenguajes de programacin iterativa, sino que se puede ir construyendo nuestro programa con
elementos tales como, predicado y hechos, bastante usada esta tcnica en la ingeniera de
software en la obtencin de los casos de uso en la ingeniera de requisitos.

3. Objetivo General.
El alumno representara las soluciones a los ejercicios planteados mediante Programacin lgica.
4. Objetivos Especficos.
El alumno analizara el problema.
El alumno realizara la representacin mediante lgica proposicional del problema y generara las
reglas pertinentes que determinen la solucin.
El alumno escribir la correspondiente solucin en un lenguaje de programacin lgica y analizara
sus resultados.

5. Reactivos/insumos, materiales/utensilios y equipos.


a) REACTIVOS/INSUMOS.

CANTIDAD DESCRIPCIN ESPECIFICACIONES OBS.

b) MATERIALES/UTENSILIOS.

CANTIDAD DESCRIPCIN ESPECIFICACIONES OBS.

c) EQUIPOS/INSTRUMENTOS.

CANTIDAD DESCRIPCIN ESPECIFICACIONES OBS.


15 PC Office 2010
DLV/ Prolog/ Lisp

6. Desarrollo de la Actividad Prctica.

P1. Definir en Prolog o DLV o LISP los predicados que definen por extensin todas las relaciones
familiares directas, padre(Padre, Hijo) y madre(Madre, Hijo) del rbol genealgico de la familia
Tudor.
Definir la relacin progenitor, utilizando las relaciones de padre y madre.
Definir recursivamente la relacin antepasado. Probar definiciones alternativas de esta relacin
cambiando el orden de los predicados. Comprobar cmo afecta al comportamiento del programa el
orden usado en las distintas definiciones de antepasado.
Definir nuevas relaciones (como hermano, hermana, abuelo, abuela) aadiendo los predicados
(por ejemplo mujer, hombre) y reglas necesarios.

P2. Implementar en Prolog juegos de lgica que se tienen que resolver por deduccin a partir de
un conjunto de pistas. El objetivo es correlacionar una serie de propiedades que cumplen distintos
elementos de nuestro Dominio (Universo del Discurso). La restriccin a la que est sujeto este
juego es que dos elementos distintos de un mismo Universo no pueden tener la misma
caracterstica.

P3. Representar en Prolog la red semntica de la figura. Se sugiere emplear un predicado binario
por cada relacin. Para las propiedades se sugiere que se emplee el predicado atributo(Objeto,
Atributo, Valor). Por ejemplo, atributo(albatros, vuela, muy_bien). Incluir las reglas necesarias para
que todo objeto herede los atributos y las propiedades de todas las clases a las que pertenece.
En ocasiones algunos de los atributos heredados por un objeto deben ser sustituidos por otros
particulares. As es posible tratar las excepciones, por ejemplo, las aves que no vuelan (como el
avestruz). Representar adecuadamente las excepciones que se sealan en el ejemplo. Se sugiere
emplear el predicado particular(Objeto, Atributo, Valor), con el que se especifica que ese atributo
es particular de ese objeto y sustituye al heredado.

7. Cuestionario.

Para cada uno de los ejercicios emplear Prolog para hacer consultas como quien es primo de
quien, o hermano o abuelo de quien?

En la captura veremos cmo funcionan las Reglas utilizando los hechos del cdigo, gracias a estas reglas
sabremos quienes son abuelos, primos, tos, sobrinos, etc. Sin declarar uno por uno en hechos como lo
hicimos con los padres y nombres junto al gnero.

hombre('Carlos').
hombre('Amado').
hombre('Pedro').
hombre('Hernesto').
hombre('Ruben').
hombre('Javier').
hombre('Victor').
hombre('PedroJ').
hombre('Javier').
hombre('Dany').
hombre('Luis').
hombre('VictorH').
hombre('Jesus').
hombre('Carlos').
mujer('Teo').
mujer('Victoria').
mujer('Carla').
mujer('Julieta').
mujer('Fer').
mujer('Marieli').
mujer('Aylin').
mujer('Alejandra').
mujer('Ale').
mujer('Magali').
mujer('Blanca').
mujer('Francisca').
mujer('Paty').
mujer('Irma').
mujer('Cheli').
mujer('Bety').

padre('Amado','Paty').
padre('Amado','Irma').
padre('Amado','Ruben').
padre('Amado','Cheli').
padre('Amado','Julieta').
padre('Alejandro','Ale').
padre('Alejandro','Magli').
padre('Alejandro','Blanca').
padre('Hernesto','Aylin').
padre('Hernesto','Alejandra').
padre('Hernesto','Jesus').
padre('Hernesto','Carlos').
padre('Ruben','Luis').
padre('Ruben','Marieli').
padre('Javier','Fer').
padre('Javier','Dany').
padre('PedroJ','Pedro').
padre('PedroJ','Victorh').
padre('PedroJ','Carla').
padre('Victor','PedroJ').
padre('Victor','Victoria').
padre('Teo','Paty').
padre('Teo','Irma').
padre('Teo','Ruben').
padre('Teo','Cheli').
padre('Teo','Julieta').
padre('Paty','Ale').
padre('Paty','Magli').
padre('Paty','Blanca').
padre('Irma','Aylin').
padre('Irma','Alejandra').
padre('Irma','Jesus').
padre('Irma','Carlos').
padre('Bety','Luis').
padre('Bety','Marieli').
padre('Cheli','Fer').
padre('Cheli','Dany').
padre('Julieta','Pedro').
padre('Julieta','Victorh').
padre('Julieta','Carla').
padre('Francisca','PedroJ').
padre('Francisca','Victoria').

esposos('Amado','Teo').
esposos('Alejandro','Paty').
esposos('Hernesto','Irma').
esposos('Ruben','Bety').
esposos('Javier','Cheli').
esposos('PedroJ','Julieta').
esposos('Victor','Francisca').

esposos('Teo','Amado').
esposos('Paty','Alejandro').
esposos('Irma','Hernesto').
esposos('Bety','Ruben').
esposos('Cheli','Javier').
esposos('Julieta','PedroJ').
esposos('Francisca','Victor').

diferente(X,Y):- X \== Y.
hijo(A,B):-padre(B,A),hombre(A).
hija(A,B):-padre(B,A),mujer(A).
nieto(A,B):-padre(B,C),padre(C,A),hombre(A).%solo es nieto hombre
hermano(A,B):-padre(C,A),padre(C,B),diferente(A,B).
primo(A,B):-padre(C,A),padre(D,B),hermano(C,D),diferente(D,C).
tio(A,B):-padre(C,B),hermano(C,A),hombre(A).
abuelo(A,B):-nieto(B,A).
cuado(A,B):-esposos(B,C),hermano(A,C).
tia(A,B):-padre(C,B),hermano(C,A),mujer(A).
sobrino(A,B):-hijo(A,C),hermano(C,B),hombre(A).
sobrina(A,B):-hija(A,C),hermano(C,B),mujer(A).
8. Bibliografa.

Tutoriales en Linea del sistema de programacion empleado.

9. Formato y especificacin del reporte de prctica.

a. Escribir los programas en la libreta y cada una de las consultas realizadas.