初识Prolog

对Prolog的初步了解

刚接触Prolog,对其能做的事甚感兴趣。

严格来说,我不认为这是程序,因为它执行哪一步不是由人来确定的,好像是有了初级的“智能”。

你定义一些规则,然后提出一个问题,它就会按这些规则来找答案。

比如有如下规则:

         father(X,Y).  % X是Y的father

         %X是Z的grandfather的条件是:X是Y的father并且Y是Z的father

         grandfather(X,Z)      :-       father(X,Y),father(Y,Z).

然后提出以下事实:

         father(tom,jerry).

         father(jack,tom).

接着提出问题

         ?-grandfather(Who, jerry). % 谁是jerry的grandfather

程序就会按照规则去找,并输出结果

         Who= jack .

是不是给人一种新奇的感觉,程序竟然能自己找答案!

但现在用Prolog人工智能的并不多,肯定有其原因,所以我打算细细探究一番。

 

开发软件介绍

龙涎在其博客中介绍了七种Prolog的编译器/解释器。我在Win7 64位系统上试了三种工具,VisualProlog, Amzi Prolog和SWI prolog。只有Visual Prolog和SWI prolog能正常运行,Amzi Prolog一直出问题,原因还未查到。

Visual Prolog有较好的IDE,但是编程时需要对谓词以及数据类型进行声明,较为复杂和繁琐。而SWI prolog则要简单得多,只需说明规则和事实,然后提出问题即可。下面说一下SWI prolog如何使用。

 

SWI prolog使用

1.下载及安装

SWI prolog官网是http://www.swi-prolog.org/

Windows各种版本的下载地址是http://www.swi-prolog.org/download/daily/bin/


根据自己情况选择一个下载,我使用的w64pl-2014-12-09.exe

然后直接安装,安装过程中会提示将".pl"文件与编译器关联(一般选择与swipl\bin目录下的swipl-win.exe进行关联)。

 

2. 开始第一个程序

新建一个文本文件,命名为"first.pl"(名字可随意更改,只需保证后缀为.pl即可), 然后对其进行编辑,我是用的是Notepad++.

在里面写如下代码后保存。

/*****************************************************************************/

% 规则

% father(X,Y).  % X是Y的father

% X是Z的grandfather的条件是:X是Y的father并且Y是Z的father

grandfather(X,Z) :-

         father(X,Y),father(Y,Z).

% 事实

father(tom, jerry).

father(jack, tom).

/*****************************************************************************/

 

之后直接双击" first.pl ",会出现一个对话窗口,如下所示:

 

在光标后输入问题:grandfather(Who, jerry).

按回车键后就会出现结果。


至此,第一个程序完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章