Please enable JavaScript.
Coggle requires JavaScript to display documents.
Programación lógica (Que es Programacion Logica (La programación lógica es…
Programación lógica
-
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 imperativa han 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 su há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ática de 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.
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 demostradamente computable (hasta el momento).
Conceptos
Un concepto importante de programació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 cláusulas, 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.