Programaci�n L�gica by 7iduUqQ

VIEWS: 28 PAGES: 14

									                   Programación Lógica

                           Universidad de Caldas
                          Estructura de Lenguajes
                            Rubén Darío García

05 de diciembre de 2011         Ing. Rubén Darío García Guzmán
                          Introducción
      • La programación declarativa se distingue de otras por que
        necesita que el programador declare los objetivos de cálculo, en
        lugar del algoritmo detallado para obtenerlos.
      • Se basa en asertos o reglas sobre los objetivos y restricciones
        de cálculo.
      • Se encuadra en los dominios de diseño de bases de datos e
        inteligencia artificial.
      • En el dominio de bases de datos está SQL, en inteligencia
        artificial se tiene Prolog.
      • Solución de problemas en forma de expresiones de lógica
        matemática, llamada Programación lógica.
      • Procesamiento de lenguaje natural, demostración de teoremas.
      • Se basa en principios de Resolución y Unificación, también tiene
        como características el no determinismo y la búsqueda en
        retroceso.
      • Un programa lógico no determinista puede tener varias
        soluciones y no solamente una sola.

05 de diciembre de 2011      Ing. Rubén Darío García Guzmán
 Lógica, predicados y cláusulas Horn
• La programación lógica se basa en lógica proposicional.
  Una proposición se forma mediante:
      – Las constantes true y false son proposiciones
      – Las variables p, q, r, …, que tienen valores true o false, son proposiciones.
      – Los operadores , , ,  y , que indican la conjunción, disyunción,
        implicación, equivalencia y negación, respectivamente, se utilizan para
        crear proposiciones más complejas.
      – Si P y Q son proposiciones, también lo son P  Q, P  Q, P  Q, P  Q y
        P.
• La negación tiene el orden de precedencia más alto,
  seguido por la conjunción, la disyunción, la implicación y la
  equivalencia.
• p  q  r  s  t  ((p  (q  r))  ((s)  t))



 05 de diciembre de 2011         Ing. Rubén Darío García Guzmán
 Lógica, predicados y cláusulas Horn
• Las proposiciones ofrecen representaciones simbólicas para los
  predicados lógicos; es decir, las instrucciones que podemos
  interpretar como true o false.
• Por ejemplo:
      –    Si p representa la proposición «María habla ruso»
      –    Si q representa la proposición «Bob habla ruso»
      –    p  q representa «María y Bob hablan ruso»
      –    p  q representa «O María o Bob hablan ruso»
      –    Si r representa «María y Bob se pueden comunicar»
      –    p  q  r representa «Si María y Bob hablan ruso, entonces pueden comunicarse»
• Las expresiones de lógica de predicados incluyen proposiciones,
  variables de varios dominios (enteros, reales, etc.), funciones con
  valores booleanos con dichas variables y cuantificadores.
• Un predicado es una proposición en la que hemos reemplazado
  algunas variables booleanas por:
      – Funciones con valores booleanos y
      – Expresiones cuantificadas.

 05 de diciembre de 2011            Ing. Rubén Darío García Guzmán
 Lógica, predicados y cláusulas Horn
• Una función con valores booleanos es una función con una o más
  variables que tienen un resultado booleano, true o false.
      – prime(n)—true si el valor entero de n es un número primo; false en otro caso.
      – 0  x+y— true si la suma real de x e y es no negativa.
      – habla(x, y)— true si la persona x habla el idioma y.
• Ejemplos de predicados serían:
      – 0  x  x  1. true si x está entre 0 y 1, ambos incluidos; en otro caso, false.
      – habla(x, Ruso)  habla(y, Ruso)  conversa(x, y), true si el hecho de que ambos x
        e y hablen ruso implica que x hable con y; en otro caso, false.
      – x(habla(x, Ruso)), true si todos los habitantes del planeta hablan ruso; en otro
        caso, false.
      – x(habla(x, Ruso)), true si al menos una persona del planeta habla ruso; en otro
        caso, false.
      – xy(habla(x, y)), true si toda persona x habla algún idioma y; en otro caso, false.
      – x(instruido(x)  (escribe(x)  y (lee(x, y)  libro(y)))), true si toda
        persona analfabeta x no ha escrito ni ha leído el libro y.



 05 de diciembre de 2011            Ing. Rubén Darío García Guzmán
        Resumen de la notación de la
           lógica de predicados.
         Notación                         Significado                                  Notas/ejemplos


 true, false              Constantes booleanas
 p,q, r, . . .            Variables booleanas
 p                       Negación de p                                    True si p es false; en otro caso false.

 pq                      Conjunción de p y q                              True si p y q son true.
 pq                      Disyunción de p y q                              True si p y q (o ambos) son true.
 pq                      Implicación: p implica q                         Lógicamente equivale a p  q.
 pq                      Equivalencia lógica de p y q                     True si p y q son true o false.
 xP(x)                   Expresión universalmente cuantificada            Se lee “Para todos los valores de x,
                                                                                P(x) es true”.
 xP(x)                   Expresión existencialmente cualificada           Se lee “hay un x para la que P(x) es
                                                                                true”.
 p es una tautología      La proposición p es siempre true                 q  q es tautología

 p(x) es válido           El predicado p(x) es cierto para todo x          Par(x)  impar(x) es válido para todo
                                                                               tipo de valor de x
