初識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).

按回車鍵後就會出現結果。


至此,第一個程序完成。

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