freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

人工智能程序設計語言150(編輯修改稿)

2025-03-10 16:15 本頁面
 

【文章內(nèi)容簡介】 關系 。 例如 , 上面的第一條規(guī)則就表示 “ 如果 X是動物 ,并且 X有羽毛 , 則 X是鳥 ” ;第二條規(guī)則就表示 “ X是Y的祖父 , 如果存在 Z, X是 Z的父親并且 Z又是 Y的父親 ” 。 作為特殊情形 , 規(guī)則中的謂詞也可以只有謂詞名而無參量 。 例如: run:start,step1(X),step2(X),end. 也是一個合法規(guī)則。 第 2章 人工智能程序設計語言 (question) 格式 ?謂詞名 (項表 ){,謂詞名 (項表 )}. 例如: ?student(john). ?like(mary,X). 就是兩個合法的問題 。 功能 問題表示用戶的詢問,它就是程序運行的目標。 第 2章 人工智能程序設計語言 PROLOG程序 PROLOG程序一般由一組事實 、 規(guī)則和問題組成 。問題是程序執(zhí)行的起點 , 稱為程序的目標 。 例如下面就是一個 PROLOG程序 。 likes(bell,sports). likes(mary,music). likes(mary,sports). likes(jane ,smith). friend(john,X):likes(X,reading),likes(X,music). friend(john,X):likes(X,sports),likes(X,music). ?friend(john,Y). 第 2章 人工智能程序設計語言 可以看出 , 這個程序中有四條事實 、 兩條規(guī)則和一個問題 。 其中事實 、 規(guī)則和問題都分行書寫 。 規(guī)則和事實可連續(xù)排列在一起 , 其順序可隨意安排 , 但同一謂詞名的事實或規(guī)則必須集中排列在一起 。 問題不能與規(guī)則及事實排在一起 , 它作為程序的目標要么單獨列出 , 要么在程序運行時臨時給出 。 第 2章 人工智能程序設計語言 這個程序的事實描述了一些對象 ( 包括人和事物 )間的關系;而規(guī)則則描述了 john交朋友的條件 , 即如果一個人喜歡讀書并且喜歡音樂 ( 或者喜歡運動和喜歡音樂 ) , 則這個人就是 john的朋友 ( 當然 , 這個規(guī)則也可看作是 john朋友的定義 ) ;程序中的問題是“ 約翰的朋友是誰 ? ” 當然 , PROLOG程序中的目標可以變化 , 也可以含有多個語句 (上例中只有一個 )。 如果有多個語句 , 則這些語句稱為子目標 。 例如對上面的程序 , 其問題也可以是 第 2章 人工智能程序設計語言 ?likes(mary,X). 或 ?likes(mary,music). 或 ?friend(X,Y). 或 ?likes(bell,sports), likes(mary,music), friend(john,X). 等等 。 當然 , 對于不同的問題 , 程序運行的結果一般是不一樣的 。 第 2章 人工智能程序設計語言 PROLOG程序的運行機理 既然 PROLOG程序是基于 Horn子句的邏輯程序 ,那么其運行機理自然就是基于歸結原理的演繹推理( 歸結原理將在第 3章介紹 ) 。 下面我們就來看PROLOG程序是怎樣運行的 。 PROLOG程序的運行是從目標出發(fā) , 并不斷進行匹配 、 合一 、 歸結 , 有時還要回溯 , 直到目標被完全滿足或不能滿足時為止 。 那么 , 什么是匹配 、 合一和回溯呢 ? 下面我們就先介紹這幾個概念 。 第 2章 人工智能程序設計語言 1. 自由變量與約束變量 PROLOG中稱無值的變量為自由變量 , 有值的變量為約束變量 。 一個變量取了某值就說該變量約束于某值 , 或者說該變量被某值所約束 , 或者說該變量被某值實例化了 。 第 2章 人工智能程序設計語言 2. 匹配合一 兩個謂詞可匹配合一 , 是指兩個謂詞的名相同 , 參量項的個數(shù)相同 , 參量類型對應相同 , 并且對應參量項還滿足下列條件之一: (1)如果兩個都是常量 , 則必須完全相同 。 (2)如果兩個都是約束變量 , 則兩個約束值必須相同 。 (3)如果其中一個是常量 , 一個是約束變量 , 則約束值與常量必須相同 。 (4)至少有一個是自由變量 。 第 2章 人工智能程序設計語言 例如:下面的兩個謂詞 pre1(ob1,ob2,Z) pre1(ob1,X,Y) 只有當變量 X被約束為 ob2, 且 Y、 Z的約束值相同或者至少有一個是自由變量時 , 它們才是匹配合一的 。 第 2章 人工智能程序設計語言 3. 回溯 所謂回溯 , 就是在程序運行期間 , 當某一個子目標不能滿足 ( 即謂詞匹配失敗 ) 時 , 控制就返回到前一個已經(jīng)滿足的子目標 ( 如果存在的話 ) , 并撤消其有關變量的約束值 , 然后再使其重新滿足 。 成功后 ,再繼續(xù)滿足原子目標 。 如果失敗的子目標前再無子目標 , 則控制就返回到該子目標的上一級目標 ( 即該子目標謂詞所在規(guī)則的頭部 ) 使它重新匹配 。 回溯也是PROLOG的一個重要機制 。 第 2章 人工智能程序設計語言 下面 , 我們介紹 PROLOG程序的運行過程 。 我們?nèi)砸陨厦娴某绦驗槔?。 設所給的詢問是 ?friend(john,Y).(john和誰是朋友 ?) 則求解目標為 friend(john,Y). 這時 , 系統(tǒng)對程序進行掃描 , 尋找能與目標謂詞匹配合一的事實或規(guī)則頭部 。 顯然 , 程序中前面的四條事實均不能與目標匹配 , 而第五個語句的左端即規(guī)則 第 2章 人工智能程序設計語言 friend(john,X):likes(X,reading),likes(X,music). 的頭部可與目標謂詞匹配合一 。 但由于這個語句又是一個規(guī)則 , 所以其結論要成立則必須其前提全部成立 。 于是 , 對原目標的求解就轉化為對新目標 likes(X,reading),likes(X,music). 的求解 。 這實際是經(jīng)歸結 , 規(guī)則頭部被消去 , 而目標子句變?yōu)? ?likes(X,reading),likes(X,music). 現(xiàn)在依次對子目標 likes(X,reading)和 likes(X,music) 求解。 第 2章 人工智能程序設計語言 子目標的求解過程與主目標完全一樣 , 也是從頭對程序進行掃描 , 不斷進行測試和匹配合一等 , 直到匹配成功或掃描完整個程序為止 。 可以看出 , 對第一個子目標 like(X,reading)的求解因無可匹配的事實和規(guī)則而立即失敗 , 進而導致規(guī)則 friend(john,X):likes(X,reading),likes(X,music). 的整體失敗 。 于是 , 剛才的子目標 likes(X,reading)和 likes(X,music) 第 2章 人工智能程序設計語言 被撤消 , 系統(tǒng)又回溯到原目標 friend(john,X)。 這時 ,系統(tǒng)從該目標剛才的匹配語句處 ( 即第五句 ) 向下繼續(xù)掃描程序中的子句 , 試圖重新使原目標匹配 , 結果發(fā)現(xiàn)第六條語句的左部 , 即規(guī)則 friend(john,X):likes(X,sports),likes(X,music). 的頭部可與目標為謂詞匹配 。 但由于這個語句又是一個規(guī)則 , 于是 , 這時對原目標的求解 , 就又轉化為依次對子目標 likes(X,sports)和 likes(X,music) 第 2章 人工智能程序設計語言 的求解 。 這次子目標 likes(X,sports)與程序中的事實立即匹配成功 , 且變量 X被約束為 bell。 于是 , 系統(tǒng)便接著求解第二個子目標 。 由于變量 X已被約束 , 所以這時第二個子目標實際上已變成了 likes(bell,music). 由于程序中不存在事實 likes(bell,music), 所以該目標的求解失敗 。 于是 , 系統(tǒng)就放棄這個子目標 , 并使變量 X恢復為自由變量 , 然后回溯到第一個子目標 , 重新對它進行求解 。 由于系統(tǒng)已經(jīng)記住了剛才已同第一子目標謂詞匹配過的事實的位置 , 所以重新求解時 ,便從下一個事實開始測試 。 第 2章 人工智能程序設計語言 易見 , 當測試到程序中第三個事實時 , 第一個子目標便求解成功 , 且變量 X被約束為 mary。 這樣 , 第二個子目標也就變成了 likes(mary,music). 再對它進行求解 。 這次很快成功 。 由于兩個子目標都求解成功,所以,原目標friend(john,Y)也成功,且變量 Y被約束為 mary(由 Y與 X的合一關系 )。于是,系統(tǒng)回答: Y=mary 程序運行結束 。 上面只給出了問題的一個解 。 如果需要和可能的話 ,系統(tǒng)還可把 john的所有朋友都找出來 。 我們把上述程序的運行過程再用示意圖 ( 圖 2─1) 描述如下: 第 2章 人工智能程序設計語言 圖 2─1 PROLOG程序運行機理示例 第 2章 人工智能程序設計語言 上述程序的運行是一個通過推理實現(xiàn)的求值過程 。我們也可以使它變?yōu)樽C明過程 。 例如 , 把上述程序中的詢問改為 friend(john,mary) 則系統(tǒng)會回答 :yes 若將詢問改為: friend(john,smith) 則系統(tǒng)會回答 :no 第 2章 人工智能程序設計語言 從上述程序的運行過程可以看出, PROLOG程序的執(zhí)行過程是一個(歸結)演繹推理過程。其特點是:推理方式為反向推理,控制策略是深度優(yōu)先,且有回溯機制。其具體實現(xiàn)方法是:匹配子句的順序是自上而下;子目標選擇順序是從左向右;(歸結后)產(chǎn)生的新子目標總是插入被消去的目標處(即目標隊列的左部)。PROLOG的這種歸結演繹方法被稱為SLD(LinearresolutionwithSelectionfunctionforDefiniteclause)歸結,或 SLD反駁 消解法。 SLD歸結就是 PROLOG程序的運行機理,它也就是所謂的 PROLOG語言的過程性語義。 第 2章 人工智能程序設計語言 Turbo PROLOG程序設計 Turbo PROLOG的程序結構 一個完整的 Turbo PROLOG( )程序一般包括常量段 、 領域段 、 數(shù)據(jù)庫段 、 謂詞段 、 目標段和子句段等六個部分 。 各段以其相應的關鍵
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1