用于人工智能的Prolog語(yǔ)言課件_第1頁(yè)
用于人工智能的Prolog語(yǔ)言課件_第2頁(yè)
用于人工智能的Prolog語(yǔ)言課件_第3頁(yè)
用于人工智能的Prolog語(yǔ)言課件_第4頁(yè)
用于人工智能的Prolog語(yǔ)言課件_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

用于人工智能的Prolog語(yǔ)言歸結(jié)原理與Prolog語(yǔ)言家庭關(guān)系程序示例TurboProlog程序結(jié)構(gòu)表與遞歸Prolog程序分析本章主要內(nèi)容:文件與數(shù)據(jù)庫(kù)字符串處理回溯及控制輸入與輸出Prolog是一種邏輯程序設(shè)計(jì)語(yǔ)言,基于一階謂詞邏輯,是典型的敘述型語(yǔ)言(DeclarationLanguage)。Prolog語(yǔ)言的特點(diǎn):(1)建立在一階謂詞邏輯和歸結(jié)原理基礎(chǔ)上,有自動(dòng)推理功能。(2)用Prolog設(shè)計(jì)應(yīng)用程序時(shí),僅需指明領(lǐng)域中各對(duì)象間的關(guān)系和決策規(guī)則,而應(yīng)用這些知識(shí)的推理由Prolog完成。(3)Prolog應(yīng)用程序,由數(shù)據(jù)庫(kù)和規(guī)則庫(kù)組成。(4)Prolog程序設(shè)計(jì)要做三件事,即說(shuō)明事實(shí)、定義規(guī)則、提出問(wèn)題。4.1歸結(jié)原理與Prolog語(yǔ)言Prolog有三種形式的語(yǔ)句:1. B:-A1,A2,…,An.含義是A1

A2...An

B,相當(dāng)于~A1~A2…~An

B??梢曌魅斯ぶ悄芟到y(tǒng)中的推理規(guī)則。也可將該句看作一個(gè)過(guò)程,B為過(guò)程頭,是過(guò)程名,而{A1,A2,…,An}為過(guò)程體。2. A1,A2,…,An.含義是A1

A2...An

F,相當(dāng)于~A1~A2…~An,可視作推理的目標(biāo),或稱目標(biāo)子句。3. B.含義是公式B無(wú)條件地為真??梢曌饕阎氖聦?shí)。x(M(x)R(x))M(“張三”)R(“張三”)如三段論:推理規(guī)則: R(X):-M(X).事實(shí): M("張三").目標(biāo): R("張三").Prolog語(yǔ)句:用Prolog證明三段論:推理規(guī)則:R(X):-M(X).事實(shí): M("張三").目標(biāo): R("張三"). M("張三").?完整的Prolog程序:predicates M(symbol) R(symbol)clauses R(X):-M(X). M("zhsan").goal R("zhsan").運(yùn)行4.2家庭關(guān)系程序示例下圖是一個(gè)表示家庭關(guān)系的實(shí)例:PamTomAnnBobLizPatJim parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim).用Prolog語(yǔ)句表示為:完整的Prolog程序:predicates parent(symbol,symbol)clauses parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim).此程序可以回答的問(wèn)題:1.bob是pat的父母嗎?parent(bob,pat).2.liz是pat的父母嗎?parent(liz,pat).3.誰(shuí)是liz的父母?parent(X,liz).4.誰(shuí)是誰(shuí)的父母?parent(X,Y).1.系統(tǒng)回答2.系統(tǒng)回答3.系統(tǒng)回答4.系統(tǒng)回答5.誰(shuí)是jim的祖父母?分析:程序中并沒(méi)有直接的祖父母關(guān)系。此問(wèn)題可分兩步:(1)誰(shuí)是jim的父母?假設(shè)是Y,(2)誰(shuí)是Y的父母?假設(shè)是X,XjimYparentparentgrandparentProlog目標(biāo)語(yǔ)句:parent(Y,jim),parent(X,Y).6.類似的問(wèn)題可以是:“誰(shuí)是tom的孫子?”prolog目標(biāo)語(yǔ)句:parent(tom,X),parent(X,Y).5.系統(tǒng)回答6.系統(tǒng)回答parent(pam,bob).parent(tom,bob).parent(tom,liz).parent(bob,ann).parent(bob,pat).parent(pat,jim).clausesPredicates parent(symbol)clauses parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim).male(tom).male(bob).male(jim).female(pam).female(liz).female(pat).female(ann).在示例程序中,添加有關(guān)性別的信息:關(guān)于sister的規(guī)則定義:predicates parent(symbol,symbol) sister(symbol,symbol) female(symbol) male(symbol)

