人工智能與專(zhuān)家系統(tǒng)第四章智能程序設(shè)計(jì)課件_第1頁(yè)
人工智能與專(zhuān)家系統(tǒng)第四章智能程序設(shè)計(jì)課件_第2頁(yè)
人工智能與專(zhuān)家系統(tǒng)第四章智能程序設(shè)計(jì)課件_第3頁(yè)
人工智能與專(zhuān)家系統(tǒng)第四章智能程序設(shè)計(jì)課件_第4頁(yè)
人工智能與專(zhuān)家系統(tǒng)第四章智能程序設(shè)計(jì)課件_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第四章 PROLOG語(yǔ)言與智能程序設(shè)計(jì)第一節(jié) PROLOG語(yǔ)言的基本知識(shí)第二節(jié) PROLOG程序設(shè)計(jì)基礎(chǔ)第三節(jié) 對(duì)回溯的控制第四節(jié) PROLOG的基本程序段第一節(jié) PROLOG語(yǔ)言的基本知識(shí)一、PROLOG語(yǔ)言簡(jiǎn)介二、PROLOG語(yǔ)言的特點(diǎn)1、PROLOG語(yǔ)言是一種描述型語(yǔ)言2、數(shù)據(jù)和程序是統(tǒng)一的3、自動(dòng)實(shí)現(xiàn)模式匹配和回溯4、程序易于編寫(xiě)和閱讀5、語(yǔ)句類(lèi)型少,語(yǔ)法簡(jiǎn)明第一節(jié) PROLOG語(yǔ)言的基本知識(shí)三、PROLOG語(yǔ)言的三種基本語(yǔ)句1、事實(shí)含義表示對(duì)象具有某種性質(zhì),或某幾個(gè)對(duì)象之間的關(guān)系形式謂詞(對(duì)象1,對(duì)象2,對(duì)象n),n為任意正整數(shù) 裸謂詞注意:對(duì)象之間用逗號(hào)分開(kāi)全部對(duì)象用括號(hào)括住謂詞必

2、須以小寫(xiě)字母開(kāi)頭每個(gè)事實(shí)都用一個(gè)實(shí)心句點(diǎn)結(jié)束第一節(jié) PROLOG語(yǔ)言的基本知識(shí)示例man(zhangsan).is( sun,big).on(book,table).on(f,c).on(c,b).on(b,a).on(e,d).block(a).block(b).abcfde第一節(jié) PROLOG語(yǔ)言的基本知識(shí)最簡(jiǎn)單的PROLOG程序由兩部分組成謂詞部分定義謂詞predicates name(symbol,symbol, )字句部分列出所有事實(shí)clauses name(對(duì)象1,對(duì)象2, ).第一節(jié) PROLOG語(yǔ)言的基本知識(shí)一個(gè)簡(jiǎn)單的程序predicatesis(symbol,symbol)h

3、as(symbol,symbol)clausesis(“王”,”年齡小”).is(“劉”,”個(gè)頭高”).is(“李”,”有音樂(lè)天才”).has(“張”,”書(shū)”).goal: is(“劉”,”個(gè)頭高”)yesgoal: is(“王”,”有音樂(lè)天才”)nogoal: has(“張”,”書(shū)”)yesgoal: has(“書(shū)”,”張”)no第一節(jié) PROLOG語(yǔ)言的基本知識(shí)2、規(guī)則含義表示事物成立所要遵循的法則,即事物之間的新關(guān)系形式事實(shí)D if 事實(shí)A,事實(shí)B,事實(shí)C,事實(shí)D :- 事實(shí)A,事實(shí)B,事實(shí)C,注意:規(guī)則頭只能有一個(gè)事實(shí)規(guī)則體部可有多個(gè)事實(shí)規(guī)則體中各個(gè)事實(shí)之間用逗號(hào)連接表示“與”關(guān)系每個(gè)

4、規(guī)則都用一個(gè)實(shí)心句點(diǎn)結(jié)束第一節(jié) PROLOG語(yǔ)言的基本知識(shí)示例predicatesmother(symbol,symbol)grandmother(symbol,symbol)clausesmother(“錢(qián)”,”孫”).mother(“孫”,”李”).mother(“王”,”張”).grandmother(X,Y) if mother(X,Z), mother(Z,Y)goal: grandmother(“錢(qián)”,”李”)yesgoal: grandmother(“孫”,”張”)no第一節(jié) PROLOG語(yǔ)言的基本知識(shí)3、詢(xún)問(wèn)含義詢(xún)問(wèn)對(duì)象之間某種關(guān)系是否成立的疑問(wèn)句形式goal: 事實(shí)1,事實(shí)2

