Tema 8. Introduccion Al Lenguaje Prolog

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 87

UNIVERSDAD DE CRDOBA

ESCUELA POLITCNICA SUPERIOR


DEPARTAMENTO DE
INFORMTICA Y ANLISIS NUMRICO

LENGUAJES
DE INTELIGENCIA ARTIFICIAL
INGENIGERA TCNICA EN INFORMTICA DE GESTIN
INGENIERA TCNICA EN INFORMTICA DE SISTEMAS
SEGUNDO CURSO
PRIMER CUATRIMESTRE

Tema 8.- Introduccin al Lenguaje Prolog

LENGUAJES DE INTELIGENCIA ARTIFICIAL

PROGRAMA

Tema 1.- Introduccin al Lenguaje Scheme

Primera
parte:
Scheme

Tema 2.- Expresiones y Funciones


Tema 3.- Predicados y sentencias condicionales
Tema 4.- Iteracin y Recursin
Tema 5.- Tipos de Datos Compuestos
Tema 6.- Abstraccin de Datos
Tema 7.- Lectura y Escritura
Tema 8.- Introduccin al Lenguaje Prolog

Tema 9.- Elementos Bsicos de Prolog


Segunda
parte: Prolog Tema 10.- Listas
Tema 11.- Reevaluacin y el corte
Tema 12.- Entrada y Salida

LENGUAJES DE INTELIGENCIA ARTIFICIAL

PROGRAMA

Segunda parte: Prolog

Tema 8.- Introduccin al Lenguaje Prolog


Tema 9.- Elementos Bsicos de Prolog
Tema 10.- Listas
Tema 11.- Reevaluacin y el corte
Tema 12.- Entrada y Salida

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica
2. Hechos
3. Preguntas
4. Variables
5. Conjuncin, disyuncin y negacin
6. Reglas

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Programacin declarativa

Programacin lgica

Conceptos comunes de la programacin lgica y la


programacin funcional

Orgenes de la programacin lgica

Funcionamiento bsico de Prolog

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Programacin declarativa
o Su prioridad es responder a la siguiente pregunta
Qu problema hay que resolver?
o No se preocupa de
Cmo hay que resolver el problema?

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Tipos de programacin declarativa

o Programacin funcional:
 Basada en los conceptos de funcin y expresin
matemtica.

o Programacin Lgica:
 Basada en los fundamentos tericos de la lgica
matemtica.
7

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Programacin declarativa

Programacin lgica

Conceptos comunes de la programacin lgica y la


programacin funcional

Orgenes de la programacin lgica

Funcionamiento bsico de Prolog

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Programacin lgica
o Programa = Lgica + Control
 Lgica:


Declaracin de qu problema debe resolverse

Responsabilidad del programador

 Control:


Declaracin de cmo debe resolverse el


problema

Responsabilidad del intrprete


9

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Programacin Lgica
o Hecho: cosa que sucede.
o Regla: relacin entre hechos.

10

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Programacin declarativa

Programacin lgica

Conceptos comunes de la programacin lgica y la


programacin funcional

Orgenes de la programacin lgica

Funcionamiento bsico de Prolog

11

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Conceptos comunes de la programacin lgica y la


programacin funcional
o Recursin
o Listas
o Lenguajes interpretados
o Gestin automtica de memoria:
 garbage collection (recogida de basura).

12

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Programacin declarativa

Programacin lgica

Conceptos comunes de la programacin lgica y la


programacin funcional

Orgenes de la programacin lgica

Funcionamiento bsico de Prolog

13

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Orgenes de la programacin lgica


o Fundamentos tericos
o Precursores
o Desarrollo histrico

14

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Orgenes de la programacin lgica


o Fundamentos tericos:
 Lgica matemtica


Lgica proposicional

Lgica de predicados

 Clusulas de Horn
 Principio de resolucin (Robinson, 1965)

15

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Clusulas de Horn:
o

Disyuncin de literales negados, excepto uno:


p1 p2 pn q

