0% encontró este documento útil (0 votos)
116 vistas4 páginas

Programación Lógica PDF

La programación lógica es un paradigma de programación declarativa basado en la lógica matemática. Permite formalizar hechos y reglas para resolver problemas mediante la verificación de hipótesis. Lenguajes como Prolog permiten definir programas lógicos y responder preguntas sobre ellos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
116 vistas4 páginas

Programación Lógica PDF

La programación lógica es un paradigma de programación declarativa basado en la lógica matemática. Permite formalizar hechos y reglas para resolver problemas mediante la verificación de hipótesis. Lenguajes como Prolog permiten definir programas lógicos y responder preguntas sobre ellos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Programación lógica

La programación lógica es un tipo de paradigmas de programación dentro del paradigma de programación declarativa. El resto de
los subparadigmas de programación dentro de la programación declarativa son: programación funcional, programación con
restricciones, programas DSL (de dominio específico) e híbridos. La programación funcional se basa en el concepto de función (que
no es más que una evolución de los predicados), de corte más matemático. La programación lógica gira en torno al concepto de
predicado, o relación entre elementos.

Índice
Motivación
Campos de aplicación
Fundamentos
Conceptos
Solución del Problema
En qué consiste (ejemplo)
Lenguajes
Bibliografía
Véase también
Enlaces externos

Motivación
Históricamente, los ordenadores se han programado utilizando lenguajes muy cercanos a las peculiaridades de la propia máquina:
operaciones aritméticas simples, instrucciones de acceso a memoria, etc. Un programa escrito de esta manera puede ocultar
totalmente su propósito a la comprensión de un ser humano, incluso uno entrenado. Hoy día, estos lenguajes pertenecientes al
paradigma de la Programación imperativahan evolucionado de manera que ya no son tan crípticos.

En cambio, la lógica matemática es la manera más sencilla, para el intelecto humano, de expresar formalmente problemas complejos
y de resolverlos mediante la aplicación de reglas, hipótesis y teoremas. De ahí que el concepto de "programación lógica" resulte
atractivo en diversos campos donde la programación tradicional es un fracaso.

Campos de aplicación
La programación lógica encuentra suhábitat natural en aplicaciones de inteligencia artificial o relacionadas:

Sistemas expertos, donde un sistema de información imita las recomendaciones de un experto sobre algún dominio
de conocimiento.
Demostración automáticade teoremas, donde un programa genera nuevos teoremas sobre una teoría existente.
Reconocimiento de lenguaje natural, donde un programa es capaz de comprender (con limitaciones) la información
contenida en una expresión lingüística humana.
La programación lógica también se utiliza en aplicaciones más "mundanas" pero de manera muy limitada, ya que la programación
tradicional es más adecuada a tareas de propósito general.

Fundamentos
La mayoría de los lenguajes de programación lógica se basan en la teoría lógica de primer orden, aunque también incorporan algunos
comportamientos de orden superior como la lógica difusa. En este sentido, destacan los lenguajes funcionales, ya que se basan en el
cálculo lambda, que es la única teoría lógica de orden superior que es demostradamentecomputable (hasta el momento).

Conceptos
Un concepto importante deprogramación lógica es la descomposición de programas en sus componentes lógicos y sus componentes
de control. Con lenguajes de programación lógica de bajo nivel, estos componentes determinan la solución del problema, por eso los
componentes de control pueden variar para proporcionar alternancia de ejecución de un programa lógico. Estos conceptos son
capturados con el eslogan

Algoritmo= lógica + control

donde "lógica" representa un programa lógico y "control" diferentes estrategias de demostración del teorema.

Solución del Problema


El caso proposicional simplificado en el cual un programa lógico a un nivel superior de reducción atómica no contiene variables
compuestas es un razonamiento que determina un árbol lógico, el cual constituye un espacio de búsqueda para resolver el problema.
El nivel superior es la raíz del árbol. Dado algún nodo en el árbol y alguna cláusula cuya cabecera esta marcada por un nodo, existe
un conjunto de nuevas ramas correspondientes con los objetivos del cuerpo de las clausulas, aún por reducir. Estas nuevas ramas son
agrupadas juntas por el "y" lógico. El conjunto alternativo correspondiente de estas nuevas ramas está agrupado por el "o" lógico.

Alguna estrategia de búsqueda puede ser usada para la búsqueda del conjunto de proposiciones a resolver. Prolog es un lenguaje de
programación que usa una secuencia, último en entrar primero en salir
, para una estrategia de agrietamiento, en la cual la alternativa y
el objetivo son considerados a la vez. Otras estrategias de búsqueda son por ejemplo la búsqueda paralela o la búsqueda primero-
mejor para encontrar una solución óptima.