5、,事實(shí)3,事實(shí)n n為任意正整數(shù) 注意:各個(gè)事實(shí)之間用逗號(hào)連接表示“與”關(guān)系表示:“事實(shí)1,事實(shí)2,事實(shí)3,事實(shí)n”同時(shí)成立嗎? 第一節(jié) PROLOG語(yǔ)言的基本知識(shí)四、項(xiàng)1、項(xiàng)的定義項(xiàng)= 常量原子:對(duì)象的名字、謂詞函數(shù)名(小寫(xiě)字母開(kāi)頭) 數(shù)字變量暫時(shí)不能命名或不需要命名的對(duì)象以大寫(xiě)字母開(kāi)頭匿名變量:on(_,a); mother(_,”李”)自由變量和約束變量第一節(jié) PROLOG語(yǔ)言的基本知識(shí)結(jié)構(gòu)又稱(chēng)復(fù)合項(xiàng),是由一組其他對(duì)象組成的單個(gè)對(duì)象包括:函數(shù)項(xiàng):readchar(X)、mother(“李”, “孫”)表:a,b,c表達(dá)式:2*3+17結(jié)構(gòu)的嵌套accident(date(year,mon

6、th,day),who,place)第一節(jié) PROLOG語(yǔ)言的基本知識(shí)2、項(xiàng)的匹配規(guī)則(1)若A、B是項(xiàng),A是自由變量,則B無(wú)論是何值,A可以被B匹配(2)常量與自身匹配成功(3)結(jié)構(gòu)的每一對(duì)應(yīng)成分匹配,則匹配成功第一節(jié) PROLOG語(yǔ)言的基本知識(shí)五、表1、概念表是具有相同類(lèi)型對(duì)象的有序集合如:1,2,3、a,b,c、a,b(f,c),d、2、表頭、表尾表頭表中第一個(gè)元素表尾表中的其余部分,可以是另一張表3、表的匹配表中的常量完全相同才匹配表中的變量可與任何對(duì)象匹配表頭只與一個(gè)分量匹配,表尾可與一個(gè)表匹配第二節(jié) PROLOG程序設(shè)計(jì)基礎(chǔ)一、PROLOG程序的組成1、前提部分(條件)包括有關(guān)的事

7、實(shí)和規(guī)則2、問(wèn)題部分(目標(biāo))問(wèn)題求解的目標(biāo)結(jié)果二、PROLOG程序的設(shè)計(jì)步驟1、說(shuō)明事實(shí)2、定義規(guī)則3、明確目標(biāo)第二節(jié) PROLOG程序設(shè)計(jì)基礎(chǔ)三、判定規(guī)則中變量值的原則1、在同一條規(guī)則中,所有相同名字的變量具有相同的內(nèi)容2、如果規(guī)則頭中的變量被約束了,則規(guī)則體中的同名變量也被約束為相同的內(nèi)容3、當(dāng)規(guī)則頭中的變量未被約束時(shí),如果規(guī)則體中的同名變量被約束了,則規(guī)則頭中的同名變量和規(guī)則體中的其他同名變量也被約束為相同的內(nèi)容4、如果多條規(guī)則中有相同名字的變量,則這些同名變量不相關(guān)5、只有規(guī)則在使用時(shí),規(guī)則中的變量才被約束第二節(jié) PROLOG程序設(shè)計(jì)基礎(chǔ)四、PROLOG程序的目標(biāo)求解過(guò)程1、匹配與回溯

8、predicatesperson(symbol, symbol)clausesperson(z, m).person(y, w).person(c, w).person(l, m).goal: person(X,m)X=zX=l第二節(jié) PROLOG程序設(shè)計(jì)基礎(chǔ)predicates likes(symbol, symbol)clauseslikes(zhang, flower).likes(zhang, wine).likes(wang, wine).likes(wang, zhang).goal: likes(wang, X)X=wineX=zhanggoal: likes(zhang,X),

9、 likes(wang,X)X=wine第二節(jié) PROLOG程序設(shè)計(jì)基礎(chǔ)2、包含多個(gè)子目標(biāo)的問(wèn)題求解過(guò)程goal: 事實(shí)1,事實(shí)2,事實(shí)n3、示例dish(pork).dish(fish).main(rice).main(bread).fruit(apple).fruit(orange).meal(D, M, F) if dish(D), main(M), fruit(F).goal: meal(D, M, F)第二節(jié) PROLOG程序設(shè)計(jì)基礎(chǔ)五、規(guī)則的遞歸描述1、概念在規(guī)則中,將自身作為一個(gè)成份,則稱(chēng)此規(guī)則是遞歸的如:on(a4, a3).on(a3, a2).on(a2, a1).top(

10、An, A1) if on(An, A1).top(An, A1) if on(A2, A1), top(An, A2).goal: top(a4, a1)a1a2a3a4第二節(jié) PROLOG程序設(shè)計(jì)基礎(chǔ)2、示例(1)求power(0,1).power(N,Y) if N1=N-1, power(N1, Y1), Y=N*Y1goal: power(2, Y)Y=2(2) 求表的長(zhǎng)度length(, 0).length(HT, X) if length(T, X1), X=X1+1goal: length(a,b,c, X)X=3第二節(jié) PROLOG程序設(shè)計(jì)基礎(chǔ)(3)x是否是表中的一個(gè)memb