16

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Clusulas de Horn:
o Interpretacin
p1 p2 pn q
(aplicando la Ley de Morgan)
(p1 p2 pn ) q
(aplicando la equivalencia de la conectiva )
p1 p2 pn  q
significa que
Si se verifican p1, p2, y pn entonces se verifica q
17

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Clusulas de Horn
o q se verifica si se verifican p1, p2, y pn
p1
o Interpretacin modular: q

p2

o Prolog: regla

pn

q :- p1, p2,, pn
18

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Clusulas de Horn
o Prolog: regla
q :- p1, p2,, pn .

Cabeza

Cuerpo

19

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Clusulas de Horn:
o

Ejemplo 1
Si la figura posee cuatro lados iguales y cuatro ngulos
iguales entonces la figura es un cuadrado
 Variables proposicionales
p1 = la figura posee cuatro lados iguales
p2 = la figura posee cuatro ngulos iguales
q = la figura es un cuadrado
 Lgica proposicional: p1 p2  q

20

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Clusulas de Horn:
o

Ejemplo 1 (continuacin)
 Significado


Si se verifican p1 y p2 entonces se verifica q

q se verifica si se verifican p1 y p2

 Lgica proposicional:


p1 p2  q (p1 p2 ) q p1 p2 q

Clusula de Horn: p1 p2 q

 Prolog: q :- p1, p2.


21

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Clusulas de Horn:
o

Ejemplo 2
Todos los hombres son mortales
 Predicados
p (x) = hombre(x)= x es un hombre
q (x) = mortal (x) = x es mortal
 x (hombre(x)  mortal (x))

22

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin Lgica

Clusulas de Horn:
o

Ejemplo 2 (continuacin)
 Significado


si se verifica hombre (x) entonces se verifica mortal (x)

mortal (x) si se verifica hombre (x)

 Lgica de predicados


x (hombre(x)  mortal (x))

hombre(x)  mortal (x)

Clusula de Horn: hombre (x) mortal (x)

 Prolog: mortal (x) :- hombre (x).


23

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Principio de resolucin (Robinson, 1965):


o

Caso bsico (lgica proposicional)

 Modus Ponens:

 Principio de resolucin

pq

p q

_____

_____

24

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Principio de resolucin (Robinson, 1965):


o

Caso bsico (lgica proposicional): ejemplo

Si es un cuadrado entonces es un polgono


Es un cuadrado
____________________________________
Es un polgono

25

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Principio de resolucin (Robinson, 1965):


Caso bsico (lgica proposicional)

 Proposiciones


p: es un cuadrado

q: es un polgono

 Modus Ponens

 Principio de resolucin

pq

p q

_____

_____

26

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica
Principio de resolucin (Robinson, 1965):

Caso general (lgica proposicional)


Principio de resolucin

p1 p2 pn  q

p1 p2 pn q

p1

p1

___________________

______________________

p2 pn  q

p2 pn q

27

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Principio de resolucin (Robinson, 1965):


o

Caso bsico (lgica de predicados)

 Modus Ponens

 Principio de resolucin

p(x)  q(x)

p(x) q(x)

p(a)

p(a)

___________

___________

q(a)

q(a)

28

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Principio de resolucin (Robinson, 1965):


o

Caso bsico (lgica de predicados): ejemplo


Todos los hombres son mortales
Scrates es un hombre
__________________
Scrates es mortal

29

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Principio de resolucin (Robinson, 1965):


o

Caso bsico (lgica de predicados): ejemplo

 Modus Ponens

 Principio de resolucin

hombre(x)  mortal(x)

hombre(x) mortal(x)

hombre(Scrates)

hombre(Scrates)

__________________

____________________

mortal(Scrates)

mortal(Scrates)

30

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Principio de resolucin (Robinson, 1965):


o

Caso general (lgica de predicados)

p1(x) p2 (x)
pn (x)  q(x)

Principio de resolucin

p1(a)

p1(x) p2 (x) pn (x)


q (x)

__________________________

p1(a)

p2 (a)
pn (a)  q(a)

_______________________________
p2 (a) pn (a)
q (a)

