




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、2022-3-19人人 工工 智智 能能Artificial Intelligence (AI)2022-3-19Prolog 語言簡介語言簡介 Prolog語言語言是一種以一階謂詞為基礎(chǔ)的邏輯性語是一種以一階謂詞為基礎(chǔ)的邏輯性語言(言(Programming in Logic) 2022-3-19Prolog語言的特點語言的特點Prolog語言的基本內(nèi)容語言的基本內(nèi)容簡單的例子簡單的例子2022-3-19Prolog語言語言(或者(或者系統(tǒng))是以一階謂詞邏輯的系統(tǒng))是以一階謂詞邏輯的為語法,以為語法,以Robinson的的為工具,加上為工具,加上而形成的人而形成的人工智能通用程序設(shè)計語言工智
2、能通用程序設(shè)計語言 Prolog語言的特點語言的特點 2022-3-19Horn子句集子句集消解原理消解原理深度優(yōu)先深度優(yōu)先Prolog系統(tǒng)系統(tǒng)2022-3-19Prolog具有下列特點具有下列特點: 是一種描述性語言。只需要告訴是一種描述性語言。只需要告訴 “ “系統(tǒng)做什系統(tǒng)做什么么”,不要告訴系統(tǒng),不要告訴系統(tǒng) “ “如何做如何做” 數(shù)據(jù)與程序的統(tǒng)一表達。提供一種統(tǒng)一的符數(shù)據(jù)與程序的統(tǒng)一表達。提供一種統(tǒng)一的符號結(jié)構(gòu)號結(jié)構(gòu) “ “項項” ” ,數(shù)據(jù)與程序都是由項組成,數(shù)據(jù)與程序都是由項組成 2022-3-19 自動實現(xiàn)模式匹配與回溯。這是人工智能中最常自動實現(xiàn)模式匹配與回溯。這是人工智能中最
3、常用的兩項操作,用的兩項操作,Prolog自動實現(xiàn)這些操作自動實現(xiàn)這些操作 程序易于編寫與閱讀。它是面向人的自然語言程序易于編寫與閱讀。它是面向人的自然語言 語句句型少,語法簡明。只有語句句型少,語法簡明。只有三種句型三種句型 2022-3-19參考資料參考資料:1 雷英杰,張雷,邢清華,孫金萍。雷英杰,張雷,邢清華,孫金萍。Visual Prolog 語言教程語言教程。西安:陜西科學(xué)技術(shù)出版社,。西安:陜西科學(xué)技術(shù)出版社,2002年年2月(月(380頁,頁,35元)元)2 雷英杰,邢清華,孫金萍,張雷。雷英杰,邢清華,孫金萍,張雷。Visual Prolog 編程、環(huán)境及接口編程、環(huán)境及接口
4、。北京:國防工業(yè)出版社,。北京:國防工業(yè)出版社,2004年年1月(月(412頁,頁,36元)元)2022-3-19Prolog語言的基本內(nèi)容語言的基本內(nèi)容1 項項2 Prolog中的語句中的語句3 表結(jié)構(gòu)表結(jié)構(gòu)4 Prolog程序的結(jié)構(gòu)程序的結(jié)構(gòu)5 常用內(nèi)部謂詞常用內(nèi)部謂詞6 Prolog程序設(shè)計步驟程序設(shè)計步驟2022-3-19符號說明符號說明:“ := ” 表示表示“ 定義為定義為 ”“ | ” 表示表示 “ 或或 ”,可選,可選“ ” 表示表示 “ 重復(fù)或者出現(xiàn)多個重復(fù)或者出現(xiàn)多個 ”1 項項 2022-3-19::= | | 2022-3-19:= | := | | := | | 20
5、22-3-19命名命名:用小寫字母或者小寫字母開頭的:用小寫字母或者小寫字母開頭的小寫字母小寫字母數(shù)字串?dāng)?shù)字串用途用途:用于標識對象的名字、謂詞(對象間的關(guān):用于標識對象的名字、謂詞(對象間的關(guān)系)或函數(shù)名系)或函數(shù)名標識符原子標識符原子例例:john, marry, classmate, teacher2022-3-19字符串原子字符串原子是用引號括起來的符號串是用引號括起來的符號串特殊原子特殊原子指一些特殊符號,如指一些特殊符號,如 +、-、*、 / 等等 2022-3-19變量變量:用于表示暫時不能命名或者不需要命用于表示暫時不能命名或者不需要命名的對象,用名的對象,用大寫字母開頭大寫字
6、母開頭 := | | 2022-3-19特殊變量特殊變量:空變量,:空變量,記作記作:“_”含義含義:我們對問題的某一個變量的值不關(guān)心:我們對問題的某一個變量的值不關(guān)心 2022-3-19 := ( )| := | | 2022-3-19復(fù)合項復(fù)合項:由一組其它對象組成的單個對象:由一組其它對象組成的單個對象例:例:函數(shù)項函數(shù)項: like(john, apple)表表: sa, sb, 1,2,3表達式表達式: (12+59)*49-96 2022-3-19項項常量常量變量變量復(fù)合項復(fù)合項原子原子數(shù)數(shù)標識符原子標識符原子字符串原子字符串原子特殊原子特殊原子(, ) 2022-3-192 Pr
7、olog中的語句中的語句 事實事實: P.含義含義:無條件成立,恒為真:無條件成立,恒為真例例:like( monkey, banana)Prolog中的語句分成三種形式:中的語句分成三種形式:2022-3-19規(guī)則規(guī)則: P :- P1 , P2 , , Pn . “ “ :- ” ” 表示表示“蘊涵蘊涵” “ “ ,” ” 表示表示“合取合取”含義含義:若:若 P1 , , Pn 均均為真時,為真時,P為真為真 2022-3-19問題問題(目標)(目標)GoalGoal Q1 , Q2 , , Qm .含義含義:待回答的問題:待回答的問題, ,即即 Q1 , , Qm 同時同時為真嗎?為真
8、嗎?2022-3-19從消解角度來看:從消解角度來看:(事實)(事實)中,中,P是是Horn子句子句2022-3-19(規(guī)則)(規(guī)則)可以表示為可以表示為 P1P2PnP可以轉(zhuǎn)化為可以轉(zhuǎn)化為 P1P2PnP也是也是Horn子句,并受子句,并受全稱量詞全稱量詞約束約束2022-3-19(問題)是(問題)是 Q1Qm 受受存在量詞存在量詞約束,取非后約束,取非后 Q1Qm受全稱受全稱量詞約束量詞約束,是,是Horn子句子句2022-3-19Prolog三種形式的語言都是三種形式的語言都是Horn子句子句問題求解就是問題求解就是Horn子句集子句集消解消解2022-3-193 表結(jié)構(gòu)表結(jié)構(gòu) 表表:若
9、干個元素的有序序列:若干個元素的有序序列表中的元素表中的元素:常量、變量、項、表:常量、變量、項、表 表用表用“ ”來表示,元素之間用來表示,元素之間用逗號逗號或者或者空格空格分分開開2022-3-19例例:1, 2, 3a, b, c, d2022-3-19用符號用符號“ | ”來劃分來劃分表頭表頭(第一個元素)和(第一個元素)和表表尾尾(其余元素)(其余元素)特例特例:當(dāng)只用一個元素時,當(dāng)只用一個元素時,表尾表尾為空為空空表(無元素),既無表頭又無表尾空表(無元素),既無表頭又無表尾 2022-3-19例例:P(the, cat, sat, down).?- P( X | Y ).答案答案
10、:X=the, Y=cat, sat, down ?-P( X , Y | Z ).答案答案:X=the, Y=cat,Zsat, down 2022-3-194 Prolog程序程序的結(jié)構(gòu)的結(jié)構(gòu)Prolog的程序分為兩部分:的程序分為兩部分: 前提部分前提部分:所有事實和規(guī)則:所有事實和規(guī)則 問題部分問題部分:目標子句序列:目標子句序列 2022-3-19注意注意:這兩部分不能顛倒。必須這兩部分不能顛倒。必須前提部分前提部分寫在寫在前前面面,問題部分問題部分寫在寫在后面后面 2022-3-19likes(m, f).likes(m, w). (事實事實)likes(j, w).likes(j
11、, s).goal likes(m, X), likes(j, X). (問題問題)問題問題:是否:是否 m 和和 j 都喜歡什么東西?都喜歡什么東西?( ( X = ? ) ) fwsmj2022-3-19Prolog的求解過程的求解過程現(xiàn)在有兩個問題:現(xiàn)在有兩個問題:likes(m, X) 和和 likes(j, X))第一步第一步:第一個問題:第一個問題 likes(m, X) 去與事實匹配去與事實匹配(置換與合一),按(置換與合一),按順序順序得到得到 f/Xlikes(m, f).likes(m, w). likes(j, w).likes(j, s).2022-3-19第二步第二步
12、: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-3-19第三步第三步:回到第一個問題:回到第一個問題 likes(m, X) ,重新匹重新匹配,得到配,得到 w / X第四步第四步:第二個問題變成:第二個問題變成 likes(j, w)。再與事實再與事實匹配,成功匹配,成功第五步第
13、五步:答案就是:答案就是 X=wlikes(m, f).likes(m, w). likes(j, w).likes(j, s).likes(m, X)likes(j, X)2022-3-19說明說明:實際運行中,要逐個試探(搜索),失敗實際運行中,要逐個試探(搜索),失敗則要回溯,成功也要回溯(求出所有解)則要回溯,成功也要回溯(求出所有解)2022-3-19例例:father(a, b). a是是b的父親的父親father(c, d).brother(a, c). a與與c是兄弟關(guān)系是兄弟關(guān)系uncle(X, Y) :- brother(X, Z), father(Z, Y).?- unc
14、le(a, U). 問題問題: a 是誰的叔叔是誰的叔叔 ? ( U = ? )2022-3-19第一步第一步:問題:問題 uncle(a,U) 與事實逐個匹配,與事實逐個匹配,不成功不成功Prolog的求解過程的求解過程:father(a, b). father(c, d).brother(a, c).2022-3-19第二步第二步:與規(guī)則頭(左部)匹配,即尋找合一者,:與規(guī)則頭(左部)匹配,即尋找合一者,有有 a/X, U/Y轉(zhuǎn)化為兩個子問題:轉(zhuǎn)化為兩個子問題:brother(a, Z)和和father(Z, U)uncle(X, Y) :- brother(X, Z) , father(
15、Z, Y).uncle(a,U)2022-3-19第一個子問題第一個子問題 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-3-19Prolog的實現(xiàn)方法主要是:的實現(xiàn)方法主要是:匹配匹配與與回溯回溯匹配匹配:合一過程、消解過程:合一過程、消解過程回溯回溯:搜索,而且是深度優(yōu)先搜
16、索:搜索,而且是深度優(yōu)先搜索2022-3-19關(guān)于匹配的幾點說明關(guān)于匹配的幾點說明:第一第一、一個變量、一個變量被置換被置換后,代入了另一個后,代入了另一個項項,則稱該變量為則稱該變量為實例化實例化的變量的變量2022-3-19若與另一個未實例化的變量若與另一個未實例化的變量匹配匹配,則視為同一變,則視為同一變量,兩者量,兩者共享共享若與另一個實例化的變量若與另一個實例化的變量匹配匹配,也變成了實例化,也變成了實例化的變量,且兩者的變量,且兩者同值同值若與若與常量匹配常量匹配,也變成了實例化變量,并取常量,也變成了實例化變量,并取常量的值的值第二第二、一個、一個未實例化未實例化的變量可以與任何
17、的變量可以與任何項匹配項匹配:2022-3-19第三第三、常量常量只能與相同的只能與相同的常量常量匹配匹配第四第四、實例化的變量與另一個實例化的值相同的、實例化的變量與另一個實例化的值相同的變量變量匹配匹配,也可以與另一個未實例化的變量匹,也可以與另一個未實例化的變量匹配,使另一個變量實例化,且配,使另一個變量實例化,且約束值相同約束值相同2022-3-195 常用的內(nèi)部謂詞常用的內(nèi)部謂詞內(nèi)部謂詞內(nèi)部謂詞:Prolog系統(tǒng)本身定義的一些基本謂詞系統(tǒng)本身定義的一些基本謂詞注意注意:可以直接使用,用戶不能修改:可以直接使用,用戶不能修改2022-3-19算術(shù)運算算術(shù)運算算術(shù)表達式算術(shù)表達式由由操作
18、數(shù)操作數(shù)(數(shù)、變量)、(數(shù)、變量)、操作符操作符和和括括號號組成組成算術(shù)運算符號算術(shù)運算符號:“+、-、* 、/”(加減乘除)(加減乘除)2022-3-19優(yōu)先級優(yōu)先級:與通常的數(shù)學(xué)運算一致:與通常的數(shù)學(xué)運算一致形式形式:中綴:中綴:X+Y*Z 前綴:前綴:+(X,*(Y,Z)2022-3-19比較謂詞比較謂詞eq(X, Y) X=Yne(X, Y) XYgt(X, Y) XYls(X, Y) XY 2022-3-19對于對于 “ 、 ”,X,Y 可以取可以取常量常量變量變量謂詞謂詞表表2022-3-19第一第一、當(dāng)一個變量已經(jīng)、當(dāng)一個變量已經(jīng)實例化實例化,則可以與任意,則可以與任意未實例化的
19、變量未實例化的變量相等相等,且將其實例化(賦值,且將其實例化(賦值功能)功能)第二第二、兩者均未實例化,、兩者均未實例化,eq(X, Y) 恒為真,并恒為真,并視為視為同一變量同一變量對于對于“”(賦值與比較賦值與比較)的幾點說明的幾點說明:2022-3-19第三第三、均以實例化,由、均以實例化,由當(dāng)前值來決定當(dāng)前值來決定第四第四、如果為表,要求對應(yīng)的、如果為表,要求對應(yīng)的元素相等元素相等,才為真,才為真第五第五、如果是謂詞,謂詞、如果是謂詞,謂詞同名同名,變元個數(shù)相等,變元個數(shù)相等,對應(yīng)的對應(yīng)的變元相等變元相等2022-3-19輸入輸出謂詞輸入輸出謂詞第一第一、write(X):向向輸出輸出
20、設(shè)備輸出實例化結(jié)果設(shè)備輸出實例化結(jié)果第二第二、read(X): 當(dāng)當(dāng) X 未實例化時,輸入一個項未實例化時,輸入一個項當(dāng)當(dāng) X 在輸入前已經(jīng)實例化,則讀入項將與在輸入前已經(jīng)實例化,則讀入項將與 X 匹配,根據(jù)匹配的成功與否,決定其匹配,根據(jù)匹配的成功與否,決定其真假值真假值 2022-3-19謂詞謂詞cut與與fail(特殊謂詞):特殊謂詞): cut ( ! ):禁止回溯禁止回溯 fail: 強迫回溯強迫回溯2022-3-19第一第一、只允許作為一個子目標出現(xiàn)在程序中、只允許作為一個子目標出現(xiàn)在程序中第二第二、第一次遇到它時,總是立刻被、第一次遇到它時,總是立刻被滿足滿足,但是,但是不能被重
21、新滿足不能被重新滿足第三第三、用戶可以使用它來控制回溯方式,切斷一、用戶可以使用它來控制回溯方式,切斷一些不必要的回溯,提高程序運行效率些不必要的回溯,提高程序運行效率關(guān)于關(guān)于cut的幾點說明的幾點說明:2022-3-19關(guān)于關(guān)于 fail 的說明的說明:作為一個子目標,使作為一個子目標,使Prolog程序運行到程序運行到 fail,必定引起必定引起回溯回溯2022-3-19例例:求:求 1 到到 n 之間的和之間的和定義一個二元謂詞定義一個二元謂詞 sum(N, X),其中其中 X 表示和表示和答案是答案是:X=21 去掉去掉“ !”,會發(fā)生什么?,會發(fā)生什么?sum(1,1):-!.sum
22、(N,R):- N1=N-1, sum(N1, R1), R=R1+N.?- sum(6,X).2022-3-196 Prolog程序設(shè)計步驟程序設(shè)計步驟第一第一、說明事實說明事實:說明與待求解的問題有關(guān)的事:說明與待求解的問題有關(guān)的事實。例如,人物事及相互關(guān)系,對應(yīng)于實。例如,人物事及相互關(guān)系,對應(yīng)于敘述敘述性知識性知識對應(yīng)于對應(yīng)于Prolog程序的組成部分,程序的組成部分,設(shè)計步驟設(shè)計步驟分為:分為:2022-3-19第二第二、定義規(guī)則定義規(guī)則:定義個體及其相互關(guān)系的推理:定義個體及其相互關(guān)系的推理規(guī)則,反映與待求解問題有關(guān)的規(guī)則,反映與待求解問題有關(guān)的過程性知識過程性知識第三第三:確定目
23、標(問題)確定目標(問題):提出待求解的問題或:提出待求解的問題或者確定邏輯推理的目標者確定邏輯推理的目標2022-3-19程序的一般結(jié)構(gòu)(組成部分)程序的一般結(jié)構(gòu)(組成部分) Visual Prolog程序包括三到四個程序包括三到四個基本程序段基本程序段:第一第一、域段域段:說明謂詞變量的域(類型):說明謂詞變量的域(類型)第二第二、謂詞段謂詞段:說明非標準謂詞(用戶自己的:說明非標準謂詞(用戶自己的謂詞)謂詞)2022-3-19第三第三、子句段子句段:核心部分,可以寫出事實與規(guī)則:核心部分,可以寫出事實與規(guī)則第四第四、目標段目標段:設(shè)置內(nèi)部目標:設(shè)置內(nèi)部目標2022-3-19域段域段(do
24、mains)Prolog語言中的域用于語言中的域用于區(qū)分不同變量類型的數(shù)據(jù)區(qū)分不同變量類型的數(shù)據(jù)相當(dāng)于其它高級語言中的數(shù)據(jù)類型相當(dāng)于其它高級語言中的數(shù)據(jù)類型2022-3-19基本標準域有:基本標準域有:char: 用單引號括起來的用單引號括起來的單個字符單個字符,例如,例如,ainteger:整數(shù)整數(shù),范圍為,范圍為32767到到-32768real: 實數(shù)實數(shù),例如,例如,86.72,5.1e+212022-3-19string: 用雙引號括起來的用雙引號括起來的字符序列字符序列 例例:“I am from Nanjing”2022-3-19symbol:有兩種形式:有兩種形式: 以小寫字母開頭的字母、數(shù)字和下劃線以小寫字母開頭的字母、數(shù)字和下劃線組成的組成的序列序列 用雙引號括起來的用雙引號括起來的字符串序列字符串序列 2022-3-19Prolog中表示成下列形式:中表示成下列形式: integerlist = integer *“integer” ” 說明表中元素的類型說明表中元素的類型“* ” ” 告訴編譯系統(tǒng),這是一張表告訴編譯系統(tǒng),這是一張表 表表:2022-3-19例例domains title , author = symbol pages = integer注注:每一個說明的最后每一個說明的最后無句號無句號
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校水塔罐管理制度
- 學(xué)校網(wǎng)球隊管理制度
- 學(xué)校防滲漏管理制度
- 學(xué)生護校隊管理制度
- 安保處工作管理制度
- 安全生產(chǎn)等管理制度
- 安康電動車管理制度
- 安裝類公司管理制度
- 實訓(xùn)室用電管理制度
- 實驗室氣瓶管理制度
- 2025年中考英語考前沖刺卷(廣東卷)(解析版)
- 鄭州中原綠色產(chǎn)業(yè)生態(tài)發(fā)展公司招聘筆試真題2024
- 深圳市非承重墻體與飾面工程施工及驗收標準SJG 14-2018
- 農(nóng)村抗震農(nóng)房裝配式施工安全監(jiān)理合同
- 鋁粉加工合同協(xié)議書
- 大學(xué)語文試題及答案安徽
- 近七年寧夏中考化學(xué)真題及答案2024
- 2025至2030中國芳綸纖維行業(yè)需求預(yù)測及發(fā)展前景趨勢研究報告
- 十一學(xué)校小升初入學(xué)測試數(shù)學(xué)真題及詳細解答
- Braden 壓力性損傷評分表詳解
- 婚內(nèi)賭博欠債協(xié)議書范本
評論
0/150
提交評論