clauses parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim).

male(tom). male(bob). male(jim). female(pam). female(liz). female(ann). female(pat).

sister(X,Y):- parent(Z,X), parent(Z,Y), female(X).goal sister(X,pat).運(yùn)行Pat的姐妹是誰(shuí)?mother規(guī)則:對(duì)所有的X和Y,X是Y的母親,如果X是Y的父母,并且,X為女性。用prolog規(guī)則表示為:mother(X,Y):- parent(X,Y), female(X).predicates parent(symbol,symbol)

mother(symbol,symbol) female(symbol) male(symbol)clauses parent(pam,bob). parent(tom,bob). parent(tom,liz). parent(bob,ann). parent(bob,pat). parent(pat,jim). mother(X,Y):- parent(X,Y), female(X).male(tom).male(bob).male(jim).female(pam).female(liz).female(ann).female(pat).goal mother(pat,X).Pat是誰(shuí)的母親?運(yùn)行4.3TurboProlog程序結(jié)構(gòu)一個(gè)TurboProlog程序通常包括5個(gè)部分。如下:/* 注釋 */domains

域說(shuō)明database 數(shù)據(jù)庫(kù)說(shuō)明predicates 謂詞說(shuō)明goal 目標(biāo)說(shuō)明clauses 子句說(shuō)明/* 注釋 */1.域說(shuō)明部分,說(shuō)明謂詞對(duì)象的數(shù)據(jù)類型。2.數(shù)據(jù)庫(kù)說(shuō)明部分,包含一些數(shù)據(jù)庫(kù)謂詞的定義,是說(shuō)明用于動(dòng)態(tài)數(shù)據(jù)庫(kù)管理的謂詞。如果程序不需要?jiǎng)討B(tài)數(shù)據(jù)庫(kù),該部分可省略。3.謂詞說(shuō)明部分,定義程序中除內(nèi)部謂詞以外的所有謂詞。4.在目標(biāo)部分,說(shuō)明程序的目標(biāo)。一個(gè)程序目標(biāo)可以由多個(gè)字目標(biāo)復(fù)合而成。5.子句部分,列出全部事實(shí)和規(guī)則,也可看作是程序的靜態(tài)數(shù)據(jù)。/*程序名:Wordsmith文件名:*//*目標(biāo):查找并打印一單詞的同義詞或反義詞。*/domains word,syn,ant=symbolpredicates synonym(word,syn) antonym(word,ant)goal synonym(brave,X), antonym(brave,Y), write("brave的同義詞是:",X),nl, write("brave的反義詞是:",Y),nl.clauses synonym(brave,daring). synonym(honest,truthful). synonym(modern,new). synonym(rare,uncommon). antonym(brave,cowardly). antonym(honest,dishonest). antonym(mordern,ancient). antonym(rare,common).4.4TurboProlog程序分析/*程序名:Thesaurus文件名:*//*目標(biāo):建立一個(gè)打印單詞的同義詞和反義詞的小詞典。*/domains word,syn1,syn2,syn3, ant1,ant2,ant3=symbolpredicates synonym(word,syn1,syn2,syn3) antonym(word,ant1,ant2,ant3)goal synonym(brave,S1,S2,S3), antonym(brave,A1,A2,A3), write("brave的同義詞是:"),nl, write(S1,",",S2,",",S3,","), write("brave的反義詞是:"),nl, write(A1,",",A2,",",A3,"."),nl.