31

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Orgenes de la programacin lgica


o Fundamentos tericos
o Precursores
o Difusin histrica

32

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Orgenes de la programacin lgica


o

Precursores
 Kowalski (Universidad de Edimburgo): 1972


Fundamentos tericos: clusulas de Horn y


principio de resolucin

 Maarten Van Emden (Universidad de Edimburgo):




Demostracin experimental

 Alain Colmerauer (Universidad de Marsella)




Implementacin: Programmation en Logique,


Prolog
33

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Orgenes de la programacin lgica


o

Precursores
 Alain Colmerauer (Universidad de Marsella)


Intrprete de Prolog codificado en Algol W de


Wirth

Utiliza la interpretacin procedimental o


modular de Kowalski

34

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Orgenes de la programacin lgica


o Fundamentos tericos
o Precursores
o Difusin histrica

35

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin Lgica

Orgenes de la programacin lgica


o

Difusin histrica
 Prolog-10 (Warren, aos setenta)


Compilador escrito casi completamente en Prolog.

 Desdn inicial:


La comunidad cientfica occidental no tuvo en


cuenta a la Programacin Lgica hasta principios
de los aos ochenta.

 Factor decisivo: Proyecto de Quinta Generacin de


Japn (1981).
 Versin estndar: Prolog de Endimburgo
36

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Programacin declarativa

Programacin lgica

Conceptos comunes de la programacin lgica y la


programacin funcional

Orgenes de la programacin lgica

Funcionamiento bsico de Prolog

37

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Funcionamiento bsico de Prolog


o Bsqueda de objetivos
o Limitaciones
o Aplicaciones

38

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Funcionamiento bsico de Prolog:


o Bsqueda de objetivos
 Programa: conjunto de hechos y reglas
 Se realiza una consulta


Si la consulta coincide con un hecho entonces el


objetivo se ha conseguido.

En caso contrario, se comprueba si la consulta es


la cabeza de una regla
-

Si es as entonces se generan nuevas


consultas utilizando el cuerpo de la regla.

39
En caso contrario, el objetivo no se consigue.

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Funcionamiento bsico de Prolog:


o Bsqueda de objetivos: ejemplo1
 Hechos:
hombre(socrates).
hombre(aristoteles).
 Regla:
mortal(X) :- hombre(X).
 Consulta
? mortal(socrates).
40

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Funcionamiento bsico de Prolog:


o Bsqueda de objetivos: ejemplo1
 Equivalencia con la lgica de predicados (1/2)

x (hombre(x)  mortal(x))

hombre(x)  mortal(x)

hombre(socrates)

hombre(socrates)

mortal(socrates)

mortal(socrates)

41

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Funcionamiento bsico de Prolog:


o Bsqueda de objetivos: ejemplo1
 Equivalencia con la lgica de predicados (2/2)
Prolog

Principio de resolucin
hombre(x) mortal(x)

mortal(X) :- hombre(X).

hombre(socrates)

hombre(socrates).

mortal(socrates)

? mortal(socrates).
yes
42

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Funcionamiento bsico de Prolog:


o Bsqueda de objetivos: ejemplo 1
 Consulta
? mortal(socrates).
1. No existe el hecho mortal (socrates)
2. La consulta es la cabeza de la regla
mortal(X) :- hombre(X)
3. Se genera una nueva consulta: hombre(socrates)
4.

hombre(socrates) es un hecho del programa.

5. Respuesta: s

43

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Funcionamiento bsico de Prolog:


o Bsqueda de objetivos
 Observacin:


Prolog considera como falso todo lo que no


conoce o no puede deducir, aunque sea
verdadero en la vida real.

Ejemplo: si se consulta
?mortal(platon)
la respuesta ser no
44

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Funcionamiento bsico de Prolog


o Bsqueda de objetivos
o Limitaciones
o Aplicaciones

45

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Funcionamiento bsico de Prolog:


o Limitaciones
 Prolog no es un lenguaje de programacin lgica
completamente puro


Prolog establece un orden de precedencia entre


reglas, que no existe en la lgica.

Prolog slo permite la negacin en el cuerpo de


las clusulas.

46

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Funcionamiento bsico de Prolog


o Bsqueda de objetivos
o Limitaciones
o Aplicaciones

47

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin


Lgica

Funcionamiento bsico de Prolog:


o Aplicaciones
 Demostracin de teoremas
 Representacin del conocimiento
 Problemas de bsqueda
 Planificacin
 Procesamiento del lenguaje natural: PLN
 Sistemas expertos
 Especificacin de algoritmos
 Etc.

48

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin Lgica


2. Hechos
3. Preguntas
4. Variables
5. Conjuncin, disyuncin y negacin
6. Reglas

49

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

2. Hechos

Ejemplos
o

Hechos:
 hombre(socrates).

sexo(socrates, masculino).

 padre_de(juan, luis).
 tiene(antonio, bicicleta).
 da(laura,libro,maria).
o

Significados de los hechos:


 Scrates es un hombre
 El padre de Juan es Luis
 Antonio tiene una bicicleta
 Laura da un libro a Mara
50

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

2. Hechos

Ejemplos
o

Hechos:
 Juan est enamorado de Mara
 Mara est enamorada de Juan
 Laura est enamorada de Luis

Hechos en Prolog:
 enamorado_de(juan, maria).
 enamorado_de(maria,juan).
 enamorado_de(laura, luis).
51

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

2. Hechos

Ejemplo
o

punto

Hecho en Prolog:

enamorado_de(juan, maria).

predicado

argumentos

52

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

2. Hechos

Semntica
o

Cada hecho posee un significado arbitrario, pero debe


permanecer invariable una vez que ha sido establecido.

El predicado
argumentos.

El significado de una relacin depende del orden de los


argumentos.

Se deben utilizar identificadores descriptivos de las


relaciones y los argumentos.

Base de datos de un programa en Prolog: conjunto de


hechos y reglas que posee.

establece

una

relacin

entre

los

53

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

2. Hechos

Sintaxis
o

Los nombres de los predicados y los tomos comienzan


por una letra minscula.

Se tiene que poner un punto . al final del hecho.

El nmero de argumentos de una relacin o predicado


es arbitrario pero constante.

54

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin Lgica


2. Hechos
3. Preguntas
4. Variables
5. Conjuncin, disyuncin y negacin
6. Reglas

55

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

3. Preguntas

Se pueden realizar preguntas a la base de datos de un


programa de Prolog
punto
Ejemplo:
o

? tiene(maria,libro).

Se est preguntando si Mara tiene el libro.

Prolog busca en su base de datos, compuesta por hechos (y


reglas), si contiene el hecho
tiene(maria,libro).

Es necesario que coincidan


o

el nombre del predicado o relacin

los argumentos en nmero y orden.

56

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

3. Preguntas

Ejemplo
o

Hechos
 tiene(maria, libro).
 tiene(maria, cuaderno).
 tiene(juan, cuaderno).
 tiene(juan, bicicleta).

Preguntas
 ?tiene(maria,libro).
yes
 ?tiene(juan, libro).
no

57

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

3. Preguntas

Ejemplo
o

Pregunta
 ?tiene(maria, bicicleta).
no

Falso por defecto


 Prolog responde no porque no hay ningn hecho
que coincida con la pregunta (o regla que permita
deducir ese hecho).
 Se recuerda que Prolog considera falso todo lo que
no conoce.
58

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin Lgica


2. Hechos
3. Preguntas
4. Variables
5. Conjuncin, disyuncin y negacin
6. Reglas

59

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

4. Variables

Las variables permiten hacer preguntas ms verstiles

Primer carcter de una variable:

letra mayscula

Subrayado _

Ejemplos
o

qu cosas tiene Juan?


Punto y coma:
nueva solucin

 ?tiene(juan,Cosa).
Cosa = cuaderno

Cosa = bicicleta

no
60

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

4. Variables

Ejemplos
o

quin tiene un cuaderno?


 ?tiene(Persona,cuaderno).
Persona = maria
Persona = juan

Punto y coma:
nueva solucin

;
Enter
Fin de la bsqueda

61

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

4. Variables

Preguntas con dos variables


o

qu cosas tiene cada persona?


 ?tiene(Persona,Cosa).
Persona = maria, Cosa = libro

Persona = maria, Cosa = cuaderno

Persona = juan, Cosa = cuaderno

Persona = juan, Cosa = bicicleta

Enter

62

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

4. Variables

Preguntas con una variable repetida.


o

Hechos
camino(baena,luque).
camino(luque,zuheros).
camino(baena, baena).

Qu pueblo tiene un camino circular?


 ?tiene(Pueblo,Pueblo).
Pueblo= baena
63

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

4. Variables

Variable annima: smbolo de subrayado _

Preguntas con variable annima


o

quin tiene algo?


 ?tiene(Persona,_).
Persona = maria,
Persona = juan

;
Enter

Alguien tiene un cuaderno?


 ?tiene(_,cuaderno).
yes
64

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

4. Variables

Preguntas con variable annima


o

alguien tiene algo?


 ?tiene(_,_).
yes

Observacin:
o

Cada aparicin
independiente.

de

una

variable

annima

es

65

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin Lgica


2. Hechos
3. Preguntas
4. Variables
5. Conjuncin, disyuncin y negacin
6. Reglas

66

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

Se pueden hacer preguntas ms completas si se utilizan


los operadores lgicos
o

Disyuncin lgica: smbolo de punto y coma ;

Conjuncin lgica: smbolo de la coma ,

Negacin lgica: not

67

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

Conjuncin lgica
o

La respuesta ser verdadera si ambas respuestas son


verdaderas

Ejemplos
o

? tiene(maria,libro) , tiene(juan,cuaderno).
yes

? tiene(maria,bicicleta) , tiene(juan,cuaderno).
no

68

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

Conjuncin lgica
o

Qu cosa tienen en comn Mara y Juan?


? tiene(maria,X) , tiene(juan,X).
X = cuaderno

Reevaluacin o backtracking (lgica + control)


 Fase 1: X toma el valor de libro
 Fase 2: no se verifica tiene(juan,libro)
 Fase 3: X toma el valor de cuaderno
 Fase 4: se verifica el hecho tiene(juan,cuaderno)
69

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

Conjuncin lgica
o

Tiene algo Mara y tiene algo Juan?


? tiene(maria,_) , tiene(juan,_).
yes

70

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

Conjuncin lgica
o

Hechos:
 enamorado_de(juan, maria).
 enamorado_de(maria,juan).
 enamorado_de(laura, luis).

Estn Juan y Mara enamorados?

? enamorado_de (juan,maria), enamorado_de(maria,juan).


o

Es correspondido el amor de Laura?


? enamorado_de(laura,X), enamorado_de(X,laura).

Etc.
71

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

Disyuncin lgica
o

La respuesta ser verdadera si alguna de las respuestas


es verdadera.

Ejemplos
o

? tiene(maria,libro) ; tiene(juan,cuaderno).
yes

? tiene(maria,bicicleta) ; tiene(juan,cuaderno).
yes

72

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

Ejemplos
o

Qu cosas tienen Juan o Mara?


?tiene(juan,X) ; tiene(maria,X).
X = cuaderno
X = bicicleta
X = libro
X = cuaderno

;
;
;
;

no

73

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

Negacin lgica
o

La respuesta ser verdadera si la respuesta original es


falsa.

Ejemplos
o

?not(tiene(juan,cuaderno))
no

?not(tiene(juan,tijeras)).

yes

74

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

5. Conjunciones, disyunciones y negaciones

Precedencia de los operadores lgicos


o

Mxima precedencia: negacin lgica (not)

Precedencia intermedia: conjuncin lgica (,)

Mnima precedencia: disyuncin lgica (;)

Los parntesis controlan la precedencia.

Ejemplos

?tiene(juan,cuaderno);tiene(maria,rotulador), not(tiene(juan,bicicleta)).
Yes

?(tiene(juan,cuaderno);tiene(maria,rotulador)),not(tiene(juan,bicicleta)).
no

75

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

1. Caractersticas Fundamentales de la Programacin Lgica


2. Hechos
3. Preguntas
4. Variables
5. Conjuncin, disyuncin y negacin
6. Reglas

76

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

6. Reglas
punto
mortal(X) :- hombre(X).

Cabeza

Cuerpo

77

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

6. Reglas

Las reglas evitan indicar hechos que se pueden deducir a


partir de otros.

Las reglas permiten representar dependencias entre


hechos.
o

mortal(X) :- hombre(X)

Las reglas permiten representar definiciones


o

buen_estudiante(Persona):asiste_a_clase(Persona),
estudia(Persona).
78

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

6. Reglas

Reglas recursivas

Ejemplo de las conexiones por carretera


carretera(cordoba,granada).
carretera(cordoba,jaen).
carretera(cordoba,malaga).
carretera(cordoba,sevilla).
carretera(sevilla, cadiz).
carretera(sevilla, huelva).
carretera(sevilla, malaga).
conectado(Origen,Destino):- carretera(Origen, Destino).
conectado(Origen,Destino):carretera(Origen,Intermedio),
conectado(Intermedio,Destino).

79

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

6. Reglas

Reglas recursivas

Ejemplo de la familia (1/6)


mujer(ana).
mujer(marta).
mujer(alicia).
mujer(carmen).
mujer(laura).
mujer(isabel).
mujer(silvia).
hombre(juan).
hombre(luis).
hombre(miguel).
hombre(alberto).
hombre(rodrigo).
hombre(pedro).

80

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

6. Reglas

Ejemplo de la familia (2/6)


/* padres(Persona, Padre, Madre). */
padres(juan,luis,ana).
padres(alberto,luis,ana).
padres(marta,luis,ana).
padres(alicia,luis,ana).
padres(rodrigo,juan,laura).
padres(carmen,juan,laura).
padres(isabel,juan,laura).
padres(miguel,juan,laura).
padres(laura,pedro,silvia).
81

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

6. Reglas

Ejemplo de la familia (3/6)


o rbol genealgico
Pedro

Silvia

Laura

Luis

Ana

Juan Alberto Marta

Alicia

Rodrigo Carmen Isabel Miguel


82

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

6. Reglas

Ejemplo de la familia (4/6)


/* X es hermana de Y */
hermana(X,Y):mujer(X),
padres(X,Padre,Madre),
padres(Y,Padre,Madre).

83

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

6. Reglas

Ejemplo de la familia (5/6)


/* X es hermana de Y */
hermana(X,Y):mujer(X),
padres(X,P,M),
padres(Y,P,M).
/* X es hermana de Y */
hermana_verdadera(X,Y):mujer(X),
padres(X,P,M),
padres(Y,P,M),
X \= Y.

84

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

6. Reglas

Ejemplo de la familia (6/6)


/* X es un ancestro de Y */
ancestro(X,Y):padres(Y,X,_).
ancestro(X,Y):padres(Y,_,X).
ancestro(X,Y):padres(Y,Z,_),
ancestro(X,Z).
ancestro(X,Y):padres(Y,_,Z),
ancestro(X,Z).

85

Lenguajes de Inteligencia Artificial

Tema 8.- Introduccin al lenguaje Prolog

6. Reglas

Ejercicios sobre la familia


o Abuelo/a
o Nieto/a
o Primos/as
o Etc.

Ejercicio de los donantes de sangre

86

UNIVERSDAD DE CRDOBA
ESCUELA POLITCNICA SUPERIOR
DEPARTAMENTO DE
INFORMTICA Y ANLISIS NUMRICO

LENGUAJES
DE INTELIGENCIA ARTIFICIAL
INGENIGERA TCNICA EN INFORMTICA DE GESTIN
INGENIERA TCNICA EN INFORMTICA DE SISTEMAS
SEGUNDO CURSO
PRIMER CUATRIMESTRE

Tema 8.- Introduccin al Lenguaje Prolog

También podría gustarte