Inteligencia Artificial (Optativa 1º ciclo)
Práctica II
08-01-2001
La práctica consiste en el uso del programa lfiaml
para el diseño y construcción de un sistema de representación
del conocimiento y de razonamiento basados en lógica de predicados,
que se puede encontrar en la página WWW de la asignatura
http://www.dc.fi.udc.es/ai/~barreiro/iadocen/lfiaml-96/indice_lfiaml.html
En primer lugar debe estudiarse (en profundidad)
el funcionamiento de dicho programa y de los métodos de inferencia
que implementa (forward y backward chaining). Para probar el programa,
se darán una serie de hechos para los predicados:
casado(X,Y), hombre(X), mujer(X),
hijo(X,Y)
y se intentarán definir (al menos) los siguientes
predicados:
-
hermano(X,Y), donde X e Y pueden ser tanto hombres
como mujeres
-
sobrino(X,Y), donde X e Y pueden ser tanto hombres
como mujeres
-
primo(X,Y), donde X e Y pueden ser tanto hombres
como mujeres
-
abuelo(X,Y), donde X e Y pueden ser tanto hombres
como mujeres
-
padrastro(X,Y), donde X e Y pueden ser tanto
hombres como mujeres
-
hermanastro(X,Y), donde X e Y pueden ser tanto
hombres como mujeres
-
soltero(X), donde X puede ser tanto hombre como
mujer
-
antecesor(X,Y), donde Y es descendiente de X,
y ambos pueden ser tanto hombres como mujeres
-
pierdeapellido(X), donde X es un varón que
sólo tiene hijas
-
poligamo(X), donde X es un hombre (resp. mujer)
casado con varias mujeres (resp. hombres)
-
endogamia(X), si X está casado(a) con un
familiar directo (abuelo, nieto, hijo, padre, hermano, sobrino, tio, primo)
Defensa de la práctica
La práctica se defenderá en el laboratorio
de prácticas asignado a la asignatura. La defensa se realizará
en las horas de prácticas y atendiendo a la fecha límite
que se indicará. La defensa consistirá en la entrega de una
memoria y contestación a las preguntas del profesor. La memoria
incluirá (obligatoriamente) los siguientes puntos:
-
título, autores, asignatura y fecha, en una página
separada
-
Estudiar las limitaciones del programa con especial
atención a la capacidad de representación (cuantificación
de variables, etc...), usando como ejemplos los predicados anteriores que
no pudieron ser definidos.
-
Para los predicados que pudieron ser definidos, se probará
el mecanismo de forward chaining (proporcionando nuevos datos) y backward
chaining (indicando alguna meta a probar) y se incluirá en la memoria
la salida del programa. Además, se describirá (paso a paso)
a partir del pseudocódigo cómo el programa calculó
la respuesta para uno de los ejemplos con forward y backward chaining.
-
Plantear una solución a las limitaciones encontradas
en el programa, indicando qué modificaciones deberían
hacerse y en qué parte del pseudocódigo.
-
Breve comparación con el método de resolución.