You are on page 1of 19

PREDICADOS Y OPERADORES

PROCEDIMIENTO
Bsquedas: Entendiendo las Variables y Predicados.
La prctica le permitir proponer un sistema experto que deduzca toda una
estructura familiar partiendo de solo definir quien es padre de quien, esto se ira
definiendo paso a paso.
Primero se ha de construir la base de conocimientos con las siguientes
definiciones:
predicados
padre("Pablo", "Juan").
%Pablo es padre de Juan
padre("Pablo", "Marcela").
padre("Juan", "Maria").
padre("Juan", "Maura").
padre("Carlos", "Debora").
padre("Maria", "Luis").
padre("Maria", "Pati").
padre("Debora", "Miguel").
Nota: Se esta definiendo el predicado padre, que representa al padre de familia,
no se esta considerando el gnero (masculino o femenino).
Consultas:
Quien es el padre de Juan?:
padre(Quien, "Juan")
Respuesta:

Pablo de quien es padre:


padre(Pablo,X), write(X), nl, fail.
Respuesta:

PARTE 2: Implementando ms predicados:


Es necesario en base al conocimiento propuesto se debe conocer quien es hijo
de quien, quien es el abuelo y los posibles hermanos, en base a los datos
anteriores
Nota:
La inclusin de :- representa la estructura condicional si
La inclusin de , representa conector lgico y
La inclusin de ; representa conector lgico o
La inclusin de \== representa conector lgico diferente
Defina los predicados y las clusulas:
Predicados a aumentar

Consultas:
Quien es el hijo de Pablo:
hijo(X,Y):-padre(X,Y), X\==Y.
Respuesta:

Quien es el hijo de Maria:


Consulta
Respuesta:

Marcela de quien es hijo:


Consulta
Respuesta:

Quien es el abuelo de Maria:


Respuesta:

Quien es el abuelo de Pati:


Consulta
Respuesta:

Juan de quien es
abuelo: Consulta
Respuesta:

Mostrar todos los


abuelos: Consulta
Respuesta:

Quien es el hermano de Pati:


Cosulta
Respuesta:

Mostrar todos los


hermanos: Consulta
Respuesta:

PARTE 3: Desarrollando ms predicados:


Ahora hay que completar mas predicados, por ejemplo: Maura es
sobrino de Marcela y Marcela es ta de Maura por lo que es
necesario desarrollar por lo que complete nuevos predicados
Predicates
tio(persona,persona)
.
sobrino(persona,pers
ona).

Quien es el to de Maria:
Consulta
Respuesta:

Maura de quien es tio:


Consulta
Respuesta

Mostrar todos los tios:


Consulta
Respuesta:

Quien es el sobrino de Marcela:


Consulta
Respuesta:

Pati de quien es sobrino:


Consulta
Respuesta:

Mostrar todos los sobrinos:


Consulta
Respuesta:

PARTE 4: Desarrollando sus propios predicados y encontrando relaciones:


Hasta ahora se supone se ha identificado ya ciertos rasgos familiares por lo que
se presenta la siguiente propuesta de rbol familiar tomando en cuenta que el lazo de
unin es:
padre:
%
Familia 1: Familia 2:
%
pablo
carlos
%
/ \
|
%
juan marcela debora
% /
\
|
% maria maura
miguel
% /
\
% luis pati
Ahora se ve necesario identificar quien es familia de quien ya que pati no es
familiar de Carlos por ejemplo, para esto se tendr que proponer el predicado
familiar( , ) de manera que la respuesta a dar tendr que ser afirmativa en los casos
necesarios por ejemplo:
familiar(maura,marcela).
Respuesta: YES
familiar(pati,juan).
Respuesta: YES
familiar(debora,Y).

Respuestas: Y=miguel Y=carlos 2 Solutions


Implementar los respectivos predicados.

Despus de completados los predicados, realice las siguientes consultas:


Consulta familiar("Marcela", "Maria")
Respuesta:
Por qu?: Porque Marcela es ta de Maria

Consulta familiar("Juan","Marcela")
Respuesta:
Por qu?: Porque Juan es hermano de Marcela

Consulta familiar("Miguel","Marcela").
Respuesta:
Por qu?: Porque Miguel no tiene ningn parentesco con Marcela

Consulta familiar("Pati","Juan").
Respuesta:
Por qu?: Porque Pati no tiene ningn parentesco con Juan

familiar("Carlos","Miguel").
Respuesta:
Por qu?: Porque Carlos es abuelo de Miguel

Cosulta familiar("Debora",Y).
Respuesta:
Por qu?: Porque Miguel es su hijo y Carlos es su padre

Consulta familiar("Pati","Marcela")
Respuesta:
Por qu?: Porque Pati es nieta de su hermano Juan

Write.
Su sintaxis es: write(`Hello world').
Las comillas simples encierran constantes, mientras que todo lo que se encuentra entre comillas dobles es tratado
como una lista. Tambin podemos mostrar el valor de una variable, siempre que est instanciada: write(X).
nl.
El predicado nl fuerza un retorno de carro(enter) en la salida. Por ejemplo: write('linea 1'), nl, write('linea 2'). tiene
como resultado:
linea 1
linea 2
fail (fallo)
Es un predicado que siempre produce fallo
Es til cuando queremos detectar casos explcitos que invalidan un predicado
Para evitar la aplicacin de una regla, se puede forzar el fallo con una combinacin del corte, y la constante fail
fail es un objetivo que nunca se satisface

You might also like