330 likes | 650 Views
PROGRAMACIÓN LÓGICA. PROGRAMACIÓN LÓGICA. Programación paradigma imperativo: Función que a partir estado inicial define los valores del estado final luego de la evolución del algoritmo.
E N D
PROGRAMACIÓN LÓGICA • Programación paradigma imperativo: Función que a partir estado inicial define los valores del estado final luego de la evolución del algoritmo. • Problema intrínseco: la presencia de la asignación hace que l valor denotado de una variable sea dependiente del lugar del programa en que esta ocurre.
PROGRAMACIÓN LÓGICA • Programación paradigma lógico: Permite definir relaciones sobre ciertos dominios dados. • Se sustenta en la idea de que un programa puede ser descripto definiendo ciertas relaciones entre conjuntos de objetos, a partir de las cuales otras pueden ser calculadas empleando deducción.
PROGRAMACIÓN LÓGICA • Modo de programación no convencional • Consiste en describir el problema en si mismo • Concentrar el esfuerzo en su estructura lógica, sin pensar en como resuelve la computadora • Describir los conocimientos relevantes que una vez especificados se someten al interprete que relaciona e infiere consecuencias lógicas que de ellas se derivan. • La programación en lógica se ocupa del "que" y no del "como" .
PROGRAMACIÓN LÓGICA • Según Robert Kowalski: • En programación lógica el "como" a cargo del interprete podemos decir: Algoritmo = lógica + control Algoritmo = lógica
PROGRAMACIÓN LÓGICA • Etapas del desarrollo de una programación lógica: • Planteo del problema en lenguaje natural impreciso. • Mejorar especificación lenguaje natural preciso sin ambigüedades. • Especificación correcta en lenguaje formal y preciso. • PROLOG:(PROgramaciónin LOGic) fue desarrollado a partir de 1972 por Grupo de inteligencia artificial - Universidad de Marsella (A. Colmerauer y Ph, Roussel).
PROGRAMACIÓN LÓGICA • Programación lógico ligada a Inteligencia Artificial con numerosas aplicaciones. Ej.: • Demostración de teoremas: álgebra y geometría. • Juegos: técnicas de exploración de espacios de búsqueda . • Robótica: diseño de robots inteligentes. • Percepción visual: reconocimiento de contornos y formas. • Procesamiento del lenguaje natural: reconocimiento y expresión. • Sistemas expertos: capacidad de "aprender".
INTRODUCCIÓN A PROGRAMACIÓN EN LÓGICA • Un programa en lógica permite definir relaciones sobre ciertos dominios dados. Ej.: • Nombre = Dominio que contiene nombre de personas. PADRE (Nombre, Nombre) PADRE (josé, julieta) PADRE (josé, virginia) PADRE (juan, raquel) PADRE (julio, melina)
INTRODUCCIÓN A PROGRAMACIÓN EN LÓGICA • Según la definición el nombre en primer término, es el padre del segundo y así es posible operar: con operaciones clásicas: • restricciones (subconjuntos). • proyecciones sobre dominios para definir nuevas relaciones. • preguntas de pertenencia. • Por su aspecto relacional no se introducen "direcciones" en el sentido clásico de datos. • Por el nivel de expresión es posible pasar del lenguaje natural a una programación en lógica
INTERPRETACIÓN LÓGICA REALIDAD • Conceptos de lógica que se definen. • Mecanismos de derivación a partir de reglas de inferencias. • Unificación (realiza dicha operación en presencia de variables). concreta o matemática) modelización SISTEMA FORMAL Interpretación UNIVERSO O DOMINIOS
INTERPRETACIÓN LÓGICA O sea un demostrar automático de teoremas y toma valor cuando existen parámetros reales y producen una respuesta. O DEFINICIÓN DE TEORIA AXIOMÁTICA
SINTAXIS DE LA PROGRAMACIÓN EN LÓGICA • Proviene de la lógica de predicados de primer orden y se dispone de: • Un conjunto de elementos simples llamados átomos. • Los átomos están representados por caracteres minúsculas (Ej.: a, b, julieta, 23, etc.). • Un vocabulario V de variables (X, Y, Z). • Las variables están representadas-en mayúsculas (X, Y, Z). • Un vocabulario F de símbolos funcionales. • Los símbolos funcionales se representan en minúsculas.
SINTAXIS DE LA PROGRAMACIÓN EN LÓGICA • Un vocabulario P de símbolos predicativos. • Los símbolos predicativos en mayúsculas (Ej.: PADRE (josé, julieta). • Cualquier predicado puede negarse -PADRE (josé, julieta), • Un conjunto de conectivos. • . • Un conjunto de cuantificadores. • X cuantificador universal (para todo X). • X cuantificador existencial (existe un X)
SINTAXIS DE LA PROGRAMACIÓN EN LÓGICA Se convienen las siguientes definiciones: • Término: una constante (átomo), variable o función cuyos argumentos son también términos. • Predicado: símbolo de predicado, antepuesto a uno o más términos separados por comas y encerrados entre paréntesis Ej.: • Fórmula: expresión que puede contener uno o más predicados junto con conectivos y cuantificadores. • Regla o sentencia: es una fórmula con sus variables ligadas.
SINTAXIS DE LA PROGRAMACIÓN EN LÓGICA • El conjunto de sentencias que pueden construirse usando definiciones anteriores constituye un lenguaje en lógica de primer orden. • Primer orden: no admite cuantificación sobre los predicados y funciones.
SINTAXIS DE LA PROGRAMACIÓN EN LÓGICA Ej.: • Se interpreta: juana compró un libro y un cuaderno. • Se interpreta: Si llueve carlós no va al cine. • significa: que el predicado P se satisface para todo x. • significa: existe al menos un x el cual satisface P.
SINTAXIS DE LA PROGRAMACIÓN EN LÓGICA • Cuando una variable está bajo el alcance de un cuantificador, se dice ligada a él; caso contrario es libre. • Símbolo funcional muy especial y denotado por "." permite definir expresiones simbólicas (árboles binarios). • Ej.:
SINTAXIS DE LA PROGRAMACIÓN EN LÓGICA • Visualizado como árboles tendría la siguiente representación: • Para la definición recursiva de árboles es necesario considerar el nulo [ ] o "NIL". . . . . . a r . . y b c . x f a p
SEMÁNTICA DE LA PROGRAMACIÓN EN LÓGICA • Interpretación: Sea R un programa en lógica con sus vocabulario V de átomos, F de símbolos funcionales y P de significado predicativos Sea D un conjunto (dominio) dado. Una interpretación I (D) sobre el programa R asigna a cada elemento de V, F, Y P los correspondientes elementos de D. • Satisfacción lógica: Una interpretación I (D) satisface a una fórmula, si su aplicación resulta verdadera.
SEMÁNTICA DE LA PROGRAMACIÓN EN LÓGICA • Consecuencia lógica o deducción:Una fórmula f es consecuencia lógica o se deduce, de un conjunto de fórmulas R, si todo dominio D, toda interpretación I (D) que satisface a R, satisface también a f. Permite determinar la forma en que los programas son evaluados. • Inferencia lógica: Conjunto inicial de fórmulas son sentencia válidas y se las llama axiomas. Los axiomas junto a las reglas de inferencia constituyen sistemas de formas. Elemento de derivación sintáctica que a partir de conjunto de fórmulas permite derivar nuevas fórmulas.
SEMÁNTICA DE LA PROGRAMACIÓN EN LÓGICA • Regla básica de inferencias: De las fórmulas se puede inferir B-. Un paso de inferencia corresponde a la aplicación de una regla para inferir una nueva fórmula. • Demostración: Será sucesión de F1, F2, ....Fnde fórmulas del lenguaje. FI es axioma o de obtiene de fórmulas anteriores por aplicar una regla de inferencia. • Teorema: Una fórmula F es un teorema si existe una demostración en la que F es el último término de la sucesión.
SEMÁNTICA DE LA PROGRAMACIÓN EN LÓGICA • Deducción lógica: Sea F una fórmula y R un conjunto de fórmulas. Se dice que F es lógicamente deducible lógicamente a partir de R. Si existe una sucesión de fórmulas tal que y cada es: • Un axioma. • O una fórmula de R. • O deducible de una fórmula precedente de la sucesión. Las fórmulas de R se llaman hipótesis. • Consistencia: Un sistema formal en el que exista el símbolo de negación se dice que es consistente si no existe una fórmula F en el sistema tal que pueda deducirse .
SEMÁNTICA DE LA PROGRAMACIÓN EN LÓGICA • Completitud: Sea P un programa en lógica y • Regla de resolución: Sean y símbolos predicativos, la regla provee:
SEMÁNTICA DE LA PROGRAMACIÓN EN LÓGICA La aplicación de la regla induce una nueva cláusula producto de la cancelación del predicado Ak. Casos particulares de la regla: • Teorema: La regla de resolución es completa. • Teorema: Prueba por contradicción o reducción al absurdo Sea F una fórmula y R un conjunto de fórmulas, F es deducible lógicamente a partir de R si el conjunto formado por R con los es inconsistente:
SEMÁNTICA DE LA PROGRAMACIÓN EN LÓGICA • Cláusulas de Horn: Pueden tener como máximo una conclusión y en las cuales pueden re expresarse cualquier cláusula de forma general. Pueden adoptar las siguientes formas: (Implicaciones) (Afirmaciones) (Negaciones) • Cuando una implicación no tiene antecedente (condición) se denomina afirmación. (nada condiciona al consecuente). • Si no tiene consecuente (conclusión) es en realidad una negación. • Una cláusula sin antecedente ni consecuente es vacía [ ] y representa una contradicción. • Regla genérica, si el predicado Al, A2,…, son ciertos implican B es una regla o sentencia.
SEMÁNTICA DE LA PROGRAMACIÓN EN LÓGICA • Sustitución: Es un conjunto de asignaciones de tipo donde X es una variable y t un término. No puede existir más de una asignación. Ej.: {X := juan, Y := maría} • Aplicaciones de sustitución: Dada una sustitución x y un predicado P, a aplicación de x a P produce un nuevo predicado Px y que corresponde al predicado inicial P, donde toda variable asignada en x es cambiada por el término correspondiente. • Unificador: Dada dos expresiones del lenguaje, Ej.: predicados P1 y P2, se llama unificadora una sustitución x que cumple: Elx = E2x en la aplicación de la sustitución da la misma expresión.
PROGRAMAS LÓGICOS • Un programa lógico es un conjunto de sentencia o cláusulas. (hecho)(cláu. Horn - afirmación incondicional) (regla) (afirmación condicionada) • El conjunto de todas las cláusulas que tienen como cabeza el mismo predicado, constituye su definición. B se denomina "cabeza" y los antecedentes "cuerpo"
PROGRAMAS LÓGICOS • Otra clausula que interesa es la denominada "clausula objetivo" o "goal". • Los compiladores de lenguajes lógicos son interpretes capaces de llevar a cabo el proceso de inferencia con el fin de que los programas lógicos se ejecuten. • Cada alternativa de respuesta da lugar a una ramificación adicional que deberá ser explorada para obtener todas las soluciones alternativas al problema.
PROGRAMAS LÓGICOS • Recursividad: Un algoritmo es recursivo si está definido en términos de si mismo. En un algoritmo recursivo se re ejecuta la totalidad del algoritmo desde el principio. Casos característicos de recursividad: • Reglas que tienen como antecedente el mismo predicado que en la cabeza. • En términos (objetos) compuestos que tienen como argumento a los mismo términos.