Unificacion y Recursion En Prolog

Páginas: 5 (1125 palabras) Publicado: 25 de octubre de 2011
Unificacion y Recursion

Introducción
Cuando trabajamos con las bases de conocimientos, nos introducimos al termino Unificación, por ejemplo, Prolog unifica a mujer ( X ) con mujer (mia ) , instanciando la variable X con mia. La definición formal de unificación dice:

“Dos términos concuerdan, si son iguales o si contienen variables que pueden se instanciadas de tal manera que los términosresultantes sean iguales”
La recursión en cualquier lenguaje de programación es una función que llama a si misma hasta que el resultado se haya obtenido. En Prolog, la recursión aparece cuando un predicado contiene un objetivo que se refiere a si mismo. Cuando una regla es llamada, Prolog crea una nueva con nuevas variables. Por lo que no hay diferencia si una regla llama a otra o se llama a simisma. En Prolog y en cualquier lenguaje de programación, una definición recursiva siempre tiene al menos dos partes. Un primer hecho que actúa como una condición de parada y una regla que se llama a sí misma simplificada. En cada nivel el primer hecho se comprueba. Si el hecho es cierto, entonces la recursión termina. Si no, la recursividad continua. Una regla recursiva no debe llamarse a sí mismacon los mismos argumentos. Si eso ocurre, entonces el programa no tendrá fin.

Desarrollo
Ejercicio 1. Se tiene la siguiente base de conocimientos con el hecho hijo(X,Y) que indica que Y es hijo o hija de X, además tenemos la regla descendiente(X,Y) que será verdadera si Y es descendiente de X como se muestra a continuación:
hijo(martha,carla). hijo(carla,carolina). hijo(carolina,laura).hijo(laura,rosa). descendiente(X,Y):- hijo(X,Y). descendiente(X,Y):- hijo(X,Z),descendiente(Z,Y).

Dibuje un diagrama de árbol que modele la búsqueda que se genera al hacer la preguntas descendiente(martha,laura). descendiente(martha,laura). hijo(martha,laura). hijo(martha,carla).

false

descendiente(carla,laura). hijo(carla,laura). hijo(carla,carolina). descendiente(carolina,laura).hijo(carolina,laura).

false

true

Ejercicio 2. Escriba una base de conocimientos en el que se describan las relaciones que se muestran en el árbol genealógico de la familia Simpson (figura 1). Cabe mencionar que el árbol, solo muestra una parte de la familia, no se esta representando toda la información. Deberá tener las clausulas que se listan a continuación:
padre(X,Y) /* X es el padre de Y */madre(X,Y) /* X es la madre de Y */ varon(X) /* X es varón */ mujer(X) /* X es mujer */ parent(X,Y) /* X es padre o madre de Y*/ diff(X,Y) / *X y Y son diferentes */ conyuge(X,Y) /* X y Y se casaron */

• • • • • • •

Defina las siguientes relaciones empleando las reglas definidas anteriormente: • • • • • • • • es_madre(X) /* X es una madre */ es_padre(X) /* X es un padre */ es_hijo(X) /* X esun hijo hombre o mujer */ hermana_de(X,Y) /* X es hermana de Y */ abuelo_de(X,Y) /* X es abuelo de Y */ sibling(X,Y) /* X es hermano o hermana de Y */ primo(X,Y) /* X es primo o prima de Y */ descendiente(X,Y) /* X es descendiente de Y *

Las reglas y definiciones se encuentran en la base de conocimientos (Anexo 1)
Las clausulas están definidas en la base de conocimientos (anexo 1). Conclusiones
La recursión es una herramienta que nos ayuda a generar menos códigos para obtener resultados, lo cual es conveniente a la hora de buscar un manejo eficiente y limpio de los programas. Dentro del primer ejercicio, se dibujo el árbol de búsqueda, lo cual nos hace darnos una idea de como Prolog va leyendo las lineas de la base de conocimientos y como va instanciando las variables para buscarel resultado. Si el resultado es falso, se regresa hasta el punto donde pregunta y toma otro camino, lo cual hace que se prueben todas las combinaciones posibles de una pregunta, y trata de buscar la manera posible de que el resultado sea verdadero. Y en caso de fallar todas las alternativas, es entonces cuando nos arroja un resultado de falso. En el segundo ejercicio, encontramos un uso mas...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Recursion
  • recursion
  • Recursion
  • Unificación
  • Unificación
  • Recursion Assigment
  • Prolog
  • prologo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS