tema 8. introduccion al lenguaje prolog

Upload: aldito-troche-gamarra

Post on 06-Mar-2016

220 views

Category:

Documents


0 download

DESCRIPTION

Lenguaje de Inteligencia Artificial

TRANSCRIPT

  • LENGUAJES LENGUAJES

    DE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIAL

    UNIVERSDAD DE CRDOBA

    ESCUELA POLITCNICA SUPERIOR

    DEPARTAMENTO DEINFORMTICA Y ANLISIS NUMRICO

    DE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALINGENIGERA TCNICA EN INFORMTICA DE GESTIN

    INGENIERA TCNICA EN INFORMTICA DE SISTEMAS

    SEGUNDO CURSO

    PRIMER CUATRIMESTRE

    Tema 8.- Introduccin al Lenguaje Prolog

  • Primera parte: Scheme

    Tema 1.- Introduccin al Lenguaje 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

    LENGUAJES DE INTELIGENCIA ARTIFICIAL LENGUAJES DE INTELIGENCIA ARTIFICIAL PROGRAMAPROGRAMA

    2

    Tema 6.- Abstraccin de Datos

    Tema 7.- Lectura y Escritura

    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

    Segunda parte: Prolog

  • Segunda parte: Prolog

    LENGUAJES DE INTELIGENCIA ARTIFICIAL LENGUAJES DE INTELIGENCIA ARTIFICIAL PROGRAMAPROGRAMA

    Tema 8.- Introduccin al Lenguaje Prolog

    Tema 9.- Elementos Bsicos de Prolog

    Tema 10.- Listas

    3

    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

    4

    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

    5

    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?

    6

    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

    7

    Basada en los conceptos de funcin y expresinmatemtica.

    o Programacin Lgica:

    Basada en los fundamentos tericos de la lgicamatemtica.

  • 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

    8

    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

    oo Programa = Lgica + ControlPrograma = Lgica + Control

    Lgica:

    Declaracin de qu problema debe resolverse

    9

    Declaracin de qu problema debe resolverse

    Responsabilidad del programador

    Control:

    Declaracin de cmo debe resolverse el problema

    Responsabilidad del intrprete

  • 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

    11

    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

    Conceptos comunes de la programacin lgica y la programacin funcional

    o Recursin

    o Listas

    12

    o Listas

    o Lenguajes interpretados

    o Gestin automtica de memoria:

    garbage collection (recogida de basura).

  • 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

    13

    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

    Orgenes de la programacin lgica

    o Fundamentos tericos

    o Precursores

    o Desarrollo histrico

    14

    o Desarrollo histrico

  • 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

    15

    Lgica proposicional

    Lgica de predicados

    Clusulas de Horn

    Principio de resolucin (Robinson, 1965)

  • 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

    p1 p2 pn q

  • 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)

    17

    (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

  • 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

    18

    o Interpretacin modular:

    o Prolog: regla

    q :- p1, p2,, pn

    p1

    p2

    pn

    q

  • Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog

    1. Caractersticas Fundamentales de la Programacin Lgica

    Clusulas de Horn

    o Prolog: regla

    q :- p , p ,, p

    19

    q :- p1, p2,, pn .

    Cabeza Cuerpo

  • 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

    20

    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

  • 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

    21

    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.

  • 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

    22

    Predicados

    p (x) = hombre(x)= x es un hombre

    q (x) = mortal (x) = x es mortal

    x (hombre(x) mortal (x))

  • 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)

    23

    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).

  • 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

    24

    Modus Ponens:

    p q

    p

    _____

    q

    Principio de resolucin

    p q

    p

    _____

    q

  • 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

    25

    Si es un cuadrado entonces es un polgono

    Es un cuadrado

    ____________________________________

    Es un polgono

  • 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)

    Proposiciones

    p: es un cuadrado

    26

    p: es un cuadrado

    q: es un polgono

    Principio de resolucinp qp_____

    q

    Modus Ponensp qp_____

    q

  • 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 proposicional)

    p p p qPrincipio de resolucin

    27

    p1 p2 pn q p1______________________

    p2 pn q

    p1 p2 pn qp1___________________

    p2 pn q

  • 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)

    Principio de resolucin

    Modus Ponens

    28

    p(x) q(x)p(a)___________

    q(a)

    p(x) q(x)p(a)___________

    q(a)

  • 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

    29

    Scrates es un hombre

    __________________

    Scrates es mortal

  • 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

    Principio de resolucin Modus Ponens

    30

    Principio de resolucinhombre(x) mortal(x)hombre(Scrates)____________________

    mortal(Scrates)

    Modus Ponenshombre(x) mortal(x)hombre(Scrates)__________________

    mortal(Scrates)

  • 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)

    Principio de resolucin p (x) p (x) p (x) q (x)

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

    31

    p1(x) p2 (x) pn (x) q (x) p1(a)_______________________________

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

    p1(a)__________________________

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

  • 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

    o Difusin histrica

  • 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

    33

    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

  • 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

    34

    Intrprete de Prolog codificado en Algol W de Wirth

    Utiliza la interpretacin procedimental o modular de Kowalski

  • 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

    o Difusin histrica

  • 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:

    36

    Desdn inicial:

    La comunidad cientfica occidental no tuvo encuenta a la Programacin Lgica hasta principiosde los aos ochenta.

    Factor decisivo: Proyecto de Quinta Generacin de Japn (1981).

    Versin estndar: Prolog de Endimburgo

  • 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

    37

    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

    Funcionamiento bsico de Prolog

    o Bsqueda de objetivos

    o Limitaciones

    o Aplicaciones

    38

    o Aplicaciones

  • 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

    39

    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 nuevasconsultas utilizando el cuerpo de la regla.

    - 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).

    40

    hombre(socrates).

    hombre(aristoteles).

    Regla:

    mortal(X) :- hombre(X).

    Consulta

    ? mortal(socrates).

  • 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)

    41

    hombre(x) mortal(x)hombre(socrates)mortal(socrates)

    x (hombre(x) mortal(x))hombre(socrates)mortal(socrates)

  • 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)

    42

    hombre(x) mortal(x)hombre(socrates)mortal(socrates)

    mortal(X) :- hombre(X).hombre(socrates).? mortal(socrates).yes

    Principio de resolucin Prolog

  • 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).

    43

    ? 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

  • 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

    44

    Prolog considera como falso todo lo que noconoce o no puede deducir, aunque seaverdadero en la vida real.

    Ejemplo: si se consulta

    ?mortal(platon)

    la respuesta ser no

  • 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

    o Aplicaciones

  • 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

    46

    completamente puro

    Prolog establece un orden de precedencia entrereglas, que no existe en la lgica.

    Prolog slo permite la negacin en el cuerpo delas clusulas.

  • 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

    o Aplicaciones

  • 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

    48

    Representacin del conocimiento

    Problemas de bsqueda

    Planificacin

    Procesamiento del lenguaje natural: PLN

    Sistemas expertos

    Especificacin de algoritmos

    Etc.

  • 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

    49

    6. Reglas

  • 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).

    50

    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

  • 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

    51

    Laura est enamorada de Luis

    o Hechos en Prolog:

    enamorado_de(juan, maria).

    enamorado_de(maria,juan).

    enamorado_de(laura, luis).

  • Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog

    2. Hechos

    Ejemplo

    o Hecho en Prolog:

    enamorado_de(juan, maria).

    punto

    52

    predicadoargumentos

  • 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.

    o El predicado establece una relacin entre losargumentos.

    53

    o El significado de una relacin depende del orden de los argumentos.

    o Se deben utilizar identificadores descriptivos de las relaciones y los argumentos.

    o Base de datos de un programa en Prolog: conjunto de hechos y reglas que posee.

  • 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.

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

    o El nmero de argumentos de una relacin o predicado

    54

    o El nmero de argumentos de una relacin o predicado es arbitrario pero constante.

  • 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

    55

    6. Reglas

  • 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

    Ejemplo:

    o ? tiene(maria,libro).

    o Se est preguntando si Mara tiene el libro.

    punto

    56

    o 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

    o los argumentos en nmero y orden.

  • Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog

    3. Preguntas

    Ejemplo

    o Hechos

    tiene(maria, libro).

    tiene(maria, cuaderno).

    tiene(juan, cuaderno).

    57

    tiene(juan, cuaderno).

    tiene(juan, bicicleta).

    o Preguntas

    ?tiene(maria,libro).

    yes

    ?tiene(juan, libro).

    no

  • Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog

    3. Preguntas

    Ejemplo

    o Pregunta

    ?tiene(maria, bicicleta).

    no

    o Falso por defecto

    58

    o 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.

  • 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

    59

    6. Reglas

  • 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

    60

    Ejemplos

    o qu cosas tiene Juan?

    ?tiene(juan,Cosa).

    Cosa = cuaderno

    Cosa = bicicleta

    no

    Punto y coma: nueva solucin

    ;

    ;

  • 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

    ;

    Enter

    Punto y coma: nueva solucin

    61

    Persona = juan Enter

    Fin de la bsqueda

  • 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

    ;

    ;

    62

    Persona = maria, Cosa = cuaderno

    Persona = juan, Cosa = cuaderno

    Persona = juan, Cosa = bicicleta Enter

    ;

    ;

  • 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).

    63

    camino(baena, baena).

    o Qu pueblo tiene un camino circular?

    ?tiene(Pueblo,Pueblo).

    Pueblo= baena

  • 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,

    64

    Persona = maria,

    Persona = juan

    o Alguien tiene un cuaderno?

    ?tiene(_,cuaderno).

    yes

    ;Enter

  • Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog

    4. Variables

    Preguntas con variable annima

    o alguien tiene algo?

    ?tiene(_,_).

    yes

    65

    Observacin:

    o Cada aparicin de una variable annima esindependiente.

  • 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

    66

    6. Reglas

  • 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 ;

    o Conjuncin lgica: smbolo de la coma ,

    o Negacin lgica: not

    67

    o Negacin lgica: not

  • 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

    68

    Ejemplos

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

    yes

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

    no

  • 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

    o Reevaluacin o backtracking (lgica + control)

    69

    o 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)

  • 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).

    71

    enamorado_de(laura, luis).

    o 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).

    o Etc.

  • 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).

    72

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

    yes

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

    yes

  • 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

    ;

    73

    X = bicicleta

    X = libro

    X = cuaderno

    no

    ;

    ;

    ;

  • 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

    74

    Ejemplos

    o ?not(tiene(juan,cuaderno))

    no

    o ?not(tiene(juan,tijeras)).

    o yes

  • 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)

    o Precedencia intermedia: conjuncin lgica (,)

    o Mnima precedencia: disyuncin lgica (;)

    o Los parntesis controlan la precedencia.

    75

    o 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

  • 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

    76

    6. Reglas

  • Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog

    6. Reglas

    mortal(X) :- hombre(X).

    punto

    77

    Cabeza Cuerpo

  • 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.

    78

    o mortal(X) :- hombre(X)

    Las reglas permiten representar definiciones

    o buen_estudiante(Persona):-

    asiste_a_clase(Persona),

    estudia(Persona).

  • 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).

    79

    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).

  • 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).

    80

    mujer(carmen).mujer(laura).mujer(isabel).mujer(silvia).

    hombre(juan).hombre(luis).hombre(miguel).hombre(alberto).hombre(rodrigo).hombre(pedro).

  • 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).

    81

    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).

  • Lenguajes de Inteligencia Artificial Tema 8.- Introduccin al lenguaje Prolog

    6. Reglas

    Ejemplo de la familia (3/6)

    o rbol genealgico

    Pedro Silvia Luis Ana

    82

    Laura Juan Alberto Marta Alicia

    Rodrigo Carmen Isabel Miguel

  • 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),

    83

    mujer(X),padres(X,Padre,Madre),padres(Y,Padre,Madre).

  • 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),

    84

    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.

  • 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):-

    85

    ancestro(X,Y):-padres(Y,_,X).

    ancestro(X,Y):-padres(Y,Z,_),ancestro(X,Z).

    ancestro(X,Y):-padres(Y,_,Z),ancestro(X,Z).

  • 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

    86

    o Etc.

    Ejercicio de los donantes de sangre

  • UNIVERSDAD DE CRDOBA

    ESCUELA POLITCNICA SUPERIOR

    DEPARTAMENTO DEINFORMTICA Y ANLISIS NUMRICO

    LENGUAJES LENGUAJES

    DE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALDE INTELIGENCIA ARTIFICIALINGENIGERA TCNICA EN INFORMTICA DE GESTIN

    INGENIERA TCNICA EN INFORMTICA DE SISTEMAS

    SEGUNDO CURSO

    PRIMER CUATRIMESTRE

    Tema 8.- Introduccin al Lenguaje Prolog