clauses synonym(brave,daring,defiant,courageous). synonym(honest,truthful,open,sincere). synonym(modern,new,novel,recent). synonym(rare,uncommon,scrace,infrequent). antonym(brave,cowardly,fearful,timid). antonym(honest,dishonest,crooked,deceltful). antonym(mordern,ancient,old,obsolete). antonym(rare,common,ordinary,ubiquitous). 多元謂詞、多元子句/*程序名:Presidents文件名:*//*目標(biāo):使用混合對(duì)象類型舉例。*/domains name,party,state=symbol birth_year,year_in,year_out=integerpredicates president(name,party,state,birth_year,year_in,year_out)goal president(X,democrat,S,Yb,Yi,Yo),nl, write(X,"-democrat"),nl, write("State-",S),nl, write("Birth_year-",Yb),nl, write("Year_in-",Yi),nl, write("Year_out-",Yo),nl,nl.clauses president(elsenhower,republican,texas,1890,1953,1961). president(kennedy,democrat,massachusetts,1917,1961,1963). president(johnson,democrat,texas,1908,1963,1969). president(nixon,republican,california,1913,1969,1974). president(ford,republican,nebraska,1913,1974,1977). president(carter,democrat,georgia,1924,1977,1981). 混合域的使用domains man=symbolpredicates choice(man) short_height(man) medium_height(man) tall_height(man) black_hair(man) brown_hair(man) blond_hair(man) old_car(man) new_car(man) sports_car(man) kathy_choice(man) who_is_the_choicegoal who_is_the_choice.clauses /*事實(shí)*/ choice(bill). choice(jim). choice(mark). choice(robert). choice(willy).

/*規(guī)則*/who_is_the_choice:- kathy_choice(Choice), write("Kathy'schoiceis",Choice,"."), nl.

kathy_choice(Choice):- choice(Choice), tall_height(Choice), blond_hair(Choice), sports_car(Choice).choice(tom).choice(frank).short_height(mark).short_height(willy).medium_height(jim).medium_height(tom). tall_height(jim).tall_height(robert).tall_height(frank).black_hair(bill).black_hair(willy).brown_hair(jim).brown_hair(tom).blond_hair(mark).blond_hair(robert).blond_hair(frank).new_car(mark).new_car(willy).new_car(frank).old_car(mark).old_car(tom).sports_car(jim).sports_car(robert).簡(jiǎn)單數(shù)據(jù)庫(kù)/*程序名:Europair文件名:*//*目標(biāo):否定謂詞應(yīng)用舉例*/domains country=symbolpredicates euro_pair(country,country) border(country,country) find_non_border_pairgoal find_non_border_pair.clauses euro_pair("France","Germany"). euro_pair("France","Spain"). euro_pair("France","Italy"). euro_pair("Germany","Spain"). euro_pair("Germany","Italy"). euro_pair("Spain","Italy"). border("France","Germany"). border("France","Spain"). border("France","Italy"). find_non_border_pair:- euro_pair(X,Y), not(border(X,Y)), write(X,"--",Y),nl.

否定謂詞的應(yīng)用personal_librarybooktitleauthorpublisheryear域結(jié)構(gòu)圖域第0層(結(jié)構(gòu))第1層(對(duì)象)DomainStructureDiagramcollectioncollectorbooktitleauthorpublisheryear謂詞結(jié)構(gòu)圖PredicateStructureDiagram謂詞(主函子)函子第0層第1層第2層domains personal_library=book(title,author,publication) publication=publication(publisher,year) collector,title,author,publisher=symbol year=integerpredicates collection(collector,personal_library)clauses collection(kahn,book("TheComputerandtheBrain", "vonNeumann", publication("YaleUniversityPress",1958))). collection(kahn,book("SymbolicLogic", "LewisCarroll", publication("DoverPublications",1958))). collection(john,book("Database:APrimer", "C.J.Date", publication("Addison-Wesley",1983))). collection(john,book("Problem-SolvingMethodsinAI", "NilsNilsson", publication("McGraw-Hill",1971))). collection(smith,book("Alice,inWonderland", "LewisCarroll", publication("TheNewAmericanLibrary",1960))). collection(smith,book("FablesofAesop", "Aesop-Calder", publication("DoverPublications",1967))).三層域結(jié)構(gòu)和四層謂詞結(jié)構(gòu)4.5表與遞歸表是含有任意數(shù)目的其他對(duì)象的一個(gè)對(duì)象。一個(gè)包含1,2,3的表可被寫成:[1,2,3]表中的每個(gè)項(xiàng)被稱為一個(gè)元素。在域說(shuō)明中需要對(duì)表類型進(jìn)行說(shuō)明。如:domains integerlist=integer*predicates number(integerlist)表頭:是表中的第一個(gè)元素。如:表[a,b,c]中a是表頭。表尾:是表中除表頭外的另一張表。如:表[a,b,c]中[b,c]是表尾??毡恚簺](méi)有元素的表[]。對(duì)于表[c],c是表頭,[]是表尾。[a,b,c,d,]a[b,c,d,]b[c,d,]c[d]d[]Prolog提供一種使表頭和表尾明確

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論