定义
PROLOG语言是一种基于Horn子句的逻辑型程序设计语言,也是一种陈述性语言。
PROLOG的语句
PROLOG语言仅有三种语句,称为事实、规则和问题。
事实
格式 <谓词名>(<项表>).
其中谓词名是以小写英文字母开头的字母、数字、下划线等组成的字符串,项表是以逗号隔开的项序列。PROLOG中的项包括由常量或变量表示的简单对象以及函数、结构和表等,即事实的形式是一个原子谓词公式。
例如:
student(john).
like(mary,music).
就是PROLOG的两个合法事实。
规则
格式: <谓词名>(<项表>):-<谓词名>(<项表>){,<谓词名>(<项表>)}
其中":-“号表示"if”(也可以直接写为if),其左部的谓词是规则的结论(也称为头),右部的谓词是规则的前提(也称为体),{}表示零次或多次重复,逗号表示and(逻辑与),即规则的形式是一个逻辑蕴含式。例如:
bird(X):-animal(X), has(X,feather).
grandfather(X,Y): -father(X,Z),father(Z,Y).
就是PROLOG的合法规则。
问题
格式: ?- <谓词名>(<项表>){,<谓词名>(<项表>)}
例如:
?-student(john).
?-like(mary,X).
就是两个合法的问题。
一个简单的prolog程序
% 定义likes谓词
likes(bell, sports).
likes(mary, music).
likes(mary, sports).
likes(jane, smith).
likes(jane, reading).
% 定义friend谓词
friend(john, X) :- likes(X, reading), likes(X, music).
friend(john, X) :- likes(X, sports), likes(X, music).
% 查询
?- friend(john, Y).
运行方法及结果截图
- 首先需要下载swi-prolog,下载地址为swi-prolog
- 将上面的程序保存为.pl结尾的文件,像我就是保存为了demo.pl,并存放在了F:\tmp文件夹中
- 打开cmd,并进入存放pl文件的文件夹
- 依次运行命令
swipl
[demo].
friend(john,Y).
- 注意,这里的[demo].是因为我保存的程序文件为demo.pl。而最下面的语句为查询语句。整个的截图如下:
上面代码的解释
把上面的代码解释一下为:
bell喜欢sports;
mary喜欢music;
mary喜欢sports;
jane喜欢smith;
jane喜欢reading;
如果你喜欢reading且喜欢music,那么你可以和john做朋友;
如果你喜欢sports且喜欢music,那么你可以和john做朋友;
试问,谁能和john成为朋友呢?
从运行结果我们可知,是mary,即Y=mary。(和我们的推断一致)。
注
以上便是我学习《人工智能导论》一书的学习笔记,我会继续学习下去的,希望和大家一起进步了!