prolog logic-programming clips datalog

Datalog vs CLIPS vs Prolog



logic-programming (2)

La diferencia entre CLIPS y Prolog / Datalog es que CLIPS es un "sistema de reglas de producción" que funciona mediante el encadenamiento hacia adelante : dado un conjunto de hechos y reglas, intentará hacer cada derivación posible de nuevos hechos y almacenarlos en la memoria. A continuación, se responde una consulta comprobando si coincide con algo en el almacén de hechos. Entonces, en CLIPS, si tienes (pseudo-sintaxis):

parent(X,Y) => child(Y,X) parent(john,mary)

de inmediato derivará child(mary,john) y recordará ese hecho. Esto puede ser muy rápido, pero pone restricciones en el posible conjunto de reglas y ocupa memoria.

Prolog y Datalog funcionan mediante el encadenamiento hacia atrás , lo que significa que se responde a una consulta (llamada predicada) intentando probar la consulta, es decir, ejecutando el programa Prolog / Datalog. Prolog es un lenguaje de programación completo de Turing, por lo que cualquier algoritmo se puede implementar en él.

Datalog es un subconjunto completo de Prolog que no es de Turing que no permite, por ejemplo, la negación. Su principal ventaja es que cada programa Datalog termina (no hay bucles infinitos). Esto lo hace útil para las llamadas "bases de datos deductivas", es decir, bases de datos con reglas además de hechos.

Como muchos programadores estudié Prolog en la universidad, pero muy poco. Entiendo que Prolog y Datalog están estrechamente relacionados, pero que Datalog es más simple? Además, creo que leí que Datalog no depende del orden de las cláusulas lógicas, pero no estoy seguro de por qué esto es una ventaja. CLIPS es supuestamente diferente, pero es demasiado sutil para que lo entienda. ¿Puede alguien por favor proporcionar un resumen general de los idiomas en otros idiomas?


datalog es un subconjunto de prólogo. El subconjunto que lleva el registro de datos tiene dos cosas en mente:

  1. Adoptar una API que soporte reglas y consultas.
  2. asegúrese de que todas las consultas terminen

El prólogo es Turing completo. El registro de datos no lo es.

eliminando el registro de datos, veamos cómo se compara el prólogo con los clips.

La experiencia de Prolog es la "resolución de problemas", mientras que los clips son un "sistema experto". si entiendo correctamente, la "resolución de problemas" implica experiencia utilizando códigos y datos. Los "sistemas expertos" utilizan principalmente estructuras de datos para expresar experiencia. vea http://en.wikipedia.org/wiki/Expert_system#Comparison_to_problem-solving_systems

Otra forma de verlo es:

Los sistemas expertos operan bajo la premisa de que la mayoría (si no todos) los resultados son conocidos. Todos estos resultados se compilan en datos y luego se incorporan a un sistema experto. le da al sistema experto un escenario, el sistema experto calcula el resultado de los datos compilados, también conocido como base de conocimientos. siempre es un tipo de pensamiento "un número par más un número par siempre es par".

Los sistemas de resolución de problemas tienen una visión incompleta del problema. así que uno comienza con el modelado de datos y comportamiento, que comprendería la base de conocimiento (esto le da justicia al término "caso de esquina") y termina con "si sumamos dos a seis, terminamos con ocho. Es ocho divisibles por dos? entonces es par