版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、2021-7-10人人 工工 智智 能能Artificial Intelligence (AI)2021-7-10Prolog 語言簡介語言簡介 Prolog語言語言是一種以一階謂詞為基礎的邏輯性語是一種以一階謂詞為基礎的邏輯性語言(言(Programming in Logic) 2021-7-10Prolog語言的特點語言的特點Prolog語言的基本內容語言的基本內容簡單的例子簡單的例子2021-7-10Prolog語言語言(或者(或者系統(tǒng))是以一階謂詞邏輯的系統(tǒng))是以一階謂詞邏輯的為語法,以為語法,以Robinson的的為工具,加上為工具,加上而形成的人而形成的人工智能通用程序設計語言工智
2、能通用程序設計語言 Prolog語言的特點語言的特點 2021-7-10Horn子句集子句集消解原理消解原理深度優(yōu)先深度優(yōu)先Prolog系統(tǒng)系統(tǒng)2021-7-10Prolog具有下列特點具有下列特點: 是一種描述性語言。只需要告訴是一種描述性語言。只需要告訴 “ “系統(tǒng)做什系統(tǒng)做什么么”,不要告訴系統(tǒng),不要告訴系統(tǒng) “ “如何做如何做” 數據與程序的統(tǒng)一表達。提供一種統(tǒng)一的符數據與程序的統(tǒng)一表達。提供一種統(tǒng)一的符號結構號結構 “ “項項” ” ,數據與程序都是由項組成,數據與程序都是由項組成 2021-7-10 自動實現模式匹配與回溯。這是人工智能中最常自動實現模式匹配與回溯。這是人工智能中最
3、常用的兩項操作,用的兩項操作,Prolog自動實現這些操作自動實現這些操作 程序易于編寫與閱讀。它是面向人的自然語言程序易于編寫與閱讀。它是面向人的自然語言 語句句型少,語法簡明。只有語句句型少,語法簡明。只有三種句型三種句型 2021-7-10參考資料參考資料:雷英杰,張雷,邢清華,孫金萍。雷英杰,張雷,邢清華,孫金萍。Visual Prolog 語言教程語言教程。西安:陜西科學技術出版社,。西安:陜西科學技術出版社,2002年年2月(月(380頁,頁,35元)元)1 雷英杰,邢清華,孫金萍,張雷。雷英杰,邢清華,孫金萍,張雷。Visual Prolog 編程、環(huán)境及接口編程、環(huán)境及接口。北
4、京:國防工業(yè)出版社,。北京:國防工業(yè)出版社,2004年年1月(月(412頁,頁,36元)元)2021-7-10Prolog語言的基本內容語言的基本內容1 項項2 Prolog中的語句中的語句3 表結構表結構4 Prolog程序的結構程序的結構5 常用內部謂詞常用內部謂詞6 Prolog程序設計步驟程序設計步驟2021-7-10符號說明符號說明:“ := ” 表示表示“ 定義為定義為 ”“ | ” 表示表示 “ 或或 ”,可選,可選“ ” 表示表示 “ 重復或者出現多個重復或者出現多個 ”1 項項 2021-7-10::= | | 2021-7-10:= | := | | := | | 2021
5、-7-10命名命名:用小寫字母或者小寫字母開頭的:用小寫字母或者小寫字母開頭的小寫字母小寫字母數字串數字串用途用途:用于標識對象的名字、謂詞(對象間的關:用于標識對象的名字、謂詞(對象間的關系)或函數名系)或函數名標識符原子標識符原子例例:john, marry, classmate, teacher2021-7-10字符串原子字符串原子是用引號括起來的符號串是用引號括起來的符號串特殊原子特殊原子指一些特殊符號,如指一些特殊符號,如 +、-、*、 / 等等 2021-7-10變量變量:用于表示暫時不能命名或者不需要命用于表示暫時不能命名或者不需要命名的對象,用名的對象,用大寫字母開頭大寫字母開
6、頭 := | | 2021-7-10特殊變量特殊變量:空變量,:空變量,記作記作:“_”含義含義:我們對問題的某一個變量的值不關心:我們對問題的某一個變量的值不關心 2021-7-10 := ( )| := | | 2021-7-10復合項復合項:由一組其它對象組成的單個對象:由一組其它對象組成的單個對象例:例:函數項函數項: like(john, apple)表表: sa, sb, 1,2,3表達式表達式: (12+59)*49-96 2021-7-10項項常量常量變量變量復合項復合項原子原子數數標識符原子標識符原子字符串原子字符串原子特殊原子特殊原子(, ) 2021-7-102 Prol
7、og中的語句中的語句 事實事實: P.含義含義:無條件成立,恒為真:無條件成立,恒為真例例:like( monkey, banana)Prolog中的語句分成三種形式:中的語句分成三種形式:2021-7-10規(guī)則規(guī)則: P :- P1 , P2 , , Pn . “ “ :- ” ” 表示表示“蘊涵蘊涵” “ “ ,” ” 表示表示“合取合取”含義含義:若:若 P1 , , Pn 均為真時,均為真時,P為真為真 2021-7-10問題問題(目標)(目標)GoalGoal Q1 , Q2 , , Qm .含義含義:待回答的問題:待回答的問題, ,即即 Q1 , , Qm 同時同時為真嗎?為真嗎?
8、2021-7-10從消解角度來看:從消解角度來看:(事實)(事實)中,中,P是是Horn子句子句2021-7-10(規(guī)則)(規(guī)則)可以表示為可以表示為 P1P2PnP可以轉化為可以轉化為 P1P2PnP也是也是Horn子句,并受子句,并受全稱量詞全稱量詞約束約束2021-7-10(問題)是(問題)是 Q1Qm 受受存在量詞存在量詞約束,取非后約束,取非后 Q1Qm受全稱受全稱量詞約束量詞約束,是,是Horn子句子句2021-7-10Prolog三種形式的語言都是三種形式的語言都是Horn子句子句問題求解就是問題求解就是Horn子句集子句集消解消解2021-7-103 表結構表結構 表表:若干個
9、元素的有序序列:若干個元素的有序序列表中的元素表中的元素:常量、變量、項、表:常量、變量、項、表 表用表用“ ”來表示,元素之間用來表示,元素之間用逗號逗號或者或者空格空格分分開開2021-7-10例例:1, 2, 3a, b, c, d2021-7-10用符號用符號“ | ”來劃分來劃分表頭表頭(第一個元素)和(第一個元素)和表表尾尾(其余元素)(其余元素)特例特例:當只用一個元素時,當只用一個元素時,表尾表尾為空為空空表(無元素),既無表頭又無表尾空表(無元素),既無表頭又無表尾 2021-7-10例例:P(the, cat, sat, down).?- P( X | Y ).答案答案:X
10、=the, Y=cat, sat, down ?-P( X , Y | Z ).答案答案:X=the, Y=cat,Zsat, down 2021-7-104 Prolog程序程序的結構的結構Prolog的程序分為兩部分:的程序分為兩部分: 前提部分前提部分:所有事實和規(guī)則:所有事實和規(guī)則 問題部分問題部分:目標子句序列:目標子句序列 2021-7-10注意注意:這兩部分不能顛倒。必須這兩部分不能顛倒。必須前提部分前提部分寫在寫在前前面面,問題部分問題部分寫在寫在后面后面 2021-7-10likes(m, f).likes(m, w). (事實事實)likes(j, w).likes(j,
11、s).goal likes(m, X), likes(j, X). (問題問題)問題問題:是否:是否 m 和和 j 都喜歡什么東西?都喜歡什么東西?( ( X = ? ) ) fwsmj2021-7-10Prolog的求解過程的求解過程現在有兩個問題:現在有兩個問題:likes(m, X) 和和 likes(j, X))第一步第一步:第一個問題:第一個問題 likes(m, X) 去與事實匹配去與事實匹配(置換與合一),按(置換與合一),按順序順序得到得到 f/Xlikes(m, f).likes(m, w). likes(j, w).likes(j, s).2021-7-10第二步第二步:f
12、 代替第二個問題代替第二個問題 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)2021-7-10第三步第三步:回到第一個問題:回到第一個問題 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)2021-7-10說明說明:實際運行中,要逐個試探(搜索),失敗實際運行中,要逐個試探(搜索),失敗則要回溯,成功也要回溯(求出所有解)則要回溯,成功也要回溯(求出所有解)2021-7-10例例:father(a, b). a是是b的父親的父親father(c, d).brother(a, c). a與與c是兄弟關系是兄弟關系uncle(X, Y) :- brother(X, Z), father(Z, Y).?- uncle
14、(a, U). 問題問題: a 是誰的叔叔是誰的叔叔 ? ( U = ? )2021-7-10第一步第一步:問題:問題 uncle(a,U) 與事實逐個匹配,與事實逐個匹配,不成功不成功Prolog的求解過程的求解過程:father(a, b). father(c, d).brother(a, c).2021-7-10第二步第二步:與規(guī)則頭(左部)匹配,即尋找合一者,:與規(guī)則頭(左部)匹配,即尋找合一者,有有 a/X, U/Y轉化為兩個子問題:轉化為兩個子問題:brother(a, Z)和和father(Z, U)uncle(X, Y) :- brother(X, Z) , father(Z,
15、 Y).uncle(a,U)2021-7-10第一個子問題第一個子問題 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)2021-7-10Prolog的實現方法主要是:的實現方法主要是:匹配匹配與與回溯回溯匹配匹配:合一過程、消解過程:合一過程、消解過程回溯回溯:搜索,而且是深度優(yōu)先搜索:
16、搜索,而且是深度優(yōu)先搜索2021-7-10關于匹配的幾點說明關于匹配的幾點說明:第一第一、一個變量、一個變量被置換被置換后,代入了另一個后,代入了另一個項項,則稱該變量為則稱該變量為實例化實例化的變量的變量2021-7-10若與另一個未實例化的變量若與另一個未實例化的變量匹配匹配,則視為同一變,則視為同一變量,兩者量,兩者共享共享若與另一個實例化的變量若與另一個實例化的變量匹配匹配,也變成了實例化,也變成了實例化的變量,且兩者的變量,且兩者同值同值若與若與常量匹配常量匹配,也變成了實例化變量,并取常量,也變成了實例化變量,并取常量的值的值第二第二、一個、一個未實例化未實例化的變量可以與任何的變
17、量可以與任何項匹配項匹配:2021-7-10第三第三、常量常量只能與相同的只能與相同的常量常量匹配匹配第四第四、實例化的變量與另一個實例化的值相同的、實例化的變量與另一個實例化的值相同的變量變量匹配匹配,也可以與另一個未實例化的變量匹,也可以與另一個未實例化的變量匹配,使另一個變量實例化,且配,使另一個變量實例化,且約束值相同約束值相同2021-7-105 常用的內部謂詞常用的內部謂詞內部謂詞內部謂詞:Prolog系統(tǒng)本身定義的一些基本謂詞系統(tǒng)本身定義的一些基本謂詞注意注意:可以直接使用,用戶不能修改:可以直接使用,用戶不能修改2021-7-10算術運算算術運算算術表達式算術表達式由由操作數操
18、作數(數、變量)、(數、變量)、操作符操作符和和括括號號組成組成算術運算符號算術運算符號:“+、-、* 、/”(加減乘除)(加減乘除)2021-7-10優(yōu)先級優(yōu)先級:與通常的數學運算一致:與通常的數學運算一致形式形式:中綴:中綴:X+Y*Z 前綴:前綴:+(X,*(Y,Z)2021-7-10比較謂詞比較謂詞eq(X, Y) X=Yne(X, Y) XYgt(X, Y) XYls(X, Y) XY 2021-7-10對于對于 “ 、 ”,X,Y 可以取可以取常量常量變量變量謂詞謂詞表表2021-7-10第一第一、當一個變量已經、當一個變量已經實例化實例化,則可以與任意,則可以與任意未實例化的變量
19、未實例化的變量相等相等,且將其實例化(賦值,且將其實例化(賦值功能)功能)第二第二、兩者均未實例化,、兩者均未實例化,eq(X, Y) 恒為真,并恒為真,并視為視為同一變量同一變量對于對于“”(賦值與比較賦值與比較)的幾點說明的幾點說明:2021-7-10第三第三、均以實例化,由、均以實例化,由當前值來決定當前值來決定第四第四、如果為表,要求對應的、如果為表,要求對應的元素相等元素相等,才為真,才為真第五第五、如果是謂詞,謂詞、如果是謂詞,謂詞同名同名,變元個數相等,變元個數相等,對應的對應的變元相等變元相等2021-7-10輸入輸出謂詞輸入輸出謂詞第一第一、write(X):向向輸出輸出設備
20、輸出實例化結果設備輸出實例化結果第二第二、read(X): 當當 X 未實例化時,輸入一個項未實例化時,輸入一個項當當 X 在輸入前已經實例化,則讀入項將與在輸入前已經實例化,則讀入項將與 X 匹配,根據匹配的成功與否,決定其匹配,根據匹配的成功與否,決定其真假值真假值 2021-7-10謂詞謂詞cut與與fail(特殊謂詞):特殊謂詞): cut ( ! ):禁止回溯禁止回溯 fail: 強迫回溯強迫回溯2021-7-10第一第一、只允許作為一個子目標出現在程序中、只允許作為一個子目標出現在程序中第二第二、第一次遇到它時,總是立刻被、第一次遇到它時,總是立刻被滿足滿足,但是,但是不能被重新滿
21、足不能被重新滿足第三第三、用戶可以使用它來控制回溯方式,切斷一、用戶可以使用它來控制回溯方式,切斷一些不必要的回溯,提高程序運行效率些不必要的回溯,提高程序運行效率關于關于cut的幾點說明的幾點說明:2021-7-10關于關于 fail 的說明的說明:作為一個子目標,使作為一個子目標,使Prolog程序運行到程序運行到 fail,必定引起必定引起回溯回溯2021-7-10例例:求:求 1 到到 n 之間的和之間的和定義一個二元謂詞定義一個二元謂詞 sum(N, X),其中其中 X 表示和表示和答案是答案是:X=21 去掉去掉“ !”,會發(fā)生什么?,會發(fā)生什么?sum(1,1):-!.sum(N
22、,R):- N1=N-1, sum(N1, R1), R=R1+N.?- sum(6,X).2021-7-106 Prolog程序設計步驟程序設計步驟第一第一、說明事實說明事實:說明與待求解的問題有關的事:說明與待求解的問題有關的事實。例如,人物事及相互關系,對應于實。例如,人物事及相互關系,對應于敘述敘述性知識性知識對應于對應于Prolog程序的組成部分,程序的組成部分,設計步驟設計步驟分為:分為:2021-7-10第二第二、定義規(guī)則定義規(guī)則:定義個體及其相互關系的推理:定義個體及其相互關系的推理規(guī)則,反映與待求解問題有關的規(guī)則,反映與待求解問題有關的過程性知識過程性知識第三第三:確定目標(
23、問題)確定目標(問題):提出待求解的問題或:提出待求解的問題或者確定邏輯推理的目標者確定邏輯推理的目標2021-7-10程序的一般結構(組成部分)程序的一般結構(組成部分) Visual Prolog程序包括三到四個程序包括三到四個基本程序段基本程序段:第一第一、域段域段:說明謂詞變量的域(類型):說明謂詞變量的域(類型)第二第二、謂詞段謂詞段:說明非標準謂詞(用戶自己的:說明非標準謂詞(用戶自己的謂詞)謂詞)2021-7-10第三第三、子句段子句段:核心部分,可以寫出事實與規(guī)則:核心部分,可以寫出事實與規(guī)則第四第四、目標段目標段:設置內部目標:設置內部目標2021-7-10域段域段(doma
24、ins)Prolog語言中的域用于語言中的域用于區(qū)分不同變量類型的數據區(qū)分不同變量類型的數據相當于其它高級語言中的數據類型相當于其它高級語言中的數據類型2021-7-10基本標準域有:基本標準域有:char: 用單引號括起來的用單引號括起來的單個字符單個字符,例如,例如,ainteger:整數整數,范圍為,范圍為32767到到-32768real: 實數實數,例如,例如,86.72,5.1e+212021-7-10string: 用雙引號括起來的用雙引號括起來的字符序列字符序列 例例:“I am from Nanjing”2021-7-10symbol:有兩種形式:有兩種形式: 以小寫字母開頭的字母、數字和下劃線以小寫字母開頭的字母、數字和下劃線組成的組成的序列序列 用雙引號括起來的用雙引號括起來的字符串序列字符串序列 2021-7-10Prolog中表示成下列形式:中表示成下列形式: integerlist = integer *“integer” ” 說明表中元素的類型說明表中元素的類型“* ” ” 告訴編譯系統(tǒng),這是一張表告訴編譯系統(tǒng),這是一張表 表表:2021-7-10例例domains title , author = symbol pages = integer注注:每一個說明的最后每一個說明的最后無句號無句號
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 照片濾鏡調色課程設計
- 二手車交易平臺營業(yè)員銷售總結
- 春游課程設計
- 家具設計師工作總結
- 風險防控方案計劃
- 法律服務行業(yè)風險防范方案
- 化工行業(yè)衛(wèi)生防護要點
- 物流運輸行業(yè)咨詢服務經驗總結
- 藥店衛(wèi)生管理措施
- 金融領域的投資顧問職責
- 2024-2030年中國汽車水泵市場未來發(fā)展趨勢及前景調研分析報告
- 綠城營銷策劃管理標準化手冊
- 2025小學創(chuàng)意特色寒假素養(yǎng)作業(yè)設計真絕了【高清可打印】
- 2025年上半年河南安陽市睢陽區(qū)“減縣補鄉(xiāng)”鄉(xiāng)鎮(zhèn)事業(yè)單位選拔130人重點基礎提升(共500題)附帶答案詳解
- 2025學年學期學校衛(wèi)生工作計劃
- 10.1.2事件的關系和運算(教學課件)高一數學(人教A版2019必修第二冊)
- 2024-2030年中國天然靛藍行業(yè)市場規(guī)模預測及發(fā)展可行性分析報告
- DB37T 4548-2022 二氧化碳驅油封存項目碳減排量核算技術規(guī)范
- 《公路養(yǎng)護安全培訓》課件
- 2024國家開放大學基礎寫作形考任務2試題及答案
- 2023-2024學年江蘇省蘇州市高一(上)期末地理試卷
評論
0/150
提交評論