lunes, 27 de mayo de 2019

Introducción al modelo de programación lógica


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.

No hay comentarios.:

Publicar un comentario