Top Banner
David Barrera Steven Bustos Jhonatan Guzmán Programación Lógica
44

Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Oct 22, 2018

Download

Documents

trinhtuong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

• David Barrera

• Steven Bustos

• Jhonatan Guzmán

Programación Lógica

Page 2: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.
Page 3: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Programación Lógica

Programación Lógica

Reglas

axiomas

Datos

Page 4: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Relaciones vs Funciones

Funciones

Relaciones

• Determinista

• Único patrón de entradas y salidas

• No-determinista

• Patrón de entradas y salidas puede variar

Page 5: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Relaciones vs Funciones

Ejemplo:

• X < Y, la relación ‘<’ puede usarse de 4 formas

distintas

– Generador (infinito) de parejas (X ,Y) que cumpla la relación

– Predicado aplicable a parejas (X, Y)

– Generador dado X retorne todos los Y mayores a X

– Generador dado Y retorne todos los X tales que X < Y

Page 6: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Declarativa Imperativa

Programación declarativa vs imperativa

Page 7: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Programación declarativa vs imperativa

Decl

ara

tiva • A donde

llegar

• Lógica de computación

Imp

era

tiva • Como llegar

• Sentencias de instrucciones

Page 8: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Algoritmo

LógicaControlAlgoritmo

Que se debe hacer

LógicaComo encontrar la solución

Control

( R. Kowalski )

Page 9: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Lógica proposicional

Conectivas Lógicas

Proposiciones Proposiciones

Proposiciones Sentencias

Page 10: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Lógica proposicional

Page 11: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Lógica proposicional

• Semántica. dada por una tabla de verdad

Page 12: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Lógica de primer orden

Llamada también lógica de predicados.

Más expresiva que la lógica proposicional.

Se define como conjunto de términos, relaciones y funciones.

Sentencia Atómica: Un predicado, Uno o mas términos.

Hace uso de conectivas lógicas y cuantificadores.

Page 13: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Lógica de primer orden

Page 14: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Lógica de primer orden

Page 15: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Ejemplos

Ricardo y Juan son hermanos

• Hermano(Ricardo, Juan)

El padre de Ricardo está casado con la madre de Juan

• CasadoCon(Padre(Ricardo), Madre(Juan))

Todo estudiante de la Universidad Nacional es inteligente

• ∀ estudiante Estudia(estudiante,Unal) → Inteligente(estudiante)

Page 16: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Clausula de Horn

Clausula (disyunción de literales)

• Poderoso uso en programación lógica y teoría de modelos.

• Alfred Horn (1918 - 2001).

Formula lógica con a lo máximo 1 literal positivo.

Page 17: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Clausula de Horn

Programación Lógica.

• Forma de implicación.

Clasificación.

• Objetivo o consulta: Ningún literal positivo.

• Definida: Exactamente un literal positivo.

Page 18: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Clausula de Horn

Programación lógica.

Clausula definida : procedimiento.

Resolución SLD

Consecuente y antecedente.

Ejemplo:

mascota(A,B) :- domestico(A), amo(B,A).

domestico A ∧ 𝑎𝑚𝑜 𝐵, 𝐴 → 𝑚𝑎𝑠𝑐𝑜𝑡𝑎(𝐴, 𝐵)

Page 19: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Resolución SLD

Objetivo por resolver.

Seleccionar reglas.

Resolver clausulas.

Terminado.Back tracking.

Page 20: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

RecorridoEncontrar soluciones

Soluciones Parciales

Soluciones Completas

No mas “ramas” que

visitar

Backtracking

Page 21: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Solución Parcial

NO se puede seguir

Volver atrás

Solución Final

Encontrar otra

Detenerse

Backtracking

Page 22: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Backtracking

Page 23: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Ventajas

Relaciones multipropósito

No depende de la implementación

Programas sencillos, potentes y elegantes

Generación rápida de prototipos e ideas complejas

Page 24: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Desventajas

Altamente ineficiente

Pocas áreas de aplicación

Poca investigación en tecnologías complementarias

Page 25: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Prolog

proveniente del francés PROgrammation en LOGique

Producción interpretada

Usado para inteligencia artificial

Se basa en lógica de primer orden

