Publicado el 21 de Agosto del 2018
2.288 visualizaciones desde el 21 de Agosto del 2018
815,9 KB
36 paginas
Creado hace 8a (31/10/2016)
PROGRAMACIÓN
LÓGICA
Luis Eduardo Martín De La Peña
Anni Alejandra Piragauta Urrea
CONTENIDO
1.Introducción
1. Paradigma de programación
2. Historia
3. Filosofía del paradigma.
2.Programación Lógica
1. ¿Qué es?
2. Conceptos claves
3.Ventajas y Desventajas
4.Lenguajes de Programación
5.Aplicaciones
INTRODUCCIÓN
Programación Lógica
PARADIGMA DE PROGRAMACIÓN
Indica un método mediante el cual resolver uno a
varios problemas claramente delimitados.
Representa un enfoque particular o filosofía para
diseñar soluciones.
“es el conjunto de principios subyacentes que dan
forma al estilo de un lenguaje de programación. ”
Concepts, Techniques, and Models of Computer
Programming.
Programación Lógica
Imperativo vs. Declarativo
Imperativo
Declarativo
¿Cómo resolver el
problema?
¿Qué hacer para
resolver el problema?
● Programación modular
● Programación
estructurada
● Orientada a eventos
● Funcional
● Lógica
● Programación reactiva
● Lenguajes descriptivos
Programación Lógica
HISTORIA
1930
Cálculos
Lambda
1969
1972
Finales
1970
Forma Causal
PROLOG
SLD - resolution
de la Lógica
Alain Colmerauer
Robert Kowalski
Alonzo Church
Cordell Green
Philippe Roussel
Programación Lógica
FILOSOFÍA DEL PARADIGMA
Aplicación de reglas de la lógica
para inferir conclusiones a partir de
datos.
Programación Lógica
PROGRAMACIÓN LÓGICA
Programación Lógica
¿Qué es?
Paradigma de programación basado en la lógica de primer orden.
Se puede ver como una deducción controlada.
Programa
Lógica
Control
Determina las
soluciones producidas
Formas alternativas de
ejecutar .
Lógica
Programación Lógica
Lógica Proposicional
• También llamada lógica de enunciados: toma como elemento básico las frases
declarativas simples o proposiciones.
• Proposiciones: Elementos de una frase que constituyen por sí solos una unidad de
comunicación de conocimientos y pueden ser considerados verdaderos o falsos.
• Simple: “Pepito es humano”.
• Compuesta: “Pepito es hombre y pepita es mujer”
Programación Lógica
Lógica Proposicional
Sentencia
Sentencia Atómica
Símbolo Proposicional
Sentencia Compleja
Sentencia Atómica | Sentencia Compleja
Verdadero | Falso | Símbolo Proposicional
P|Q|R|...
¬Sentencia
| (Sentencia ^ Sentencia)
| (Sentencia v Sentencia)
| (Sentencia Sentencia)
| (Sentencia Sentencia)
P
falso
falso
verdadero
verdadero
Q
falso
verdadero
falso
verdadero
¬P
verdadero
verdadero
falso
falso
P ^ Q
falso
falso
falso
verdadero
P v Q
falso
verdadero
verdadero
verdadero
P Q
P Q
verdadero
verdadero
falso
verdadero
falso
falso
verdadero
verdadero
Programación Lógica
Lógica de Primer orden
• También llamada lógica de predicados: es un sistema deductivo basado en un
Lenguaje Lógico Matemático formal.
• Incluye proposiciones lógicas, predicados y cuantificadores.
• Más expresiva de la Lógica proposicional.
• ¿Qué se afirma? (predicado o relación)
• ¿De quién se afirma? (objeto)
Programación Lógica
Lógica de Primer orden
Sentencia
Sentencia Atómica
| (Sentencia Conectiva Sentencia)
| Cuantificador Variable … Sentencia
| ¬Sentencia
Sentencia Atómica
Término
Conectiva
Cuantificador
Variable
Predicado
Función
Predicado (Término...) | Término = Término
Función(Término)
| Constante | Variable
^ |v| |
¬Sentencia
a | x | s | …
TieneColor | EstáLloviendo | ...
Hombre | Humano | Mujer | ...
Programación Lógica
Cláusulas de Horn
- Alfred Horn (1951)
Secuencia de literales que contiene a lo sumo uno de sus literales positivos (disyunción de
literales).
Cláusula ‘definite’: Cláusula de Horn con exactamente un literal positivo.
Hecho: Cláusula ‘definite’ sin literales negativos.
Cláusula objetivo: Sin ningún literal positivo. (consulta)
antecedente -> consecuente
Se escribe primero el consecuente luego el antecedente.
Programación Lógica
Cláusulas de Horn - Ejemplo
"A es hija de B si A es mujer y B es padre de A"
Programación Lógica
Resolución SLD
- Robert Kowalski (Finales 70’s)
SLD (Selective Linear Definite clause resolution) Es un método de prueba por refutación
que emplea el algoritmo de unificación como mecanismo de base y permite la extracción
de respuestas.
El antecedente puede ser una conjunción de condiciones que se denomina secuencia de
objetivos. Todos los objetivos terminan su ejecución en éxito ("verdadero"), o en fracaso
("falso").
Unificación: Cada objetivo determina un subconjunto de cláusulas susceptibles de ser
ejecutadas. Cada una de ellas se denomina punto de elección.
Programación Lógica
Backtracking
Programación Lógica
CONCEPTOS CLAVES
Hecho: Declaración, cláusula o proposición cierta o falsa, el hecho establece una relación
entre objetos y es la forma más sencilla de sentencia
“Pepito es Humano”
Programación Lógica
CONCEPTOS CLAVES
Regla: Implicación o inferencia lógica que deduce nuevo conocimiento, la regla
permite definir nuevas relaciones a partir de otras ya existentes
“x es mortal si x es humano”
Programación Lógica
CONCEPTOS CLAVES
Consulta: Se especifica el problema, la proposición a demostrar o el objetivo.
Hecho
Regla
Programación Lógica
VENTAJAS Y DESVENTAJAS
Programación Lógica
VENTAJAS
• Puede mejorarse la eficiencia modificando el
componente de control sin tener que modificar la lógica
del algoritmo.
• Relaciones multipropósito.
• Simplicidad.
• Generación rápida de prototipos e ideas complejas.
• Sencillez en la implementación de estructuras complejas.
• Potencia.
Programación Lógica
DESVENTAJAS
• Altamente ineficiente.
• Pocas áreas de aplicación
• No existen herramientas de depuración efectivas.
• En problemas reales, es poco utilizado.
• Si el programa no contiene suficiente información
para contestar una consulta responde false.
Programación Lógica
LENGUAJES DE
PROGRAMACIÓN
Programación Lógica
PROLOG
• Alain Colmerauer y Philippe Roussel (Finales
de los 70’s)
• Proviene del francés PROgrammation en
LOGique.
• Producción interpretada
•
Se basa en Lógica de primer orden
• Es declarativo
• Backtracking
Programación Lógica
Mercury
• Fergus Henderson, Thomas Conway y Zoltan
Somogyi (1995)
• Sintaxis parecida a PROLOG
• Diseñado para resolver “aplicaciones del mundo
real” de forma robusta.
• Soporta polimorfismo
• Un programa escrito en Mercury es más rápido que
uno equivalente realizado en Prolog.
Programación Lógica
OTROS LENGUAJES
• CLAC(Logical Composition with the
Assistance of Computers)
• Gödel
• Curry
• Ace
•
PALs
• Actor Prolog
• CLP (FD)
• CSP (Constraint
Satisfaction Problem)
•
•
Lambda Prolog
Logtalk
• Alma-0
Programación Lógica
EJEMPLOS - PROLOG
Programación Lógica
EJEMPLOS - PROLOG
13 .
Programación Lógica
EJEMPLOS - Mercury
:- module fib.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
:- import_module int.
:- pred fib(int::in, int::out) is det.
fib(X,Y):- (if X =< 2
then Y = 1
else fib(X - 1, Y1), fib(X - 2, Y2), Y = Y1
+ Y2
).
main(!IO) :-
fib(17,X),
io.write_string("fib(17, ", !IO),
io.write_int(X, IO),
io.write_string(")\n, !IO).
Programación Lógica
EJEMPLOS - PROLOG
Programación Lógica
APLICACIONES DEL
PARADIGMA
Programación Lógica
APLICACIONES
• Desarrollo de aplicaciones de inteligencia
artificial.
• Prueba de teoremas
• Construcción de Sistemas expertos
• Procesamiento del lenguaje natural
• Consultas lógicas basadas en reglas
• Búsquedas en bases de datos
•
Sistemas de control de voz
Programación Lógica
Análisis de lenguaje natural
Programación Lógica
REFERENCIAS
1. Programación lógica
○ http://programacion-programacionlogica.blogspot.com.co/
○ https://en.wikipedia.org/wiki/Logic_programming
○ https://www.youtube.com/watch?v=SykxWpFwMGs
2. Lógica de primer orden
○ https://drive.google.com/file/d/0B7IRdmOoUVf5RFRBN2RJdDNlNm8/view
○ https://drive.google.com/drive/u/1/folders/0B7IRdmOoUVf5V2pxal81X3NQc2M
3. PROLOG
○ http://www.anselm.edu/homepage/mmalita/culpro/index.html
○ https://es.wikipedia.org/wiki/Prolog
4. Mercury
○ https://mercurylang.org/
Programación Lógica
GRACIAS
Programación Lógica
Comentarios de: Programación Lógica (0)
No hay comentarios