Sunteți pe pagina 1din 4

ESPECIALIDAD:

Ingeniera en sistemas computacionales


MATERIA:
Programacin lgica y funcional
TEMA:
4.6.- Representacin clausada del conocimiento
4.7.- Consulta de una base de clausulas
UNIDAD:
IV
CATEDRATICO:
Ruiz Celaya Flavio Aquiles
INTEGRANTES DEL EQUIPO:
Davinson Hernndez Melndez

SEMESTRE:

GRUPO:

4.7.- CONSULTA DE UNA BASE DE CLAUSULAS


Clausulas: es una separacin finita de cero o mas literales. Cuando la clausula
est compuesta de un solo literal diremos que es una clausula unitaria.
Las clusulas contienen la especificacin o implementacin del conjunto de
hechos y reglas que componen el programa. Dicha seccin se encabeza con la
palabra CLAUSES.
Una clusula puede ser:
Un hecho: por ejemplo padre (Juan, mara).
Los predicados se definen mediante un conjunto de clusulas: clausula1 clausula2
... clausulan.
Donde el orden es significativo. Para facilitar la lectura, se suele dejar una lnea en
blanco entre clusula y clusula.
Las clusulas son trminos (como todo en Prolog) con el siguiente formato:
cabeza :- ojetivo1, ojetivo2, ..., ojetivoN.
Todo gira en torno al operador ":-". Lo que aparece a la izquierda se denomina
cabeza y la secuencia de objetivos que aparece a la derecha se denomina cuerpo.
La cabeza es un trmino simple, por ejemplo, p(X,12) podra ser la cabeza de una
clusula del predicado p/2. Es decir, todas las clusulas de un mismo predicado
tienen en la cabeza un trmino con el mismo functor y aridad, aunque los
argumentos pueden ser distintos.
El cuerpo no es ms que el conjunto de condiciones que deben cumplirse (tener
xito) para que el predicado tenga xito si lo invocamos con un objetivo que
unifique con la cabeza. Cuando invocamos un objetivo, Prolog unifica dicho
objetivo con las cabezas de las clusulas. Cada clusula que unifique constituye
un punto de eleccin.
A continuacin se ejecuta el cuerpo de la primera clusula. Para ello se mantienen
las ligaduras que ocurrieron en el paso anterior. Si el cuerpo tiene xito, pueden
ocurrir nuevas ligaduras. Dichas ligaduras pueden afectar de nuevo a la cabeza de
la clusula. En consecuencia, el mbito de visibilidad de las variables es una nica
clusula.
Si el cuerpo de la clusula falla, el mecanismo de backtracking nos lleva al
siguiente punto de eleccin, es decir, la siguiente clusula. El proceso se repite
mientras queden cabezas que unifiquen (es decir, puntos de eleccin). Cuando no
quedan cabezas que unifiquen, el objetivo falla.

Ejemplo simple
Veamos un predicado compuesto por una simple clusula:
es_viejo(Individuo) :- edad(Individuo,Valor), Valor > 60.
Ahora invocamos el objetivo es_viejo(luis). Para ello supongamos que la edad de
Luis es 32 aos, es decir, el objetivo edad(luis,32) tiene xito.
Primero se unifica la cabeza de la clusula con el objetivo. Es decir, unificamos
es_viejo(luis) y es_viejo(Individuo), producindose la ligadura de la variable
Individuo al valor luis. Como el mbito de visibilidad de la variable es su clusula,
la ligadura tambin afecta al cuerpo, luego estamos ejecutando realmente:
es_viejo(luis) :- edad(luis,Valor), Valor > 60.
Ahora ejecutamos el cuerpo, que liga la variable Valor a 32. Pero el cuerpo falla
porque el segundo objetivo falla (32>60 es falso). Entonces la clusula falla y se
produce backtracking. Como no hay ms puntos de eleccin el objetivo falla. Es
decir,
Luis
no
es
un
viejo.
Clusulas sin cuerpo
Si no existen condiciones para que una clusula sea cierta podemos omitir el
cuerpo. En tal caso solamente escribimos la cabeza terminada en punto. Por
Ejemplo:
Edad (Juan, 32).
Edad (Luis, 20).
Son dos clusulas de predicado edad/2. Las clusulas sin cuerpo se suelen
denominar hechos, e.g. es un hecho que la edad de Luis es 20 aos.
Debe saber

Podemos escribir las clusulas en una sola lnea, si no lo hacemos es por


legibilidad: a :- b,c,d.
El orden de escritura de las clusulas determina el orden en que se
suceden las soluciones.
Recuerde que pueden aparecer puntos de eleccin dentro del cuerpo de
una clusula, como en toda secuencia de objetivos. Esto significa que una
nica clusula puede dar lugar a varias soluciones cuando uno o ms
objetivos del cuerpo tienen tambin varias soluciones.
Si una misma variable aparece en dos clusulas diferentes, entonces son
variables diferentes pero con el mismo nombre. Recuerde que el mbito de
visibilidad de las variables es una nica clusula.

Bibliografa

http://programacion.net/articulo/tutorial_basico_de_programacion_en_prolo
g_58/5

S-ar putea să vă placă și