Es declarativo

pyDatalog

Convierte Python en lenguaje lógico

Seguro para hilos

Acceso a otras librerías de Python

Lenguajes

Page 26: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

ALF

Algebraico – lógico - funcional

Multi-paradigma

Cláusulas de Horn.

Evaluación de expresiones y funciones matemáticas

Mercury

Basado en Prolog

Lenguaje de alto nivel

Puramente lógico

Declarativo

Lenguajes

Page 27: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

• Ace

• PALS

• Actor Prolog

• CLP(FD)

• CSP (Constraint Satisfaction Problem)

• Lambda Prolog

• Logtalk

Otros lenguajes derivados de Prolog

Lenguajes

Page 28: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Consideremos la siguiente imagen, representa una relación

básica de familia entre los personajes de los Simpsons.

Ejemplos

Page 29: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Representemos las características de los personajes, y

su relación, además de hacer las reglas para tíos,

abuelos, y hermanos.

Características :

Las personas son hombres o mujeres.

Ejemplos

Page 30: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Relación :

Las personas son hijos de otras personas.

Ejemplos

Page 31: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Reglas :

Ahora las reglas de abuelos, tíos y hermanos.

Ejemplos

Page 32: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Comprobemos algunas consultas.

Ejemplos

Page 33: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Fibonacci en Mercury.

Ejemplos

Page 34: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Fibonacci en Prolog.

Ejemplos

Page 35: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Inferencia de tipos

Procesamiento lenguaje natural

Comprobación de teoremas

Computación simbólica

ParsingInteligencia

Artificial

Búsqueda de patrones

Áreas de aplicación

Page 36: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

El mundo del Wumpus

Page 37: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

El mundo del Wumpus

Page 38: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

¿ Cual es la base del conocimiento ?

Para los Hoyos:

• Hi,j es verdadero si hay un hoyo en la casilla [i, j].

• Bi,j es verdadero si hay una corriente de aire (una

brisa) en la casilla [i, j].

El mundo del Wumpus

Page 39: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Y se sabe:

• R1: ¬H1,1

• R2: B1,1 ⇔ (H1,2 ∨ H2,1)

• R3: B2,1 ⇔ (H1,1 ∨ H2,2 ∨ H3,1)

• R4: ¬B1,1

• R5: B2,1

El mundo del Wumpus

Page 40: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

El mundo del Wumpus

Page 41: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Modus Ponens

Eliminación ^

Eliminación Bi-condicional

El mundo del Wumpus

Page 42: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Inferencia:

• R6: (B1,1 ⇒ (H1,2 ∨ H2,1)) ∧ ((H1,2 ∨ H2,1) ⇒ B1,1)

(Bi-condicional)

• R7: ((H1,2 ∨ H2,1) ⇒ B1,1) (Eliminación ^)

• R8: (¬B1,1 ⇒ ¬(H1,2 ∨ H2,1)) (Contraposición)

• R9: ¬(H1,2 ∨ H2,1) (Modus Ponens)

• R10: ¬H1,2 ∧ ¬H2,1

El mundo del Wumpus

Page 43: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

• Horn: – https://en.wikipedia.org/wiki/Horn_clause

• SLD:– https://en.wikipedia.org/wiki/SLD_resolution

• Programación Lógica:– http://blog.koalite.com/2013/08/que-es-la-programacion-logica/

– http://www.paradylenguajes.com.ar/rmonzon/Intro_PyL.pdf

– http://www.ecured.cu/Programaci%C3%B3n_l%C3%B3gica

– http://spivey.oriel.ox.ac.uk/wiki/files/lp/logic.pdf

• Prolog:– http://www.learnprolognow.org/lpnpage.php?pagetype=html&pageid=lpn-htmlse1

• Mercury:– http://www.mercurylang.org/information/doc-release/reference_manual.pdf

• Inteligencia artificial:– Artificial Intelligence: A Modern Approach, (Third edition) by Stuart Russell and Peter Norvig

Bibliografía

Page 44: Programación Lógica - ferestrepoca.github.ioferestrepoca.github.io/paradigmas-de-programacion/proglogica/logic... · • David Barrera • Steven Bustos • ... • Semántica.

Gracias.