(<項(xiàng)表>).功能一般表示對(duì)象的性質(zhì)或關(guān)">
邏輯型程序設(shè)計(jì)語言PROLOG詳細(xì)教程.doc

邏輯型程序設(shè)計(jì)語言PROLOG詳細(xì)教程.doc

ID:59267679

大?。?30.00 KB

頁數(shù):44頁

時(shí)間:2020-09-08

邏輯型程序設(shè)計(jì)語言PROLOG詳細(xì)教程.doc_第1頁
邏輯型程序設(shè)計(jì)語言PROLOG詳細(xì)教程.doc_第2頁
邏輯型程序設(shè)計(jì)語言PROLOG詳細(xì)教程.doc_第3頁
邏輯型程序設(shè)計(jì)語言PROLOG詳細(xì)教程.doc_第4頁
邏輯型程序設(shè)計(jì)語言PROLOG詳細(xì)教程.doc_第5頁
資源描述:

《邏輯型程序設(shè)計(jì)語言PROLOG詳細(xì)教程.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、.......邏輯型程序設(shè)計(jì)語言PROLOG教程2.3.1邏輯型程序設(shè)計(jì)語言PROLOGPROLOG的語句PROLOG語言只有三種語句,分別稱為事實(shí)、規(guī)則和問題。?1.事實(shí)(fact)格式:<謂詞名>(<項(xiàng)表>).功能一般表示對(duì)象的性質(zhì)或關(guān)系。其中謂詞名是以小寫英文字母打頭的字母、數(shù)字、下劃線等組成的字符串,項(xiàng)表是以逗號(hào)隔開的項(xiàng)序列。例如:student(john).like(mary,music).表示“約翰是學(xué)生”和“瑪麗喜歡音樂”。2.規(guī)則(rule)格式:<謂詞名>(<項(xiàng)表>):-<謂詞名>(<項(xiàng)表>){,<謂詞名>(<項(xiàng)表>)}.功能:一般表示對(duì)象間的因果關(guān)系、蘊(yùn)含關(guān)系或?qū)?yīng)關(guān)系

2、。其中“:-”號(hào)表示“if”(也可以直接寫為if),其左部的謂詞是規(guī)則的結(jié)論(亦稱為頭),右部的謂詞是規(guī)則的前提(亦稱為體),{}表示零次或多次重復(fù),逗號(hào)表示and(邏輯與),即規(guī)則的形式是一個(gè)邏輯蘊(yùn)含式。例如:bird(X):-animal(X),has(X,feather).grandfather(X,Y):-father(X,Z),father(Z,Y).S..............第一條規(guī)則表示“如果X是動(dòng)物,并且X有羽毛,則X是鳥”;第二條規(guī)則就表示“X是Y的祖父,如果存在Z,X是Z的父親并且Z又是Y的父親”。3.問題(question)格式:?-<謂詞名>(<項(xiàng)表>){,<謂

3、詞名>(<項(xiàng)表>)}.功能表示用戶的詢問,它就是程序運(yùn)行的目標(biāo)。例如:?-student(john).?-like(mary,X).2.3.2PROLOG程序PROLOG程序一般由一組事實(shí)、規(guī)則和問題組成。問題是程序執(zhí)行的起點(diǎn),稱為程序的目標(biāo)。例如下面就是一個(gè)PROLOG程序。likes(bell,sports).likes(mary,music).likes(mary,sports).likes(jane,smith).friend(john,X):-likes(X,reading),likes(X,music).friend(john,X):-likes(X,sports),likes

4、(X,music).?-friend(john,Y).S..............可以看出,這個(gè)程序中有四條事實(shí)、兩條規(guī)則和一個(gè)問題。其中事實(shí)、規(guī)則和問題都分行書寫。規(guī)則和事實(shí)可連續(xù)排列在一起,其順序可隨意安排,但同一謂詞名的事實(shí)或規(guī)則必須集中排列在一起。問題不能與規(guī)則及事實(shí)排在一起,它作為程序的目標(biāo)要么單獨(dú)列出,要么在程序運(yùn)行時(shí)臨時(shí)給出。這個(gè)程序的事實(shí)描述了一些對(duì)象(包括人和事物)間的關(guān)系;而規(guī)則則描述了john交朋友的條件,即如果一個(gè)人喜歡讀書并且喜歡音樂(或者喜歡運(yùn)動(dòng)和喜歡音樂),則這個(gè)人就是john的朋友(當(dāng)然,這個(gè)規(guī)則也可看作是john朋友的定義);程序中的問題是“約翰的朋友是

5、誰?”當(dāng)然,PROLOG程序中的目標(biāo)可以變化,也可以含有多個(gè)語句(上例中只有一個(gè))。如果有多個(gè)語句,則這些語句稱為子目標(biāo)。例如對(duì)上面的程序,其問題也可以是?-likes(mary,X).或?-likes(mary,music).或?-friend(X,Y).或?-likes(bell,sports),likes(mary,music),friend(john,X).等等。當(dāng)然,對(duì)于不同的問題,程序運(yùn)行的結(jié)果一般是不一樣的。2.3.3PROLOG程序的運(yùn)行機(jī)理PROLOG程序的運(yùn)行是從目標(biāo)出發(fā),并不斷進(jìn)行匹配、合一、歸結(jié),有時(shí)還要回溯,直到目標(biāo)被完全滿足或不能滿足時(shí)為止。1.自由變量與約束變

6、量PROLOGS..............中稱無值的變量為自由變量,有值的變量為約束變量。一個(gè)變量取了某值就說該變量約束于某值,或者說該變量被某值所約束,或者說該變量被某值實(shí)例化了。2.匹配合一兩個(gè)謂詞可匹配合一,是指兩個(gè)謂詞的名相同,參量項(xiàng)的個(gè)數(shù)相同,參量類型對(duì)應(yīng)相同,并且對(duì)應(yīng)參量項(xiàng)還滿足下列條件之一:(1)如果兩個(gè)都是常量,則必須完全相同。(2)如果兩個(gè)都是約束變量,則兩個(gè)約束值必須相同。(3)如果其中一個(gè)是常量,一個(gè)是約束變量,則約束值與常量必須相同。(4)至少有一個(gè)是自由變量。例如:下面的兩個(gè)謂詞pre1("ob1","ob2",Z)pre1("ob1",X,Y)只有當(dāng)變量X被約

7、束為"ob2",且Y、Z的約束值相同或者至少有一個(gè)是自由變量時(shí),它們才是匹配合一的。3.回溯所謂回溯,就是在程序運(yùn)行期間,當(dāng)某一個(gè)子目標(biāo)不能滿足(即謂詞匹配失?。r(shí),控制就返回到前一個(gè)已經(jīng)滿足的子目標(biāo)(如果存在的話),并撤消其有關(guān)變量的約束值,然后再使其重新滿足。成功后,再繼續(xù)滿足原子目標(biāo)。如果失敗的子目標(biāo)前再無子目標(biāo),則控制就返回到該子目標(biāo)的上一級(jí)目標(biāo)(即該子目標(biāo)謂詞所在規(guī)則的頭部)使它重新匹配。回溯也是PROLOG的

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。