星期四, 8月31日, 2006年
介绍:
在70年代初,法国人Alain Colmenuer开发了PROLOG语言,它也允许以声明式方式开发应用程序.
通常,PROLOG是一个自动问题证明器, 它使用以演绎推理规则形式的知识库 (霍恩子句), 也就是说,它的规则只有一个结果动作,得到的推理严格遵循逻辑 (真或假), 虽然这看起来是一个限制, 但这并不完全公平, 因为PROLOG允许用概率逻辑编程推理机制, 因为它是基于证据积累的树搜索.
El PROLOG como lenguaje surgido del cálculo de predicados, tomó las siguientes ideas de la lógica para su ejecución.
1) Un conjunto de axiomas hechos.
2) Reglas de inferencias las cuales se resuelven por resolución y unificación.
三) El objetivo a demostrar, que serán las condiciones a unificar con las reglas.
También tomó del LISP el tratamiento de las listas para la representación de estructuras complejas.Aunque el PROLOG tuvo su origen en la lógica matemática no fue una transposición exacta, y esta ligada a las discusiones que sostienen desde hace años los principales investigadores de la Inteligencia Artificial, los cuales están divididos en dos grandes grupos, de una parte Minsky quien propone estudiar los mecanismos del pensamiento humano y luego simularlo en la computadora.
Lo más importante para Minsky son los conceptos, sea la interpretación que se le puede dar a cada palabra en dependencia de un contexto dado.
El otro grupo encabezado por Mac Carthy (autor del LISP), afirma que la lógica matemática es el elemento característico para la representación del razonamiento y su implantación en la computadora, este grupo centra su atención en la formalización y en la estructura de los conocimientos más que en el sentido de los mismos.
La lógica desde la antigüedad se concibió como el método de descubrir las leyes del pensamiento, pero estas leyes siempre han estado restringidas al pensamiento científico y muy especialmente el matemático, quedando fuera el sentido común. Esta deficiencia es admitida por los defensores de la lógica, pero ellos consideran que la lógica es la única senda posible para desarrollar programas capaces de mostrar inteligencia.
Programación declarativa
En la programación declarativa lo principal no son las instrucciones que se dan en forma secuencial (programación prescriptiva), en su lugar, el programador se dedica a describir el problema a través de reglas y hechos que funcionan de forma independiente y es a través de un mecanismo de inferencia que se ejecutan las reglas.
En la programación declarativa las reglas (base de conocimientos) 它与管理程序分开 (推理机).
声明式编程示例:
如果 前提 则 结论
如果 P 则 C
其中:P 和 C 是指令时,我们面对的是过程式表示.
P 和 C 是事实断言时,我们面对的是声明式表示.
过程式表示示例
如果 A1 = B1 且 A2 > B2 则 X := A1 + A2
其中 A1 = B1 和 A2 > B2 是会取值为“真”“假”的比较.
也就是我们会有:
如果 P1 和 P2 则 C
其中 P1 和 P2 是逻辑变量 (将会给出真或假)
声明式表示示例
在任何语言中都可以按以下方式实现:
X := Juan 是一名学生
Y := 胡安7岁
如果 X = 胡安是学生 并且 Y = 胡安7岁
那么 Z := 胡安在小学
现在让我们来看如何形式化事实断言
示例: 胡安10岁
1) 技术信仰
年龄(胡安, 10)
例子1: 狮子是哺乳动物
是一个(leon, 哺乳动物)
1)
2) 喜欢(玛丽亚, 电影)
现在来看一些将事实以规则条款形式组合的例子:
si
并
那么
1) si
2) 生活在(鲨鱼, 在水中) 如果生活在(鱼, 在水中) 并且 是一个(鱼, 鲨鱼)
注意在 Prolog 中结论放在前提之前
规则形式的表示:
如果 前提 那么 结论
si
那么
其中结论可以由多个事实断言组成.
在 Prolog 中的表示:
结论 如果 前提
si
其中结论由一个事实断言给出.
练习1:
1. A María le gusta el tenis.
2. A Tomas le gusta el béisbol.
三. A José le gustan los deportes que le gustan a Tomas.
1.
2.
S
Ejercicio 2:
si
并
Posted by