11、er(X, X_).member(X, _Y) if member(X, Y).goal: member(b, a,b,c)yes(4) 求表中最后一個(gè)元素last(X, X).last(YZ, P) if last(Z, P).goal: last(a,b,c, Y)Y=c第二節(jié) PROLOG程序設(shè)計(jì)基礎(chǔ)(5)表的連接append(, L, L) .append(HL1, L2, HL3, ) if append(L1, L2, L3)goal: append(L1, L2, a,b,c)第三節(jié) 對(duì)回溯的控制一、截?cái)?、示例predicates person(symbol, symbol)c

12、lauses person(z, m). person(y, w). person(c, w). person(l, m).goal: person(A,_), person(B,_), ABgoal: person(A,_), person(B,_), AB, !A=z, B=yA=z,B=yA=z,B=cA=z,B=lA=y,B=zA=y,B=cA=y,B=lA=c,B=zA=c,B=yA=c,B=lA=l,B=zA=l,B=yA=l,B=c第三節(jié) 對(duì)回溯的控制2、“!”的概念“!”表示截?cái)?,系統(tǒng)內(nèi)部謂詞,不帶任何變?cè)鳛槟繕?biāo),求解立即成功,即該謂詞總是取真值成功后,不能回溯,即穿過(guò)!的回

13、溯是不可能的goal: h1, h2, !, h3, h4第三節(jié) 對(duì)回溯的控制predicates person(symbol, symbol)clauses person(z, m). person(y, w). person(c, w). person(l, m).goal: person(A,_), person(B,_), ABgoal: person(A,_), person(B,_), AB, !goal: person(A,_), !, person(B,_), ABgoal: person(A,_), person(B,_), !, ABgoal: !, person(A,_)

14、, person(B,_), AB12 個(gè)解1個(gè)解3個(gè)解無(wú)解12個(gè)解第三節(jié) 對(duì)回溯的控制二、失敗1、示例predicates person(symbol, symbol) outputclauses person(z, m). person(y, w). person(c, w). person(l, m). output if person(X,_), write(“姓名:”, X), nlgoal: output姓名:zyesgoal: person(X,_),write(“姓名:”),nl姓名:z姓名:y姓名:c姓名:l第三節(jié) 對(duì)回溯的控制predicates person(symbol

15、, symbol) outputclauses person(z, m). person(y, w). person(c, w). person(l, m). output if person(X,_), write(“姓名:”, X), nl, failgoal: output 姓名:z 姓名:y 姓名:c 姓名:l no第三節(jié) 對(duì)回溯的控制2、”fail”的概念是系統(tǒng)內(nèi)部謂詞,不帶任何變?cè)?,表示失敗作為目?biāo),求解立即失敗,引起回溯goal: h1, h2, fail, h33、!與fail相結(jié)合的例子not-equal(X,Y) if equal(X,Y), !, fail.not-equ

16、al(X,Y).equal(X,X).goal: not-equal(6,7)yesgoal: not-equal(6,6)no第四節(jié) PROLOG的基本程序段一、常量段用來(lái)說(shuō)明符號(hào)常量由“constant”標(biāo)識(shí)在常量說(shuō)明中,系統(tǒng)不區(qū)分大小寫(xiě)可有多個(gè)常量段每個(gè)常量要先定義后使用例如:constantpi=3.14159zero=0num=50第四節(jié) PROLOG的基本程序段二、域段由domains標(biāo)識(shí)1、標(biāo)準(zhǔn)域char標(biāo)準(zhǔn)ASCII碼中任意一個(gè)字符,被單引號(hào)括起來(lái)integerrealstring由雙引號(hào)括起來(lái)的字符序列symbol以小寫(xiě)字母開(kāi)始,由若干字母、數(shù)字、下劃線(xiàn)組成的序列雙引號(hào)括起來(lái)

17、的字符序列若謂詞參數(shù)采用標(biāo)準(zhǔn)域,則域段可省略若謂詞參數(shù)采用非標(biāo)準(zhǔn)域,則需在域段中說(shuō)明第四節(jié) PROLOG的基本程序段2、表域=*例如:domains myint=integer mylist=myint*predicatesmember(myint, mylist)clausesmember(X,X_).member(X,_Y) if member(X,Y) domains mylist=integer*predicatesmember(integer, mylist)第四節(jié) PROLOG的基本程序段3、復(fù)合對(duì)象域=(, , ,) 例如:domains person=person(name,address)name=name(first,last)address=address(street,city,state)street=street(number,streetname)city,state,streetname=stringfirst,last=stringnum

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論