PDF de programación - Capítulo 4 - Prolog

Imágen de pdf Capítulo 4 - Prolog

Capítulo 4 - Prologgráfica de visualizaciones

Publicado el 7 de Mayo del 2021
359 visualizaciones desde el 7 de Mayo del 2021
294,3 KB
8 paginas
Creado hace 20a (30/10/2003)
PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.1 – Introducción

Escuela de Ingeniería Informática

PROLOG es un lenguaje declarativo e interpretado, en este tipo de lenguajes se
representan los conocimientos sobre un determinado dominio y sus relaciones.
A partir de ese conocimiento, se deducen las respuestas a las preguntas
planteadas, es decir se obtiene una inferencia.

El conocimiento se formaliza mediante un conjunto de relaciones que describen
de forma simultánea las propiedades y sus interacciones.
Se declara el conocimiento disponible acerca de:

OBJETOS:

propiedades
relaciones

REGLAS, que determinan interacciones lógicas del tipo: si ocurre q, r, s y t
entonces P

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.1 – Introducción

Escuela de Ingeniería Informática

Un programa Prolog está constituido por un conjunto de cláusulas de Horn. Una
cláusula de Horn tiene la forma general:

p(t1,t2,….,tn) :- p1(….),p2(….),…,pm(….) con m >= 0

Donde tanto p como las pi son símbolos predicados con sus argumentos entre
paréntesis. A los argumentos de un predicado se les denomina Términos.

Las cláusulas de Horn son expresiones condicionales, siendo el símbolo “:-” el
condicional o símbolo de la implicación (normalmente en lógica se utiliza el
símbolo “ ”) .



Así la cláusula anterior podría leerse de la siguiente forma:
“SI p1(….) Y p2(….) Y … Y pm(….) ENTONCES p(t1,t2,…,tn)”

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

1

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.1 – Introducción

Escuela de Ingeniería Informática

Cuando m=0, la cláusula no tiene parte derecha, en este caso diremos que se
trata de un hecho o afirmación.

p(t1,t2,…,tn).

Cuando la cláusula no tiene parte izquierda (o cabeza), se tiene pregunta, este
tipo de cláusulas se utilizan para realizar la entrada/salida del programa:

?p1(….),p2(….),…,pm(….)

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.2 – Cláusulas

Escuela de Ingeniería Informática

Un programa en Prolog está constituido por una secuencia de cláusulas. Estas
cláusulas deben representar todo el conocimiento necesario para resolver el
problema.

Se pueden diferenciar tres tipos de Cláusulas:

Hechos (afirmaciones), se pueden representar:

Objetos
Propiedades de objetos
Relaciones entre objetos

Reglas.
Consultas.

Cada cláusula puede estar formada por uno o varios predicados. Las
cláusulas deben terminar obligatoriamente en punto.

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

2

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.3 – Hechos

Escuela de Ingeniería Informática

Es el mecanismo básico para representar:

objetos/personas/conceptos.
propiedades de los objetos.
relaciones entre los objetos.

padre(luis).
padre_de(luis, pedro).
azul(cielo).

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.3 – Hechos

Ejemplo

Escuela de Ingeniería Informática

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

3

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.4 – Consultas

Es el mecanismo para extraer conocimiento del programa.

Escuela de Ingeniería Informática

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.4 – Consultas

Escuela de Ingeniería Informática

Por ejemplo si Vicente busca amigos/as de mis amigos que sean
millonarios/as y estén solteros/as:

Una consulta estará constituida por una o varias metas que Prolog deberá
resolver. El intérprete de Prolog nos devuelve más soluciones si utilizamos el
punto y coma “;”

Cuando no existen más soluciones que unifiquen con el objetivo, el intérprete
contesta No.

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

4

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.5 – Reglas

Escuela de Ingeniería Informática

Permiten establecer relaciones más elaboradas entre objetos, por ejemplo,
relaciones causa-efecto.

