




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
普外科輪轉護士入科宣教普外科輪轉護士入科宣教1普外科輪轉護士入科宣教課件2普外科輪轉護士入科宣教課件3普外科輪轉護士入科宣教課件4普外科輪轉護士入科宣教課件5普外科輪轉護士入科宣教課件6普外科輪轉護士入科宣教課件7普外科輪轉護士入科宣教課件8普外科輪轉護士入科宣教課件9普外科輪轉護士入科宣教課件10普外科輪轉護士入科宣教課件11普外科輪轉護士入科宣教課件12普外科輪轉護士入科宣教課件13普外科輪轉護士入科宣教課件14人工智能ArtificialIntelligence(AI)2022/11/17人工智能2022/11/1015Prolog語言簡介
Prolog語言是一種以一階謂詞為基礎的邏輯性語言(ProgramminginLogic)
2022/11/17Prolog語言簡介Prolog語言是一種以一階謂詞為基16Prolog語言的特點Prolog語言的基本內容簡單的例子2022/11/17Prolog語言的特點2022/11/1017Prolog語言(或者系統(tǒng))是以一階謂詞邏輯的Horn
子句集為語法,以Robinson的消解原理為工具,加上深度優(yōu)先的控制策略而形成的人工智能通用程序設計語言
Prolog語言的特點2022/11/17Prolog語言(或者系統(tǒng))是以一階謂詞邏輯的Horn子句18Horn子句集消解原理深度優(yōu)先Prolog系統(tǒng)2022/11/17Horn子句集消解原理深度優(yōu)先Prolog系統(tǒng)2022/1119Prolog具有下列特點:
①是一種描述性語言。只需要告訴“系統(tǒng)做什么”,不要告訴系統(tǒng)“如何做”②數據與程序的統(tǒng)一表達。提供一種統(tǒng)一的符號結構“項”,數據與程序都是由項組成
2022/11/17Prolog具有下列特點:①是一種描述性語言。只需要告訴20③自動實現(xiàn)模式匹配與回溯。這是人工智能中最常用的兩項操作,Prolog自動實現(xiàn)這些操作④程序易于編寫與閱讀。它是面向人的自然語言
⑤語句句型少,語法簡明。只有三種句型
2022/11/17③自動實現(xiàn)模式匹配與回溯。這是人工智能中最常用的兩項操作,21參考資料:雷英杰,張雷,邢清華,孫金萍。VisualProlog語言教程。西安:陜西科學技術出版社,2002年2月(380頁,35元)雷英杰,邢清華,孫金萍,張雷。VisualProlog編程、環(huán)境及接口。北京:國防工業(yè)出版社,2004年1月(412頁,36元)2022/11/17參考資料:2022/11/1022Prolog語言的基本內容1項2Prolog中的語句3表結構4Prolog程序的結構5常用內部謂詞6Prolog程序設計步驟2022/11/17Prolog語言的基本內容2022/11/1023符號說明:“::=”表示“定義為”“|”表示“或”,可選“{}”表示“重復或者出現(xiàn)多個”1項
2022/11/17符號說明:1項2022/11/1024項的定義:<項>::=<常量>|<變量>|<復合項>2022/11/17項的定義:2022/11/1025<常量>::=<原子>|<數><原子>::=
<標識符原子>|<字符串原子>|<特殊原子><項>::=<常量>|<變量>|<復合項>2022/11/17<常量>::=<原子>|<數><項>::=<常量>|26命名:用小寫字母或者小寫字母開頭的小寫字母數字串用途:用于標識對象的名字、謂詞(對象間的關系)或函數名標識符原子例:john,marry,classmate,teacher2022/11/17命名:用小寫字母或者小寫字母開頭的小寫字母數字串標識符原子例27字符串原子是用引號括起來的符號串特殊原子指一些特殊符號,如+、-、*、
/等
2022/11/17字符串原子是用引號括起來的符號串2022/11/1028變量:用于表示暫時不能命名或者不需要命名的對象,用大寫字母開頭
<項>::=<常量>|<變量>|<復合項>2022/11/17變量:用于表示暫時不能命名或者不需要命名的對象,用大寫字母開29特殊變量:空變量,記作:“_”含義:我們對問題的某一個變量的值不關心
2022/11/17特殊變量:空變量,記作:“_”2022/11/1030<復合項>::=<原子>(<項>{,<項>})|
<項><原子><項>
{<原子><項>}
<項>::=<常量>|<變量>|<復合項>2022/11/17<復合項>::=<項>::=<常量>|<變量>|31復合項:由一組其它對象組成的單個對象例:函數項:like(john,apple)表:[sa,sb],[1,2,3]表達式:(12+59)*49-962022/11/17復合項:由一組其它對象組成的單個對象2022/11/1032項常量變量復合項原子數標識符原子字符串原子特殊原子<原子>(<項>{,<項>})<項><原子><項>{<原子><項>}2022/11/17項常量變量復合項原子數標識符原子字符串原子特殊原子<原子>(332
Prolog中的語句
①事實:P.含義:無條件成立,恒為真例:like(monkey,banana)Prolog中的語句分成三種形式:2022/11/172Prolog中的語句①事實:P.Prolog中的語句34②規(guī)則:P:-P1,P2,…,Pn.“:-
”表示“蘊涵”“,”表示“合取”含義:若P1,…,Pn均為真時,P為真
2022/11/17②規(guī)則:P:-P1,P2,…,P35③問題(目標)GoalQ1,Q2,…,Qm.含義:待回答的問題,即Q1,…,Qm
同時為真嗎?2022/11/17③問題(目標)2022/11/1036從消解角度來看:①(事實)中,P是Horn子句2022/11/17從消解角度來看:2022/11/1037②(規(guī)則)可以表示為P1∧P2∧…∧PnP可以轉化為~P1∨~P2∨…∨~Pn∨P也是Horn子句,并受全稱量詞約束2022/11/17②(規(guī)則)可以表示為2022/11/1038③(問題)是
Q1∧…∧Qm受存在量詞約束,取非后~Q1∨…∨~Qm受全稱量詞約束,是Horn子句2022/11/17③(問題)是2022/11/1039Prolog三種形式的語言都是Horn子句問題求解就是Horn子句集消解2022/11/17Prolog三種形式的語言都是Horn子句2022/11/1403表結構
表:若干個元素的有序序列表中的元素:常量、變量、項、表
表用“[]”來表示,元素之間用逗號或者空格分開2022/11/173表結構表:若干個元素的有序序列2022/11/1041例:[1,2,3][a,b,c,d]2022/11/17例:2022/11/1042用符號“|
”來劃分表頭(第一個元素)和表尾(其余元素)特例:當只用一個元素時,表尾為空空表(無元素),既無表頭又無表尾
2022/11/17用符號“|”來劃分表頭(第一個元素)和表尾(其余元素)243例:P([the,cat,sat,down]).?-P([X|Y]).答案:X=the,Y=[cat,sat,down]
?-P([X,Y|Z]).答案:X=the,Y=cat,Z=[sat,down]
2022/11/17例:2022/11/10444Prolog程序的結構Prolog的程序分為兩部分:
前提部分:所有事實和規(guī)則
問題部分:目標子句序列
2022/11/174Prolog程序的結構Prolog的程序分為兩部分:245注意:這兩部分不能顛倒。必須前提部分寫在前面,問題部分寫在后面
2022/11/17注意:2022/11/1046likes(m,f).likes(m,w).(事實)likes(j,w).likes(j,s).goallikes(m,X),likes(j,X).(問題)問題:是否m
和j
都喜歡什么東西?(X=?)
fwsmj2022/11/17likes(m,f).fwsmj2022/11/1047Prolog的求解過程現(xiàn)在有兩個問題:likes(m,X)和likes(j,X))第一步:第一個問題likes(m,X)去與事實匹配(置換與合一),按順序得到{f/X}likes(m,f).likes(m,w).likes(j,w).likes(j,s).2022/11/17Prolog的求解過程likes(m,f).2022/1148第二步:f代替第二個問題likes(j,X)中的X,則得likes(j,f)。再與事實匹配,不能匹配,失敗,則回溯,忘掉剛才的匹配likes(m,f).likes(m,w).likes(j,w).likes(j,s).likes(m,X)likes(j,X)2022/11/17第二步:f代替第二個問題likes(j,X)中的X49第三步:回到第一個問題likes(m,X),重新匹配,得到{w/X}第四步:第二個問題變成likes(j,w)。再與事實匹配,成功第五步:答案就是X=wlikes(m,f).likes(m,w).likes(j,w).likes(j,s).likes(m,X)likes(j,X)2022/11/17第三步:回到第一個問題likes(m,X),重新匹配,50說明:實際運行中,要逐個試探(搜索),失敗則要回溯,成功也要回溯(求出所有解)2022/11/17說明:2022/11/1051例:father(a,b).a是b的父親father(c,d).brother(a,c).a與c是兄弟關系uncle(X,Y):-brother(X,Z),father(Z,Y).?-uncle(a,U).問題:
a
是誰的叔叔?(U=?
)2022/11/17例:2022/11/1052第一步:問題uncle(a,U)與事實逐個匹配,不成功Prolog的求解過程:father(a,b).father(c,d).brother(a,c).2022/11/17第一步:問題uncle(a,U)與事實逐個匹配,不成功P53第二步:與規(guī)則頭(左部)匹配,即尋找合一者,有{a/X,U/Y}轉化為兩個子問題:brother(a,Z)和father(Z,U)uncle(X,Y):-brother(X,Z),father(Z,Y).uncle(a,U)2022/11/17第二步:與規(guī)則頭(左部)匹配,即尋找合一者,有{a/X,54第一個子問題brother(a,Z)與事實匹配,得到{c/Z}代人第二個子問題,有father(c,U)。與事實匹配,得到{d/U},即U=d,解是:a是d的叔叔father(a,b).father(c,d).brother(a,c).brother(a,Z)father(Z,U)2022/11/17第一個子問題brother(a,Z)與事實匹配,得到{55Prolog的實現(xiàn)方法主要是:匹配與回溯匹配:合一過程、消解過程回溯:搜索,而且是深度優(yōu)先搜索2022/11/17Prolog的實現(xiàn)方法主要是:匹配與回溯2022/11/1056關于匹配的幾點說明:第一、一個變量被置換后,代入了另一個項,則稱該變量為實例化的變量2022/11/17關于匹配的幾點說明:2022/11/1057①若與另一個未實例化的變量匹配,則視為同一變量,兩者共享②若與另一個實例化的變量匹配,也變成了實例化的變量,且兩者同值③若與常量匹配,也變成了實例化變量,并取常量的值第二、一個未實例化的變量可以與任何項匹配:2022/11/17①若與另一個未實例化的變量匹配,則視為同一變量,兩者共享第二58第三、常量只能與相同的常量匹配第四、實例化的變量與另一個實例化的值相同的變量匹配,也可以與另一個未實例化的變量匹配,使另一個變量實例化,且約束值相同2022/11/17第三、常量只能與相同的常量匹配2022/11/10595常用的內部謂詞內部謂詞:Prolog系統(tǒng)本身定義的一些基本謂詞注意:可以直接使用,用戶不能修改2022/11/175常用的內部謂詞2022/11/1060①算術運算算術表達式由操作數(數、變量)、操作符和括號組成算術運算符號:“+、-、*、/”(加減乘除)2022/11/17①算術運算2022/11/1061優(yōu)先級:與通常的數學運算一致形式:中綴:X+Y*Z前綴:+(X,*(Y,Z))2022/11/17優(yōu)先級:與通常的數學運算一致2022/11/1062②比較謂詞eq(X,Y)X=Yne(X,Y)X<>Ygt(X,Y)X>Yls(X,Y)X<Y2022/11/17②比較謂詞2022/11/1063對于“=、<>”,X,Y可以取常量變量謂詞表2022/11/17對于“=、<>”,2022/11/1064第一、當一個變量已經實例化,則可以與任意未實例化的變量相等,且將其實例化(賦值功能)第二、兩者均未實例化,eq(X,Y)恒為真,并視為同一變量對于“=”(賦值與比較)的幾點說明:2022/11/17第一、當一個變量已經實例化,則可以與任意未實例化的變量相等,65第三、均以實例化,由當前值來決定第四、如果為表,要求對應的元素相等,才為真第五、如果是謂詞,謂詞同名,變元個數相等,對應的變元相等2022/11/17第三、均以實例化,由當前值來決定2022/11/1066③輸入輸出謂詞第一、write(X):向輸出設備輸出實例化結果第二、read(X):當X
未實例化時,輸入一個項當X
在輸入前已經實例化,則讀入項將與X
匹配,根據匹配的成功與否,決定其真假值
2022/11/17③輸入輸出謂詞2022/11/1067④謂詞cut與fail(特殊謂詞):cut(!):禁止回溯fail:強迫回溯2022/11/17④謂詞cut與fail(特殊謂詞):2022/11/1068第一、只允許作為一個子目標出現(xiàn)在程序中第二、第一次遇到它時,總是立刻被滿足,但是不能被重新滿足第三、用戶可以使用它來控制回溯方式,切斷一些不必要的回溯,提高程序運行效率關于cut的幾點說明:2022/11/17第一、只允許作為一個子目標出現(xiàn)在程序中關于cut的幾點說明:69關于fail的說明:作為一個子目標,使Prolog程序運行到fail,必定引起回溯2022/11/17關于fail的說明:2022/11/1070例:求1到n
之間的和定義一個二元謂詞sum(N,X),其中X
表示和答案是:X=21去掉“!”,會發(fā)生什么?sum(1,1):-!.sum(N,R):-N1=N-1,sum(N1,R1),R=R1+N.?-sum(6,X).2022/11/17例:求1到n之間的和答案是:X=21sum(1,1716Prolog程序設計步驟第一、說明事實:說明與待求解的問題有關的事實。例如,人物事及相互關系,對應于敘述性知識對應于Prolog程序的組成部分,設計步驟分為:2022/11/176Prolog程序設計步驟第一、說明事實:說明與待求解的72第二、定義規(guī)則:定義個體及其相互關系的推理規(guī)則,反映與待求解問題有關的過程性知識第三:確定目標(問題):提出待求解的問題或者確定邏輯推理的目標2022/11/17第二、定義規(guī)則:定義個體及其相互關系的推理規(guī)則,反映與待求解73程序的一般結構(組成部分)
VisualProlog程序包括三到四個基本程序段:第一、域段:說明謂詞變量的域(類型)第二、謂詞段:說明非標準謂詞(用戶自己的謂詞)2022/11/17程序的一般結構(組成部分)VisualProlog程序包74第三、子句段:核心部分,可以寫出事實與規(guī)則第四、目標段:設置內部目標2022/11/17第三、子句段:核心部分,可以寫出事實與規(guī)則2022/11/175域段(domains)Prolog語言中的域用于區(qū)分不同變量類型的數據相當于其它高級語言中的數據類型2022/11/17域段(domains)2022/11/1076基本標準域有:char:用單引號括起來的單個字符,例如,’a’integer:整數,范圍為32767到-32768real:實數,例如,86.72,5.1e+212022/11/17基本標準域有:2022/11/1077string:用雙引號括起來的字符序列
例:“IamfromNanjing”2022/11/17string:用雙引號括起來的字符序列2022/11/1078symbol:有兩種形式:以小寫字母開頭的字母、數字和下劃線組成的序列用雙引號括起來的字符串序列
2022/11/17symbol:有兩種形式:2022/11/1079Prolog中表示成下列形式:
integerlist=integer*“integer”說明表中元素的類型“*
”告訴編譯系統(tǒng),這是一張表
表:2022/11/17Prolog中表示成下列形式:表:2022/11/1080例domainstitle,author=symbolpages=integer注:每一個說明的最后無句號“.”2022/11/17例2022/11/1081謂詞段(predicates)說明用戶自己定義的謂詞說明謂詞變元的域2022/11/17謂詞段(predicates)2022/11/1082謂詞名:由小寫字母開頭,由字母、數字和下劃線組成(標識符原子)謂詞變元的類型標準域域段中說明的其它域2022/11/17謂詞名:2022/11/1083例:domainsperson=symbolpredicatesfather(person)或者
father(symbol)alphabet_position(char,integer)謂詞后面無句號“.”2022/11/17例:謂詞后面無句號“.”2022/11/1084子句段(clauses)由事實與規(guī)則組成說明:每一個事實或規(guī)則后面必須有句號“.
”
2022/11/17子句段(clauses)2022/11/1085例:clauseslikes(tom,football).classify(X,negative):-X<0.classify(X,positive):-X>0.
2022/11/17例:2022/11/1086目標段(goal)必須書寫一個目標段,作為源碼的一部分(內部目標)外部目標2022/11/17目標段(goal)2022/11/1087例goallikes(tom,X).2022/11/17例2022/11/1088注釋:多行注釋:/*……*/(C/C++中采用的符號)單行注釋:%(Matlab中采用的符號)2022/11/17注釋:2022/11/1089VisualProlog程序的基本結構:domains……(說明變量類型,無句號)predicates…..(說明謂詞,無句號)clauses…..(程序段,必須有句號)goal……(目標或問題,必須有句號)
2022/11/17VisualProlog程序的基本結構:2022/11/903例子
2022/11/173例子2022/11/1091普外科輪轉護士入科宣教普外科輪轉護士入科宣教92普外科輪轉護士入科宣教課件93普外科輪轉護士入科宣教課件94普外科輪轉護士入科宣教課件95普外科輪轉護士入科宣教課件96普外科輪轉護士入科宣教課件97普外科輪轉護士入科宣教課件98普外科輪轉護士入科宣教課件99普外科輪轉護士入科宣教課件100普外科輪轉護士入科宣教課件101普外科輪轉護士入科宣教課件102普外科輪轉護士入科宣教課件103普外科輪轉護士入科宣教課件104普外科輪轉護士入科宣教課件105人工智能ArtificialIntelligence(AI)2022/11/17人工智能2022/11/10106Prolog語言簡介
Prolog語言是一種以一階謂詞為基礎的邏輯性語言(ProgramminginLogic)
2022/11/17Prolog語言簡介Prolog語言是一種以一階謂詞為基107Prolog語言的特點Prolog語言的基本內容簡單的例子2022/11/17Prolog語言的特點2022/11/10108Prolog語言(或者系統(tǒng))是以一階謂詞邏輯的Horn
子句集為語法,以Robinson的消解原理為工具,加上深度優(yōu)先的控制策略而形成的人工智能通用程序設計語言
Prolog語言的特點2022/11/17Prolog語言(或者系統(tǒng))是以一階謂詞邏輯的Horn子句109Horn子句集消解原理深度優(yōu)先Prolog系統(tǒng)2022/11/17Horn子句集消解原理深度優(yōu)先Prolog系統(tǒng)2022/11110Prolog具有下列特點:
①是一種描述性語言。只需要告訴“系統(tǒng)做什么”,不要告訴系統(tǒng)“如何做”②數據與程序的統(tǒng)一表達。提供一種統(tǒng)一的符號結構“項”,數據與程序都是由項組成
2022/11/17Prolog具有下列特點:①是一種描述性語言。只需要告訴111③自動實現(xiàn)模式匹配與回溯。這是人工智能中最常用的兩項操作,Prolog自動實現(xiàn)這些操作④程序易于編寫與閱讀。它是面向人的自然語言
⑤語句句型少,語法簡明。只有三種句型
2022/11/17③自動實現(xiàn)模式匹配與回溯。這是人工智能中最常用的兩項操作,112參考資料:雷英杰,張雷,邢清華,孫金萍。VisualProlog語言教程。西安:陜西科學技術出版社,2002年2月(380頁,35元)雷英杰,邢清華,孫金萍,張雷。VisualProlog編程、環(huán)境及接口。北京:國防工業(yè)出版社,2004年1月(412頁,36元)2022/11/17參考資料:2022/11/10113Prolog語言的基本內容1項2Prolog中的語句3表結構4Prolog程序的結構5常用內部謂詞6Prolog程序設計步驟2022/11/17Prolog語言的基本內容2022/11/10114符號說明:“::=”表示“定義為”“|”表示“或”,可選“{}”表示“重復或者出現(xiàn)多個”1項
2022/11/17符號說明:1項2022/11/10115項的定義:<項>::=<常量>|<變量>|<復合項>2022/11/17項的定義:2022/11/10116<常量>::=<原子>|<數><原子>::=
<標識符原子>|<字符串原子>|<特殊原子><項>::=<常量>|<變量>|<復合項>2022/11/17<常量>::=<原子>|<數><項>::=<常量>|117命名:用小寫字母或者小寫字母開頭的小寫字母數字串用途:用于標識對象的名字、謂詞(對象間的關系)或函數名標識符原子例:john,marry,classmate,teacher2022/11/17命名:用小寫字母或者小寫字母開頭的小寫字母數字串標識符原子例118字符串原子是用引號括起來的符號串特殊原子指一些特殊符號,如+、-、*、
/等
2022/11/17字符串原子是用引號括起來的符號串2022/11/10119變量:用于表示暫時不能命名或者不需要命名的對象,用大寫字母開頭
<項>::=<常量>|<變量>|<復合項>2022/11/17變量:用于表示暫時不能命名或者不需要命名的對象,用大寫字母開120特殊變量:空變量,記作:“_”含義:我們對問題的某一個變量的值不關心
2022/11/17特殊變量:空變量,記作:“_”2022/11/10121<復合項>::=<原子>(<項>{,<項>})|
<項><原子><項>
{<原子><項>}
<項>::=<常量>|<變量>|<復合項>2022/11/17<復合項>::=<項>::=<常量>|<變量>|122復合項:由一組其它對象組成的單個對象例:函數項:like(john,apple)表:[sa,sb],[1,2,3]表達式:(12+59)*49-962022/11/17復合項:由一組其它對象組成的單個對象2022/11/10123項常量變量復合項原子數標識符原子字符串原子特殊原子<原子>(<項>{,<項>})<項><原子><項>{<原子><項>}2022/11/17項常量變量復合項原子數標識符原子字符串原子特殊原子<原子>(1242
Prolog中的語句
①事實:P.含義:無條件成立,恒為真例:like(monkey,banana)Prolog中的語句分成三種形式:2022/11/172Prolog中的語句①事實:P.Prolog中的語句125②規(guī)則:P:-P1,P2,…,Pn.“:-
”表示“蘊涵”“,”表示“合取”含義:若P1,…,Pn均為真時,P為真
2022/11/17②規(guī)則:P:-P1,P2,…,P126③問題(目標)GoalQ1,Q2,…,Qm.含義:待回答的問題,即Q1,…,Qm
同時為真嗎?2022/11/17③問題(目標)2022/11/10127從消解角度來看:①(事實)中,P是Horn子句2022/11/17從消解角度來看:2022/11/10128②(規(guī)則)可以表示為P1∧P2∧…∧PnP可以轉化為~P1∨~P2∨…∨~Pn∨P也是Horn子句,并受全稱量詞約束2022/11/17②(規(guī)則)可以表示為2022/11/10129③(問題)是
Q1∧…∧Qm受存在量詞約束,取非后~Q1∨…∨~Qm受全稱量詞約束,是Horn子句2022/11/17③(問題)是2022/11/10130Prolog三種形式的語言都是Horn子句問題求解就是Horn子句集消解2022/11/17Prolog三種形式的語言都是Horn子句2022/11/11313表結構
表:若干個元素的有序序列表中的元素:常量、變量、項、表
表用“[]”來表示,元素之間用逗號或者空格分開2022/11/173表結構表:若干個元素的有序序列2022/11/10132例:[1,2,3][a,b,c,d]2022/11/17例:2022/11/10133用符號“|
”來劃分表頭(第一個元素)和表尾(其余元素)特例:當只用一個元素時,表尾為空空表(無元素),既無表頭又無表尾
2022/11/17用符號“|”來劃分表頭(第一個元素)和表尾(其余元素)2134例:P([the,cat,sat,down]).?-P([X|Y]).答案:X=the,Y=[cat,sat,down]
?-P([X,Y|Z]).答案:X=the,Y=cat,Z=[sat,down]
2022/11/17例:2022/11/101354Prolog程序的結構Prolog的程序分為兩部分:
前提部分:所有事實和規(guī)則
問題部分:目標子句序列
2022/11/174Prolog程序的結構Prolog的程序分為兩部分:2136注意:這兩部分不能顛倒。必須前提部分寫在前面,問題部分寫在后面
2022/11/17注意:2022/11/10137likes(m,f).likes(m,w).(事實)likes(j,w).likes(j,s).goallikes(m,X),likes(j,X).(問題)問題:是否m
和j
都喜歡什么東西?(X=?)
fwsmj2022/11/17likes(m,f).fwsmj2022/11/10138Prolog的求解過程現(xiàn)在有兩個問題:likes(m,X)和likes(j,X))第一步:第一個問題likes(m,X)去與事實匹配(置換與合一),按順序得到{f/X}likes(m,f).likes(m,w).likes(j,w).likes(j,s).2022/11/17Prolog的求解過程likes(m,f).2022/11139第二步:f代替第二個問題likes(j,X)中的X,則得likes(j,f)。再與事實匹配,不能匹配,失敗,則回溯,忘掉剛才的匹配likes(m,f).likes(m,w).likes(j,w).likes(j,s).likes(m,X)likes(j,X)2022/11/17第二步:f代替第二個問題likes(j,X)中的X140第三步:回到第一個問題likes(m,X),重新匹配,得到{w/X}第四步:第二個問題變成likes(j,w)。再與事實匹配,成功第五步:答案就是X=wlikes(m,f).likes(m,w).likes(j,w).likes(j,s).likes(m,X)likes(j,X)2022/11/17第三步:回到第一個問題likes(m,X),重新匹配,141說明:實際運行中,要逐個試探(搜索),失敗則要回溯,成功也要回溯(求出所有解)2022/11/17說明:2022/11/10142例:father(a,b).a是b的父親father(c,d).brother(a,c).a與c是兄弟關系uncle(X,Y):-brother(X,Z),father(Z,Y).?-uncle(a,U).問題:
a
是誰的叔叔?(U=?
)2022/11/17例:2022/11/10143第一步:問題uncle(a,U)與事實逐個匹配,不成功Prolog的求解過程:father(a,b).father(c,d).brother(a,c).2022/11/17第一步:問題uncle(a,U)與事實逐個匹配,不成功P144第二步:與規(guī)則頭(左部)匹配,即尋找合一者,有{a/X,U/Y}轉化為兩個子問題:brother(a,Z)和father(Z,U)uncle(X,Y):-brother(X,Z),father(Z,Y).uncle(a,U)2022/11/17第二步:與規(guī)則頭(左部)匹配,即尋找合一者,有{a/X,145第一個子問題brother(a,Z)與事實匹配,得到{c/Z}代人第二個子問題,有father(c,U)。與事實匹配,得到{d/U},即U=d,解是:a是d的叔叔father(a,b).father(c,d).brother(a,c).brother(a,Z)father(Z,U)2022/11/17第一個子問題brother(a,Z)與事實匹配,得到{146Prolog的實現(xiàn)方法主要是:匹配與回溯匹配:合一過程、消解過程回溯:搜索,而且是深度優(yōu)先搜索2022/11/17Prolog的實現(xiàn)方法主要是:匹配與回溯2022/11/10147關于匹配的幾點說明:第一、一個變量被置換后,代入了另一個項,則稱該變量為實例化的變量2022/11/17關于匹配的幾點說明:2022/11/10148①若與另一個未實例化的變量匹配,則視為同一變量,兩者共享②若與另一個實例化的變量匹配,也變成了實例化的變量,且兩者同值③若與常量匹配,也變成了實例化變量,并取常量的值第二、一個未實例化的變量可以與任何項匹配:2022/11/17①若與另一個未實例化的變量匹配,則視為同一變量,兩者共享第二149第三、常量只能與相同的常量匹配第四、實例化的變量與另一個實例化的值相同的變量匹配,也可以與另一個未實例化的變量匹配,使另一個變量實例化,且約束值相同2022/11/17第三、常量只能與相同的常量匹配2022/11/101505常用的內部謂詞內部謂詞:Prolog系統(tǒng)本身定義的一些基本謂詞注意:可以直接使用,用戶不能修改2022/11/175常用的內部謂詞2022/11/10151①算術運算算術表達式由操作數(數、變量)、操作符和括號組成算術運算符號:“+、-、*、/”(加減乘除)2022/11/17①算術運算2022/11/10152優(yōu)先級:與通常的數學運算一致形式:中綴:X+Y*Z前綴:+(X,*(Y,Z))2022/11/17優(yōu)先級:與通常的數學運算一致2022/11/10153②比較謂詞eq(X,Y)X=Yne(X,Y)X<>Ygt(X,Y)X>Yls(X,Y)X<Y2022/11/17②比較謂詞2022/11/10154對于“=、<>”,X,Y可以取常量變量謂詞表2022/11/17對于“=、<>”,2022/11/10155第一、當一個變量已經實例化,則可以與任意未實例化的變量相等,且將其實例化(賦值功能)第二、兩者均未實例化,eq(X,Y)恒為真,并視為同一變量對于“=”(賦值與比較)的幾點說明:2022/11/17第一、當一個變量已經實例化,則可以與任意未實例化的變量相等,156第三、均以實例化,由當前值來決定第四、如果為表,要求對應的元素相等,才為真第五、如果是謂詞,謂詞同名,變元個數相等,對應的變元相等2022/11/17第三、均以實例化,由當前值來決定2022/11/10157③輸入輸出謂詞第一、write(X):向輸出設備輸出實例化結果第二、read(X):當X
未實例化時,輸入一個項當X
在輸入前已經實例化,則讀入項將與X
匹配,根據匹配的成功與否,決定其真假值
2022/11/17③輸入輸出謂詞2022/11/10158④謂詞cut與fail(特殊謂詞):cut(!):禁止回溯fail:強迫回溯2022/11/17④謂詞cut與fail(特殊謂詞):2022/11/10159第一、只允許作為一個子目標出現(xiàn)在程序中第二、第一次遇到它時,總是立刻被滿足,但是不能被重新滿足第三、用戶可以使用它來控制回溯方式,切斷一些不必要的回溯,提高程序運行效率關于cut的幾點說明:2022/11/17第一、只允許作為一個子目標出現(xiàn)在程序中關于cut的幾點說明:160關于fail的說明:作為一個子目標,使Prolog程序運行到fail,必定引起回溯2022/11/17關于fail的說明:2022/11/10161例:求1到n
之間的和定義一個二元謂詞sum(N,X),其中X
表示和答案是:X=21去掉“!”,會發(fā)生什么?sum(1,1):-!.sum(N,R):-N1=N-1,sum(N1,R1),R=R1+N.?-sum(6,X).2022/11/17例:求1到n之間的和答案是:X=21sum(1,11626Prolog程序設計步驟第一、說明事實:說明與待求解的問題有關的事實。例如,人物事及相互關系,對應于敘述性知識對應于Prolog程序的組成部分,設計步驟分為:2022/11/176Prolog程序設計步驟第一、說明事實:說明與待求解的163第二、定義規(guī)則:定義個體及其相互關系的推理規(guī)則,反映與待求解問題有關的過程性知識第三:確定目標(問題):提出待求解的問題或者確定邏輯推理的目標2022/11
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國食品及飼料添加劑行業(yè)運營狀況及發(fā)展趨勢分析報告
- 2025-2030年中國風力發(fā)電機組葉片裝置市場發(fā)展趨勢與十三五規(guī)劃研究報告
- 2025-2030年中國防火玻璃產業(yè)前景展望及未來投資規(guī)劃研究報告
- 2025-2030年中國鑄造粘結材料行業(yè)競爭格局及前景趨勢分析報告
- 2025-2030年中國金屬船舶市場前景規(guī)劃及發(fā)展趨勢預測報告
- 2025-2030年中國道路護欄行業(yè)發(fā)展現(xiàn)狀及前景趨勢分析報告
- 2025-2030年中國補血保健品市場十三五規(guī)劃與發(fā)展策略分析報告
- 2025-2030年中國脫臭餾出物的分離提取產物行業(yè)運行現(xiàn)狀及前景規(guī)劃分析報告
- 2025-2030年中國納米二氧化鈦市場運行狀況及發(fā)展趨勢預測報告
- 沐足店長合同范例
- 母嬰護理的職業(yè)道德
- 《商務溝通-策略、方法與案例》課件 第二章 口頭溝通
- 運灰安全管理制度模版(2篇)
- 2024年生態(tài)環(huán)境局公務員考試600題內部選題庫(A卷)
- 2024年湖南省公務員錄用考試《行測》真題及答案解析
- 工商企業(yè)管理畢業(yè)論文的范文
- 《物權法》本科題集
- 新能源汽車驅動電機及控制系統(tǒng)檢修課件 學習情境6:電機控制系統(tǒng)檢修
- 廚房菜品出品標準培訓
- 2024年福建省公務員錄用考試《行測》試題及答案解析
評論
0/150
提交評論