資源描述:
《人工智能技術(shù)簡(jiǎn)明教程 教學(xué)課件 作者 廉師友 第2章 邏輯程序設(shè)計(jì)語(yǔ)言PROLOG(白).ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、第2章邏輯程序設(shè)計(jì)語(yǔ)言PROLOG2.1基本PROLOG2.2TurboPROLOG程序設(shè)計(jì)2.1基本PROLOG2.1.1PROLOG的語(yǔ)句1.事實(shí)(fact)格式〈謂詞名〉(〈項(xiàng)表〉).student(john).like(mary,music).abc.repeat.功能一般表示對(duì)象的性質(zhì)或關(guān)系。2.規(guī)則(rule)格式〈謂詞名〉(〈項(xiàng)表〉):-〈謂詞名〉(〈項(xiàng)表〉){,〈謂詞名〉(〈項(xiàng)表〉)}.bird(X):-animal(X),has(X,feather).grandfather(X,Y):-father(X,Z),father(Z,Y).
2、run:-start,step1(X),step2(X),end.功能一般表示對(duì)象間的因果關(guān)系、蘊(yùn)含關(guān)系或?qū)?yīng)關(guān)系。3.問題(question)格式?-〈謂詞名〉(〈項(xiàng)表〉){,〈謂詞名〉(〈項(xiàng)表〉)}.?-student(john).?-like(mary,X).功能問題表示用戶的詢問,它就是程序運(yùn)行的目標(biāo)。2.1.2PROLOG的程序PROLOG程序一般由一組事實(shí)、規(guī)則和問題組成。問題是程序執(zhí)行的起點(diǎn),稱為程序的目標(biāo)。likes(bell,sports).likes(mary,music).likes(mary,sports).likes(jane,
3、smith).friend(john,X):-likes(X,reading),likes(X,music).friend(john,X):-likes(X,sports),likes(X,music).?-friend(john,Y).?-likes(mary,X).或?-likes(mary,music).或?-friend(X,Y).或?-likes(bell,sports),likes(mary,music),friend(john,X).2.1.3PROLOG程序的運(yùn)行機(jī)理1.自由變量與約束變量2.匹配合一兩個(gè)謂詞可匹配合一,是指兩個(gè)謂詞的
4、名相同,參量項(xiàng)的個(gè)數(shù)相同,參量類型對(duì)應(yīng)相同,并且對(duì)應(yīng)參量項(xiàng)還滿足下列條件之一:(1)如果兩個(gè)都是常量,則必須完全相同。(2)如果兩個(gè)都是約束變量,則兩個(gè)約束值必須相同。(3)如果其中一個(gè)是常量,一個(gè)是約束變量,則約束值與常量必須相同。(4)至少有一個(gè)是自由變量。考慮下面的各組謂詞是否可匹配合一?pre1(″ob1″,″ob2″,Z)pre1(″ob1″,″ob3″,Y)pre1(″ob1″,″ob2″,Z)pre1(″ob1″,X,″ob3″)pre1(″ob1″,″ob2″,Z)pre1(″ob1″,X,Y)3.回溯所謂回溯,就是在程序運(yùn)行期間,當(dāng)某
5、一個(gè)子目標(biāo)不能滿足(即謂詞匹配失敗)時(shí),控制就返回到前一個(gè)已經(jīng)滿足的子目標(biāo)(如果存在的話),并撤消其有關(guān)變量的約束值,然后再使其重新滿足。成功后,再繼續(xù)滿足原子目標(biāo)。如果失敗的子目標(biāo)前再無子目標(biāo),則控制就返回到該子目標(biāo)的上一級(jí)目標(biāo)(即該子目標(biāo)謂詞所在規(guī)則的頭部)使它重新匹配?;厮菀彩荘ROLOG的一個(gè)重要機(jī)制。likes(bell,sports).likes(mary,music).likes(mary,sports).likes(jane,smith).friend(john,X):-likes(X,reading),likes(X,music).friend
6、(john,X):-likes(X,sports),likes(X,music).?-friend(john,Y).則求解目標(biāo)為friend(john,Y).新目標(biāo)likes(X,reading),likes(X,music).2.2TurboPROLOG程序設(shè)計(jì)2.2.1程序結(jié)構(gòu)/*〈注釋〉*/〈編譯指令〉constants〈常量說明〉domains〈域說明〉database〈數(shù)據(jù)庫(kù)說明〉predicates〈謂詞說明〉goal〈目標(biāo)語(yǔ)句〉clauses〈子句集〉例如果把上節(jié)的例子程序作為TurboPROLOG程序,則應(yīng)改寫為:DOMAI
7、NSname=symbolPREDICATESlikes(name,name).friend(name,name)GOALfriend(john,Y),write(″Y=″,Y).CLAUSESlikes(bell,sports).likes(mary,music).likes(mary,sports).likes(jane,smith).friend(john,X):-likes(X,sports),likes(X,music).friend(john,X):-likes(X,reading),likes(X,m