介绍 :
Prolog 是一种逻辑编程语言。它在人工智能中具有重要作用。与许多其他编程语言不同,Prolog 主要用作声明式编程语言。在序言中,逻辑表示为关系(称为事实和规则)。 prolog 的核心在于所应用的逻辑。通过对这些关系运行查询来执行公式化或计算。
在 Linux 中安装:
打开终端(Ctrl+Alt+T)并输入:
sudo apt-get install swi-prolog
语法和基本字段:
在序言中,我们声明了一些事实。这些事实构成了系统的知识库。我们可以查询知识库。如果我们的查询已经在知识库中或者知识库隐含了它,我们就会得到肯定的输出,否则我们得到的输出是否定的。因此,知识库可以被认为类似于数据库,我们可以对其进行查询。 Prolog 事实以明确的模式表示。事实包含实体及其关系。实体写在用逗号 (, ) 分隔的括号内。它们的关系在括号内和括号外表示。每个事实/规则都以点 (.) 结尾。因此,一个典型的序言事实如下:
Format : relation(entity1, entity2, ....k'th entity).
Example :
friends(raju, mahesh).
singer(sonu).
odd_number(5).
Explanation :
These facts can be interpreted as :
raju and mahesh are friends.
sonu is a singer.
5 is an odd number.
主要特征 :
1. 统一:基本思想是,可以使给定的术语表示相同的结构。
2. 回溯:当任务失败时,prolog 向后追溯并尝试满足先前的任务。
3.递归:递归是程序中任何搜索的基础。
运行查询:
一个典型的 prolog 查询可以这样问:
Query 1 : ?- singer(sonu).
Output : Yes.
Explanation : As our knowledge base contains the above fact, so output was 'Yes', otherwise it would have been 'No'.
Query 2 : ?- odd_number(7).
Output : No.
Explanation : As our knowledge base does not contain the above fact, so output was 'No'.
优点 :
1.易于建立数据库。不需要大量的编程工作。
2.模式匹配很容易。搜索是基于递归的。
3.内置列表处理。可以更轻松地使用任何涉及列表的算法。
缺点:
1. LISP(另一种逻辑编程语言)在 I/O 功能方面优于 prolog。
2.有时输入输出并不容易。
应用:
Prolog 高度用于人工智能(AI)。 Prolog 还用于对自然语言解析树进行模式匹配。
参考 1: https://en.wikipedia.org/wiki/Prolog
参考 2: http://www.swi-prolog.org/