padre_de(juan, jose).
familiares(pedro, miguel).
hermanos(enrique,jose).
familiares(X, Y) :- padre_de(X, Y).
familiares(X, Y) :- padre_de(Y, X).
familiares(X, Y) :- hermanos(Y, X).
familiares(X, Y) :- hermanos(Y, X).

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.6 – Equiparación

Escuela de Ingeniería Informática

Por ejemplo, si una variable está libre y es equiparada con un valor numérico, se
obtiene una instanciación (asignación) de la variable con dicho valor.
Este mecanismo permite comprobar si dos expresiones son equivalentes,
produce como resultado una sustitución de términos cuando esta es posible.

Ejemplos:
amigos(pedro, vicente) y amigos(pedro, vicente)
son equiparables.
amigos(pedro, vicente) y amigos(X, vicente)
son equiparables. X = pedro.
amigos(pedro, Y) y amigos(X, vicente)
son equiparables. X = pedro, Y = vicente.
amigos(X, X) y amigos(pedro, vicente)
no son equiparables porque X = pedro, X = vicente no es posible.

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

5

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.7 – Desigualdad

Escuela de Ingeniería Informática

Para comprobar si dos términos son distintos, disponemos de diferentes
operadores.
Desigualdad \==
Comprueba si dos términos son distintos. Por ejemplo, si dos variables tienen
distintos valores instanciados.

Desigualdad aritmética =\=
Verifica la desigualdad numérica de dos expresiones.

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG
4.8 – Igualdad y asignación

Escuela de Ingeniería Informática

Disponemos de cuatro tipos de operadores de ‘igualdad’:
Igualdad aritmética [=:=]. Comprueba
expresiones argumento.
igual1(X, Y) :- X =:= Y.

la

igualdad numérica de

las

Identidad [==]. Comprueba si los términos argumento son idénticos.
igual2(X, Y) :- X == Y.

Unificación [ = ]. Comprueba si los términos argumento son unificables
(equiparables). Es equivalente a la asignación directa entre variables en un
lenguaje procedimental. Da fallo si la unificación no es posible.
igual3(X, Y) :- X = Y.

Una definición equivalente sería:
igual4(X,X).

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

6

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG
4.8 – Igualdad y asignación

Escuela de Ingeniería Informática

Asignación [is]. Evalúa la segunda expresión e intenta asignar el valor
obtenido a la variable. No es conmutativo
incremento(X,Y) :- Y is X+1.

Una definición similar a la de igualdad sería:
igual5(X, Y) :- X is Y.

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG
4.8 – Igualdad y asignación

Escuela de Ingeniería Informática

A continuación se muestra una tabla comparativa de todas las posibilidades
existentes.

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

7

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.9 – Operadores lógicos y aritméticos

Escuela de Ingeniería Informática

Para comprobar si dos términos son distintos, disponemos de diferentes
operadores.

Operadores y funciones aritméticas válidas en Prolog son:

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

PONTIFICIA
UNIVERSIDAD CATOLICA DE VALPARAISO

Capítulo 4 – PROLOG

4.10 – Negación

Escuela de Ingeniería Informática

Existe un predicado de negación en Prolog (not) que está implementado
como negación por fallo, esto quiere decir que se evalúa como falso
cualquier cosa que Prolog sea incapaz de verificar que su predicado
argumento es cierto.

no_nulo(X):-not(X=:=0).

saldo_cuenta(maria,1000).
saldo_cuenta(flora,3000000).
saldo_cuenta(antonio,2000000).
millonario(X) :- saldo_cuenta(X, Y), Y > 1000000.
pobre(X) :- not(millonario(X)).

Desarrollado por
Ricardo Soto De Giorgis

Escuela de Ingeniería

Informática

INF 152 – Programación en Lógica

8
  • Links de descarga
http://lwp-l.com/pdf19166

Comentarios de: Capítulo 4 - Prolog (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad