Plog(1)

來源:互聯網
上載者:User

 prolog是Programming in logic的縮寫,意思是使用邏輯進行編程的語言,在人工智慧領域被廣泛使用。
 在學習prolog前我們需要一個解譯器,我選擇的是swi-prolog,可以從http://www.swi-prolog.org/下載。這個解譯器功能比較強大,它提供了java和C/C++的interface. 還有一個是StrawBerryProlog,http://www.dobrev.com/light.html,相比SWI介面做得不錯,但下載XP版本的註冊比較煩瑣,而且似乎沒有INTERFACE,如果只是練習調試prolog也是個不錯的選擇.在這裡我們還是以SWI為主.
幾個prolog的基本概念:
terms:  這個其實代表的就是資料,但這個資料是相對寬泛的,它包括變數,常量,還有複合terms.
facts: 代表事實,比如a是b的家長,這就是一個事實,可以如此表示: parent(a,b); 這裡a和b就是terms. fact的基本形式是p(t1,....,tn).
現在我們不再牽涉其它概念,嘗試用上面兩個概念來做一點東西.
進入SWI,我們可以使用命令菜單中的consult來載入外部的.pl檔案(swi prolog的格式),或者用NEW命令建立一個檔案.  在這個檔案編輯視窗中我們輸入以下語句:
man(jack).
man(tom).
woman(mary).
woman(helen).
這裡的"."代表我們常用程式語言中的";",注意! 這是區分facts和terms的重要標誌,有時我們會看到這樣的語句man(foo(gg)).  其中的foo(gg)其實就是terms,而man(foo(gg)). 才是facts.退出編輯視窗,我們在命令列中輸入man(jack). 斷行符號,即可看到YES,表示資料庫中確實存在男人jack這個事實.  呵呵,我們已經邁出第一步了,你可以輸入自己的名字,不過你得到的結果只能是NO,快嘗試把自己的名字加進去試試吧,可別搞錯性別!.
接下來我們要稍稍提高一點了.我們修改了上面的檔案:
man(jack).
man(tom).
woman(mary).
woman(helen).
parent(jack,mary).       %jack是mary的父母
parent(helen,mary).    %helen是mary的父母
在命令列中我們這樣寫: parent(C,mary).   這個C是參數,表示我們也不知道mary的父母是誰,我們想得到這個答案. 注意,在prolog中參數的首字母是預設大寫的.
斷行符號後我們看到這樣的結果:
C=jack;    我們只要再按一下";"(redo 命令)就接著會出現 C=helen;    你有了什麼想法了呢,能不能利用這個類比一個DB呢?
下一篇我們將再提高一點並學習prolog中的rules,有了它就可以寫出非常複雜的邏輯程式了.(本人也是剛接觸prolog,如有不對之處望賜教)

y

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.