05 de diciembre de 2011                   Ing. Rubén Darío García Guzmán
 Lógica, predicados y cláusulas Horn
• Los predicados que son verdaderos para alguna
  asignación en particular de valores de sus variables se
  llaman satisfacibles. Aquellos que son verdaderos para
  todas las posibles asignaciones de valores a sus variables
  se llaman válidas.
• El predicado habla(x, Ruso) se puede satisfacer (pero no
  válido) ya que es presumible que al menos una persona
  del planeta hable ruso (pero hay alguna persona que no
  habla ruso).
• El predicado y  0  n  0  z=x(y - n) se puede
  satisfacer pero no válido, ya que podemos encontrar
  diferentes selecciones de valores de x, y, z y n que hacen
  que este predicado sea true o false.
• El predicado par(y)  impar(y) es válido, ya que es true
  para todos los enteros y.
05 de diciembre de 2011   Ing. Rubén Darío García Guzmán
   Propiedades de las expresiones de
        la lógica de predicados.
Notación                   Significado                                    Notas/ejemplos

Conmutatividad             pqqp                                        pqqp

Asociatividad              (p  q)  r  p  (q  r)                      (p  q)  r  p  (q  r)

Distributividad            p  q  r  (p  q)  (p  r)                  p  q r  (p  q)  (p  r)

Idempotencia               ppp                                          ppp

Identidad                  p  p  true                                  p  p  false

de Morgan                   (p  q)  p  q                             (p  q)  p  q

Implicación                p  q  p  q



Cuantificación             xP(x) xP(x)                               xP(x) xP(x)
 05 de diciembre de 2011                 Ing. Rubén Darío García Guzmán
                          Cláusulas Horn
• Una cláusula Horn tiene una cabecera h, que es
  un predicado, y un cuerpo, que es una lista de
  predicados p1,p2,..., pn, que se escribe así:
     – hp1,p2,…,pn
• Si lo interpretamos, esto significa que h es true
  sólo si p1,p2,..., y pn son simultáneamente true.
• Por ejemplo, queremos representar la idea de que
  está nevando en alguna ciudad C sólo si hay
  precipitaciones en la ciudad C y la temperatura de
  la ciudad C es heladora:
     – nevando(C)  precipitación(C), helando(C)
     – precipitación(C)  helando(C)  nevando(C)
     – (precipitación(C)  helando(C))  nevando(C)
       precipitación(C)  helando(C)  nevando(C)
05 de diciembre de 2011      Ing. Rubén Darío García Guzmán
                          Cláusulas Horn
•         Debería estar claro que podemos escribir toda cláusula
          Horn de forma equivalente como un predicado. Pero a la
          inversa no se cumple. A continuación un método para
          hacerlo:
1.        Eliminamos las implicaciones de p, utilizando la
          propiedad de las implicaciones de la Tabla 9.2.
2.        Movemos la negación hacia el interior de p. Utilizando
          las propiedades de DeMorgan y de la cuantificación, de
          forma que sólo se nieguen términos individuales.
3.        Eliminamos los cuantificadores existenciales de p.
          utilizando una técnica llamada skolemization. Aquí
          hemos reemplazado la variable cuantificada
          existencialmente por una constante única. Por ejemplo,
          reemplazamos la expresión xP(x) por P(c), donde c es
          una constante elegida arbitrariamente en el intervalo de
          x.
05 de diciembre de 2011      Ing. Rubén Darío García Guzmán
                          Cláusulas Horn