En el caso más general, donde los objetivos comparten variables, otras estrategias pueden ser usadas, como por ejemplo puede ser
escogido el objetivo mas altamente instanciado o el suficientemente instanciado para lo que implica un procedimiento. Una estrategia
actualmente usada es la programación de lógica concurrente.

En qué consiste (ejemplo)


La programación lógica permite formalizar hechos del mundo real, por ejemplo:

las aves vuelan


los pingüinos no vuelan
"pichurri" es un ave
"sandokan" es un perro
"alegría" es un ave

y también reglas o restricciones:

una mascota vuela si es un ave y no es un pingüino

Ante dicho "programa" es posible establecer hipótesis que no son más que preguntas o incógnitas, por ejemplo:

¿ "pichurri" vuela ?
¿ qué mascotas vuelan ?....

Gracias a que la lógica de primer orden es computable, el ordenador será capaz de verificar la hipótesis, es decir, responder a las
incógnitas:
Es cierto que "pichurri" vuela.
"pichurri" y "alegría" vuelan.

Obsérvese que el programa lógico no solamente es capaz de responder si una determinada hipótesis es verdadera o falsa. También es
capaz de determinar que valores de la incógnita hacen cierta la hipótesis.

Este ejemplo es claramente académico. Sin embargo, consideremos el siguiente ejemplo: el sistema de control de semáforos de una
ciudad.

El estado de cada uno de los semáforos (verde, rojo o ámbar) constituye los hechos del mundo real. El programa en sí consiste en
unas pocas reglas de sentido común: determinados semáforos no pueden permanecer simultáneamente en verde, un semáforo
solamente puede transitar de verde a ámbar y de ámbar a rojo, etc. La hipótesis es el estado en el que deberían estar cada uno de los
semáforos en el siguiente instante de tiempo.

Éste es un ejemplo imposible de resolver mediante programación tradicional, ya que la lógica subyacente al comportamiento de los
semáforos en su conjunto queda enmascarada por simples órdenes imperativas del tipo "cambiar color de tal o cual semáforo".

Lenguajes
El lenguaje de programación lógica por excelencia es Prolog, que cuenta con diversas variantes. La más importante es la
programación lógica con restricciones (véase artículo sobre programación con restricciones), que posibilita la resolución de
ecuaciones lineales además de la demostración de hipótesis.

Bibliografía
Las siguientes referencias bibliográficas corresponden a literatura eninglés:

Foundations of Logic Programming, J.W. Lloyd, Springer-Verlag, 1991.


Essentials of Logic Programming, C. Hogger, Clarendon Press, Oxford, 1990.
Logic for Computer Science: Foundations of Automatic Theorem Proving, J.H. Gallier, John Wiley and Sons,
1987.
Logic programming as classical inference, Eric A. Martin, Show more. Journal of Applied Logic
Volume 13, Issue 3, September 2015, Pages 316–369

[Link]
Existen pocas referencias a literatura en castellano:

Lógica Informática, J. Cuena, Editorial Alianza, 1985.


Programación Lógica. Teoría y Práctica, P. Julián, M. Alpuente, Pearson Prentice Hall, 2007.
Este último sea posiblemente el mejor libro de programación lógica en español, ya que también contiene las bases de lógica
matemática.

Véase también
Paradigma de programación.
Programación con restricciones.
Programación funcional.
Lógica matemática.

Enlaces externos
CLIP group, Universidad Politécnica de Madrid.
Logic Programming Virtual Library entry (en inglés).
Association for Logic Programming (ALP)(en inglés).

Esta obra contiene una traducción parcial derivada deLogic programming de Wikipedia en inglés, concretamente de
esta versión, publicada por sus editores bajo la Licencia de documentación libre de GNU y la Licencia Creative
Commons Atribución-CompartirIgual 3.0 Unported .

Obtenido de «[Link]
»

Esta página se editó por última vez el 29 jul 2018 a las 16:37.

El texto está disponible bajo laLicencia Creative Commons Atribución Compartir Igual 3.0 ; pueden aplicarse cláusulas
adicionales. Al usar este sitio, usted acepta nuestrostérminos de uso y nuestra política de privacidad.
Wikipedia® es una marca registrada de laFundación Wikimedia, Inc., una organización sin ánimo de lucro.

También podría gustarte