版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第四章 PROLOG語言與智能程序設(shè)計第一節(jié) PROLOG語言的基本知識第二節(jié) PROLOG程序設(shè)計基礎(chǔ)第三節(jié) 對回溯的控制第四節(jié) PROLOG的基本程序段第一節(jié) PROLOG語言的基本知識一、PROLOG語言簡介二、PROLOG語言的特點(diǎn)1、PROLOG語言是一種描述型語言2、數(shù)據(jù)和程序是統(tǒng)一的3、自動實現(xiàn)模式匹配和回溯4、程序易于編寫和閱讀5、語句類型少,語法簡明第一節(jié) PROLOG語言的基本知識三、PROLOG語言的三種基本語句1、事實含義表示對象具有某種性質(zhì),或某幾個對象之間的關(guān)系形式謂詞(對象1,對象2,對象n),n為任意正整數(shù) 裸謂詞注意:對象之間用逗號分開全部對象用括號括住謂詞必
2、須以小寫字母開頭每個事實都用一個實心句點(diǎn)結(jié)束第一節(jié) PROLOG語言的基本知識示例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語言的基本知識最簡單的PROLOG程序由兩部分組成謂詞部分定義謂詞predicates name(symbol,symbol, )字句部分列出所有事實clauses name(對象1,對象2, ).第一節(jié) PROLOG語言的基本知識一個簡單的程序predicatesis(symbol,symbol)h
3、as(symbol,symbol)clausesis(“王”,”年齡小”).is(“劉”,”個頭高”).is(“李”,”有音樂天才”).has(“張”,”書”).goal: is(“劉”,”個頭高”)yesgoal: is(“王”,”有音樂天才”)nogoal: has(“張”,”書”)yesgoal: has(“書”,”張”)no第一節(jié) PROLOG語言的基本知識2、規(guī)則含義表示事物成立所要遵循的法則,即事物之間的新關(guān)系形式事實D if 事實A,事實B,事實C,事實D :- 事實A,事實B,事實C,注意:規(guī)則頭只能有一個事實規(guī)則體部可有多個事實規(guī)則體中各個事實之間用逗號連接表示“與”關(guān)系每個
4、規(guī)則都用一個實心句點(diǎn)結(jié)束第一節(jié) PROLOG語言的基本知識示例predicatesmother(symbol,symbol)grandmother(symbol,symbol)clausesmother(“錢”,”孫”).mother(“孫”,”李”).mother(“王”,”張”).grandmother(X,Y) if mother(X,Z), mother(Z,Y)goal: grandmother(“錢”,”李”)yesgoal: grandmother(“孫”,”張”)no第一節(jié) PROLOG語言的基本知識3、詢問含義詢問對象之間某種關(guān)系是否成立的疑問句形式goal: 事實1,事實2
5、,事實3,事實n n為任意正整數(shù) 注意:各個事實之間用逗號連接表示“與”關(guān)系表示:“事實1,事實2,事實3,事實n”同時成立嗎? 第一節(jié) PROLOG語言的基本知識四、項1、項的定義項= 常量原子:對象的名字、謂詞函數(shù)名(小寫字母開頭) 數(shù)字變量暫時不能命名或不需要命名的對象以大寫字母開頭匿名變量:on(_,a); mother(_,”李”)自由變量和約束變量第一節(jié) PROLOG語言的基本知識結(jié)構(gòu)又稱復(fù)合項,是由一組其他對象組成的單個對象包括:函數(shù)項:readchar(X)、mother(“李”, “孫”)表:a,b,c表達(dá)式:2*3+17結(jié)構(gòu)的嵌套accident(date(year,mon
6、th,day),who,place)第一節(jié) PROLOG語言的基本知識2、項的匹配規(guī)則(1)若A、B是項,A是自由變量,則B無論是何值,A可以被B匹配(2)常量與自身匹配成功(3)結(jié)構(gòu)的每一對應(yīng)成分匹配,則匹配成功第一節(jié) PROLOG語言的基本知識五、表1、概念表是具有相同類型對象的有序集合如:1,2,3、a,b,c、a,b(f,c),d、2、表頭、表尾表頭表中第一個元素表尾表中的其余部分,可以是另一張表3、表的匹配表中的常量完全相同才匹配表中的變量可與任何對象匹配表頭只與一個分量匹配,表尾可與一個表匹配第二節(jié) PROLOG程序設(shè)計基礎(chǔ)一、PROLOG程序的組成1、前提部分(條件)包括有關(guān)的事
7、實和規(guī)則2、問題部分(目標(biāo))問題求解的目標(biāo)結(jié)果二、PROLOG程序的設(shè)計步驟1、說明事實2、定義規(guī)則3、明確目標(biāo)第二節(jié) PROLOG程序設(shè)計基礎(chǔ)三、判定規(guī)則中變量值的原則1、在同一條規(guī)則中,所有相同名字的變量具有相同的內(nèi)容2、如果規(guī)則頭中的變量被約束了,則規(guī)則體中的同名變量也被約束為相同的內(nèi)容3、當(dāng)規(guī)則頭中的變量未被約束時,如果規(guī)則體中的同名變量被約束了,則規(guī)則頭中的同名變量和規(guī)則體中的其他同名變量也被約束為相同的內(nèi)容4、如果多條規(guī)則中有相同名字的變量,則這些同名變量不相關(guān)5、只有規(guī)則在使用時,規(guī)則中的變量才被約束第二節(jié) PROLOG程序設(shè)計基礎(chǔ)四、PROLOG程序的目標(biāo)求解過程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è)計基礎(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è)計基礎(chǔ)2、包含多個子目標(biāo)的問題求解過程goal: 事實1,事實2,事實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è)計基礎(chǔ)五、規(guī)則的遞歸描述1、概念在規(guī)則中,將自身作為一個成份,則稱此規(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è)計基礎(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) 求表的長度length(, 0).length(HT, X) if length(T, X1), X=X1+1goal: length(a,b,c, X)X=3第二節(jié) PROLOG程序設(shè)計基礎(chǔ)(3)x是否是表中的一個memb
11、er(X, X_).member(X, _Y) if member(X, Y).goal: member(b, a,b,c)yes(4) 求表中最后一個元素last(X, X).last(YZ, P) if last(Z, P).goal: last(a,b,c, Y)Y=c第二節(jié) PROLOG程序設(shè)計基礎(chǔ)(5)表的連接append(, L, L) .append(HL1, L2, HL3, ) if append(L1, L2, L3)goal: append(L1, L2, a,b,c)第三節(jié) 對回溯的控制一、截斷1、示例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é) 對回溯的控制2、“!”的概念“!”表示截斷,系統(tǒng)內(nèi)部謂詞,不帶任何變元作為目標(biāo),求解立即成功,即該謂詞總是取真值成功后,不能回溯,即穿過!的回
13、溯是不可能的goal: h1, h2, !, h3, h4第三節(jié) 對回溯的控制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 個解1個解3個解無解12個解第三節(jié) 對回溯的控制二、失敗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é) 對回溯的控制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é) 對回溯的控制2、”fail”的概念是系統(tǒng)內(nèi)部謂詞,不帶任何變元,表示失敗作為目標(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的基本程序段一、常量段用來說明符號常量由“constant”標(biāo)識在常量說明中,系統(tǒng)不區(qū)分大小寫可有多個常量段每個常量要先定義后使用例如:constantpi=3.14159zero=0num=50第四節(jié) PROLOG的基本程序段二、域段由domains標(biāo)識1、標(biāo)準(zhǔn)域char標(biāo)準(zhǔn)ASCII碼中任意一個字符,被單引號括起來integerrealstring由雙引號括起來的字符序列symbol以小寫字母開始,由若干字母、數(shù)字、下劃線組成的序列雙引號括起來
17、的字符序列若謂詞參數(shù)采用標(biāo)準(zhǔn)域,則域段可省略若謂詞參數(shù)采用非標(biāo)準(zhǔn)域,則需在域段中說明第四節(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ù)合對象域=(, , ,) 例如: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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度南京企業(yè)總部辦公室高端裝修合同4篇
- 2025版門衛(wèi)突發(fā)事件應(yīng)對合同范本4篇
- 2025年度智能穿戴設(shè)備研發(fā)與制造承攬服務(wù)合同范本4篇
- 擔(dān)保合同協(xié)議書(2篇)
- 二零二五版智能門禁系統(tǒng)研發(fā)與定制合同全文4篇
- 二零二五年度出租車行業(yè)司機(jī)招聘與綠色出行倡導(dǎo)合同3篇
- 二零二五年度門類安裝工程質(zhì)量保證合同4篇
- 2025年棉花產(chǎn)業(yè)扶貧項目運(yùn)輸保障合同書2篇
- 二零二五年度排水設(shè)施安全保障與應(yīng)急預(yù)案合同4篇
- 二零二五年度土地租賃合同糾紛調(diào)解服務(wù)協(xié)議
- 家具生產(chǎn)車間規(guī)章制度
- (高清版)JTGT 3360-01-2018 公路橋梁抗風(fēng)設(shè)計規(guī)范
- 小紅書違禁詞清單(2024年)
- 胰島素注射的護(hù)理
- 云南省普通高中學(xué)生綜合素質(zhì)評價-基本素質(zhì)評價表
- 2024年消防產(chǎn)品項目營銷策劃方案
- 聞道課件播放器
- 03軸流式壓氣機(jī)b特性
- 五星級酒店收入測算f
- 大數(shù)據(jù)與人工智能ppt
- 人教版八年級下冊第一單元英語Unit1 單元設(shè)計
評論
0/150
提交評論