4.        Movemos todos los cuantificadores universales al principio de
          p; mientras no haya problemas de denominación, este paso
          no cambia el significado de p. Asumiendo que todas las
          variables estén cuantificadas universalmente, podemos quitar
          los cuantificadores sin cambiar el significado del predicado.
5.        Utilizamos las propiedades distributiva, asociativa y
          conmutativa de la Tabla 9.2 para convertir p al formato normal
          conjuntivo. En este formato, los operadores conjuntivos y
          disyuntivos están anidados con un máximo de dos niveles de
          profundidad, con las conjunciones en el nivel superior.
6.        Convenimos las disyunciones incrustadas en implicaciones,
          utilizando la propiedad de la implicación. Si todas las
          implicaciones tienen un solo término a la derecha, podemos
          volver a escribirlas como una serie de cláusulas Horn
          equivalentes a la cláusula original.


05 de diciembre de 2011       Ing. Rubén Darío García Guzmán
                          Cláusulas Horn
       x(instruido(x)  (escribe(x) y(lee(x, y)  libro(y))))
       •        Aplicando el Paso 1 eliminamos la implicación, dejando
              –    x(instruido(x)  (escribe(x)  y(lee(x, y)  libro(y))))
       •        El Paso 2 mueve las negaciones de forma que estén
                adyacentes a términos individuales:
              –    x(instruido(x)  (escribe(x)  y((lee(x, y)  libro(y)))))
                   = x(instruido(x)  (escribe(x)  y(lee(x, y)  libro(y))))
       •        Como no hay cuantificadores existenciales, la
                skolemization no es necesaria. El Paso 4 mueve todos los
                cuantificadores a la izquierda y los suelta, dejando:
              –    xy (instruido(x)  (escribe(x)  (lee(x, y)  libro(y))))
                   = instruido(x)  (escribe(x)  (lee(x, y)  libro(y)))




05 de diciembre de 2011            Ing. Rubén Darío García Guzmán
                                  Cláusulas Horn
       x(instruido(x)  (escribe(x) y(lee(x, y)  libro(y))))
       •        Ahora convertimos esto a un formato normal conjuntivo
                como sigue:
              –   instruido(x)  (escribe(x)  (lee(x, y)  libro(y)))
                  = (instruido(x)  escribe(x))  ((instruido(x)  lee(x, y) 
                  libro(y))
                  = (escribe(x)  instruido(x))  (lee(x, y)  libro(y) 
                          instruido(x))
       •        Volvemos a convertir estas conjunciones en implicaciones,
              –    (escribe(x)  instruido(x))  (lee(x, y)  libro(y) 
                          instruido(x))
                          = (escribe(x)  instruido(x))  ((lee(x, y)  libro(y)) 
                          instruido(x))
                          = (escribe(x)  instruido(x))  ((lee(x, y)  libro(y))  instruido(x))
       •        que son equivalentes a las cláusulas Horn siguientes:
              –    instruido(x)  escribe(x)
                   instruido(x)  lee(x.y), libro(y)
05 de diciembre de 2011                    Ing. Rubén Darío García Guzmán
                     Resolución y Unificación
•      Al hacer una inferencia sencilla a partir de dos cláusulas se le llama resolución.
         –    h  terms
         –    t  t1,h,t2
•      podemos resolver la segunda cláusula con
         –    t  t1, terms, t2.
•      Por ejemplo:
         –    habla(Mary, Inglés)
         –      hablacon(X,Y)  habla(X,L), habla(Y,L), XY
•      La primera es una cláusula Horn con un a lista de términos vacía, así que es
       incondicionalmente true. Por tanto, la resolución permite deducir que:
         –      hablacon(Mary,Y)  habla(Mary,Inglés), habla(Y,Inglés), MaryY
•      Con la suposición de que las variables X y L tienen asignados los valores “Mary” e
       “Inglés” en la segunda regla.
•      La resolución nos ayuda a llegar a conclusiones.
•      A la asignación de valores a variables durante la resolución se le llama
       instanciación.
•      La unificación es un proceso de concordancia de patrones que determina que
       instanciación en particular podemos hacer con las variables durante el proceso de
       creación de series de resoluciones simultaneas.
•      La unificación es recurrente, así que, eventualmente encuentra todas las
       instanciaciones para las que podemos hacer resoluciones.
    05 de diciembre de 2011                Ing. Rubén Darío García Guzmán

								
To top