La Programación
Lógica estudia el uso de la lógica para el planteamiento de problemas y el
control sobre las reglas de inferencia para alcanzar la solución automática.
La Programación
Lógica, junto con la funcional, forma parte de lo que se conoce como Programación
Declarativa, es decir la programación consiste en indicar como resolver un
problema mediante sentencias, en la Programación Lógica, se trabaja en una
forma descriptiva, estableciendo relaciones entre entidades, indicando no como,
sino que hacer, entonces se dice que la idea esencial de la Programación Lógica
es
Programa= lógica +
control
Lógica
(programador): hechos y reglas para representar conocimiento
Control
(interprete): deducción lógica para dar respuestas (soluciones)
La programación
lógica intenta resolver lo siguiente:
Dado un problema S,
saber si la afirmación A es solución o no del problema o en qué casos lo es.
Además queremos que los métodos sean implantados en maquinas de forma que la
resolución del problema se haga de forma automática.
La programación
lógica: construye base de conocimientos mediante reglas y hechos
* Regla:
implicación o inferencia lógica que deduce nuevo conocimiento, la regla permite
definir nuevas relaciones a partir de otras ya existentes
Ej.:
Mortal (x): –
humano(x)
x es mortal si x es
humano
* 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
Ej.:
Humano (Sócrates);
Sócrates es humano
Ama (Juan, María) ;
ama Juan a María
* Consulta:
se especifica el problema, la proposición a demostrar o el objetivo Partiendo
de que los humanos son mortales y de que Sócrates es humano, deducimos que
Sócrates es mortal
Mortal (x): –
humano(x);- los humanos son mortales; regla
Humano (Sócrates);
Sócrates es humanos; hecho
Sócrates es mortal
; consulta
4.2 Semántica de los programas lógicos
El
orden en que aparecen los literales dentro de una sentencia (dentro del cuerpo)
o el orden en que se introducen las sentencias en el programa son importantes
en PROLOG. El orden afecta tanto al correcto funcionamiento del programa, como
al recorrido del árbol de llamadas, determinando, entre otras cosas, el orden
en que PROLOG devuelve las soluciones a una pregunta dada.
Está
definida por el proceso de inferencia utilizado para probar que un objetivo
puede ser derivado del programa.
Una
clausula es una disyunción finita de cero o más literales.
Una
literal es un átomo o la negación de un átomo. Una literal positiva es un
átomo. Una literal negativa es la negación de un átomo.
Cada
línea -- sentencia -- de un programa Prolog se denomina cláusula. Las cláusulas
son los hechos, reglas y consultas.
La
semántica da significado a los programas y nos permite describir formalmente lo
que calculan. Hay tres maneras bien conocidas de dar significado o semántica a
los programas lógicos: la semántica declarativa, la semántica operacional y la
semántica.
Representación del conocimiento es un término
para referirse a representaciones pensadas para el procesamiento por
ordenadores modernos, en particular, para representaciones compuestas por
objetos explícitos y de afirmaciones sobre ellos.
Representar el conocimiento mediante
cláusulas permite a los ordenadores sacar conclusiones de conocimiento
previamente almacenados.
Esta semántica asigna significado a un programa asociándola una función sobre el dominio calculado por el programa. El significado viene dado entonces por el punto fijo de la función, si existe.
Cuando se resuelve un problema, se busca la mejor solución entre un conjunto de posibles soluciones. Al conjunto de todas las posibles soluciones a un problema concreto se llama espacio de búsqueda. Cada punto en el espacio de búsqueda representa una posible solución. Cada posible solución se le puede asociar un fitness o un valor que indicará cómo que tan buena es la solución para el problema.
4.4 consulta de base de clausulas.
4.5 Espacios de búsqueda.
4.6 Programación lógica con números, listas y arboles
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.
Desde el punto de vista lógico, un programa P puede verse como una teoría lógica formada por las cláusulas del programa. Los modelos de Herbrand de esta teoría son considerados los modelos del programa P.
4.7 control de búsqueda en programas lógicos
4.8 Manipulación de términos
En PROLOG los objetos numéricos pueden corresponder a tipos integer o float de C. Para realizar operaciones numéricas, se tiene el predicado is, que se comporta como una asignación en un lenguaje imperativo. Así, el objetivo X is <expresión> será verdadero cuando X unifique con el resultado numérico de evaluar <expresión>.
Listas
La representación de hechos simples no es lo común en la clasificación de elementos, sino que se agrupan los elementos de un mismo tipo en una lista.
Las listas son colecciones de elementos en PROLOG. Una lista se divide en dos partes:
La representación del conocimiento y el razonamiento es un área de la inteligencia artificial cuyo objetivo fundamental es representar el conocimiento de una manera que facilite la inferencia (sacar conclusiones) a partir de dicho conocimiento. Analiza cómo pensar formalmente - cómo usar un sistema de símbolos para representar un dominio del discurso (aquello de lo que se puede hablar), junto con funciones que permitan inferir (realizar un razonamiento formal) sobre los objetos
4.9 predicados mitológicos.