人工智能程序設(shè)計(jì)_第1頁(yè)
人工智能程序設(shè)計(jì)_第2頁(yè)
人工智能程序設(shè)計(jì)_第3頁(yè)
人工智能程序設(shè)計(jì)_第4頁(yè)
人工智能程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

其次章PROLOGPROLOG利用人工智能語(yǔ)言,依據(jù)學(xué)問表達(dá)、學(xué)問推理、學(xué)問獵取技術(shù)與方法,設(shè)計(jì)和編寫相應(yīng)的程序,才能構(gòu)成各種人工智能系統(tǒng),實(shí)現(xiàn)人工智能的應(yīng)用。一.人工智能程序的特點(diǎn)學(xué)問信息處理:在人工智能系統(tǒng)中,通常需要進(jìn)展符號(hào)形式的學(xué)問信息處理。如,比較、選擇、分類、檢索、存取?。對(duì)文字、圖像、圖形、語(yǔ)言進(jìn)展理解和識(shí)別的符號(hào)信息處理。非確定性推理:如在專家系統(tǒng)中,往往需要利用專家的閱歷學(xué)問以及有關(guān)問題的啟發(fā)信息進(jìn)展非確定性推理,其中包括,模糊性——與人的思維、語(yǔ)言、行為的非確定性有關(guān);隨機(jī)性——與大事發(fā)生的偶然性有關(guān)。動(dòng)態(tài)執(zhí)行:由于人工智能問題求解過程的非確定性,在執(zhí)行過程中需要?jiǎng)討B(tài)的調(diào)用、存儲(chǔ)學(xué)問,同時(shí),需要?jiǎng)討B(tài)地安排與釋放存儲(chǔ)空間。學(xué)問治理:人工智能的問題求解是以學(xué)問獵取、表達(dá)、存儲(chǔ)和學(xué)問推理、利用為根底的。人工智能系統(tǒng)的學(xué)問水平的凹凸和解題力量的水平,取決于系統(tǒng)所擁有的學(xué)問多少和學(xué)問治理的水平。因此,如何對(duì)大量的學(xué)問信息進(jìn)展合理存儲(chǔ)以及有效治理、設(shè)計(jì)和建筑相應(yīng)學(xué)問庫(kù)以及治理系統(tǒng),是需要解決的關(guān)鍵技術(shù)問題?!伴_放式”系統(tǒng):所謂“開放式”系統(tǒng)是指其性能和構(gòu)造可以不斷修改、擴(kuò)大的系統(tǒng)。由于人工智能問題的非確定性,動(dòng)態(tài)執(zhí)行的需要,以及學(xué)問庫(kù)增刪、二. 人工智能程序設(shè)計(jì)語(yǔ)言輯推理、規(guī)劃決策、分析論證、符號(hào)處理等,要求語(yǔ)言便于進(jìn)展學(xué)問表達(dá)、存儲(chǔ)、處理的角度來看,對(duì)人工智能程序設(shè)計(jì)語(yǔ)言要求如下:回溯功能Back-trackin,即返回追蹤功能;守護(hù)功能Demo,即在非確定性算法中的程序守護(hù)功能;模式調(diào)用功能Pattern-directedInvocatio,即模式匹配功能;過程證明功能ProcedureSpecificatio,用于解釋推理過程;并行處理功能Parallel-Proceedin現(xiàn)有的人工智能語(yǔ)言,可分為兩大類:函數(shù)型語(yǔ)言主要用于表處理和函數(shù)處理,其典型的語(yǔ)言如LISP,特點(diǎn)是:程序不是逐字操作方式;程序與數(shù)據(jù)是分開的,程序本身不涉及數(shù)據(jù),可以通用;程序有層次構(gòu)造,可用簡(jiǎn)潔程序構(gòu)造簡(jiǎn)單程序;程序是靜態(tài)的、非重復(fù)的;程序用的內(nèi)部函數(shù)和函數(shù)型都是可通用的;程序描寫的是確定性問題的求解過程。用戶編程時(shí),要知道解方法;還要告知計(jì)算機(jī)“怎么做規(guī)律型語(yǔ)言主要目的是用于學(xué)問信息處理,通過規(guī)律推理求解問題。其代表的語(yǔ)言是PROLOG,這類語(yǔ)言的特點(diǎn)是:具有符號(hào)處理、模式匹配、檢索查詢、自我擴(kuò)大,在非確定環(huán)境中運(yùn)用;化;高度并行處理,適合于并行推理;尚處于開發(fā)過程中,還有另一些有待爭(zhēng)論的問題。由于人工智能程序設(shè)計(jì)的特點(diǎn),傳統(tǒng)的指令型語(yǔ)言使用不便利,效率較低,只能在簡(jiǎn)潔的系統(tǒng)中應(yīng)用。而函數(shù)型、規(guī)律型語(yǔ)言比指令型語(yǔ)言更適合于人工智能的應(yīng)用。其中,LISP和PROLOG典型代表語(yǔ)言LISP和PROLOG外,還有很多其它的人工智能語(yǔ)言,在此不再贅述。其次節(jié)PROLOG語(yǔ)言的應(yīng)用進(jìn)展與特點(diǎn)一. PROLOG語(yǔ)言的進(jìn)展和應(yīng)用PROLOG—“ProgramminginLogic”(用規(guī)律進(jìn)展程序設(shè)計(jì))的縮寫。它的思想最早由R.Kawalski1972年世界上第一個(gè)PROLOG系統(tǒng)由A.Colmeraner及其爭(zhēng)論小組在法國(guó)馬賽研制成功。PROLOG及規(guī)律程序設(shè)計(jì)為根底,最初目的是想設(shè)計(jì)一個(gè)處理規(guī)律推理問題的會(huì)話式語(yǔ)言,以處理一階謂詞短語(yǔ)為背景。后來,由于它簡(jiǎn)潔的文法、豐富的表達(dá)?,F(xiàn)在PROLOG語(yǔ)言已被廣泛地應(yīng)用于關(guān)系數(shù)據(jù)庫(kù)、抽象問題求解、數(shù)理規(guī)律、公式處理、自然語(yǔ)言理解、專家系統(tǒng)以及人工智能的很多領(lǐng)域,例如,1984年美國(guó)得克薩斯大學(xué)計(jì)算機(jī)科學(xué)系的RobertSimmons教授用PROLOG和LISP混合實(shí)1981RROLOG作為第五代計(jì)算機(jī)的PROLOGPROLOG更加令人矚目。到目前為止,PROLOG是一種最主要的人工智能程序設(shè)計(jì)語(yǔ)言。因此了解把握PROLOG語(yǔ)言對(duì)計(jì)算機(jī)科學(xué)工作等,特別是從事人工智能和第五代計(jì)算機(jī)爭(zhēng)論工作的人員是格外重要的。二. PROLOG語(yǔ)言的特點(diǎn)作為一種程序設(shè)計(jì)語(yǔ)言,PROLOG具有兩方面的特性:一是它描寫求解問題的方式,二是語(yǔ)言本身的特點(diǎn)。眾所周知,通常的程序設(shè)計(jì)語(yǔ)言〔如,F(xiàn)ORTRAN,PASCAL〕求解問題時(shí)需PROLOG描述對(duì)象和事實(shí)之間的規(guī)律關(guān)系。程序員一般不必告知計(jì)算機(jī)運(yùn)算執(zhí)行的先后次序,因此,從能夠描述問題本身,而不必描述求解問題的具體步驟這一點(diǎn)講,PROLOG是更高級(jí)的語(yǔ)言,它可看作一種描述性語(yǔ)言。PROLOG作為一種規(guī)律型的人工智能除了具備的特點(diǎn)之外,它本身還具備如下特點(diǎn):PROLOG的數(shù)據(jù)和程序構(gòu)造統(tǒng)一,它供給了一種全都性的數(shù)據(jù)構(gòu)造〔即項(xiàng)—term〕全部數(shù)據(jù)和程序都是由想構(gòu)造而成的;PROLOG能自動(dòng)實(shí)現(xiàn)模式匹配和回溯,這些人工智能系統(tǒng)中最常用的、最根本的操作。由于PROLOG系統(tǒng)供給了自動(dòng)完成這些操作的功能,使用戶在PROLOG語(yǔ)言這一級(jí)不必考慮這些問題;與LISPPROLOG語(yǔ)言的主要特點(diǎn),它反映在程序和理。PROLOG的全部這些特性,使得PROLOG用于自然語(yǔ)言處理、推理證明、專家系統(tǒng)等。第三節(jié) PROLOG語(yǔ)言的根本語(yǔ)句一. 簡(jiǎn)潔實(shí)例如圖2.1所示的有向圖,下面用PROLOG來描述圖中兩點(diǎn)之間的通路關(guān)系。bdebdec2.1假設(shè)用connected(X,Y)表示從點(diǎn)X到點(diǎn)Y有一條有向邊,則圖中兩點(diǎn)之間的關(guān)系可描述如下:Connected(a,b) connected(a,c) connected(b,d)Connected(e,b) connected(c,d) connected(d,e)定義兩點(diǎn)之間的通路:X到Y(jié)有一條有向邊; 存在一點(diǎn)Z,XZ有一有向邊,ZY個(gè)有一條通路;有規(guī)章:Path(x,y):-connected(x,y).Path(x,y):-connected(x,z),path(z,y).”為定義符,含義為“假設(shè).定義完畢符。??—path(a,b) ;a到b有通路嗎?Yes ;有?—path(b,a) ;b到a有通路嗎?No ;沒有以上就是一個(gè)簡(jiǎn)潔的PROLOG程序,一旦這個(gè)程序進(jìn)入機(jī)器后,那就可以會(huì)話方式進(jìn)展這個(gè)程序。由上述程序可以看出PROLOG語(yǔ)言僅供給了三個(gè)根本語(yǔ)句:⑴事實(shí):它說明一個(gè)問題中的對(duì)象和它們之間的關(guān)系的一些事實(shí);⑵規(guī)章:它用來定義對(duì)象和它們之間的關(guān)系,用來描述一個(gè)事實(shí)依靠于其他一組事實(shí);⑶詢問:用來詢問有關(guān)對(duì)象和它們之間的關(guān)系。PASCALLISP和PROLOG三種語(yǔ)言進(jìn)展編程,從中可以看出PROLOG語(yǔ)言與其它種語(yǔ)言的區(qū)分:PASCAL:FunctionIP(a,b:array[1:n]ofinteger):integer;Var a,i:integer;BeginC:=0;Fori:=1tondoC:=c+a[i]*b[i];End;LISP(defun IP(a,b)(+ First(a,b) Rest(a,b)))(defun First(a,b)(* CAR(a) CAR(b)))(defun Rest(a,b)(IP (CDR(a) CDR(b)))PROLOG:IP([],[],Res):-Res is0.IP([],[b/Y],Res):-Res is0.IP([a/X],[],Res):-Res is0.IP([a/X],[b/Y],Res):-Res is0.由此可看出,PROLOG的語(yǔ)法是面對(duì)規(guī)律而不是面對(duì)機(jī)器的,它的語(yǔ)法是以謂詞規(guī)律的詞語(yǔ)為根底的。二. 事實(shí)句型:P 語(yǔ)意為,P永久為真。例:owns(Susan,horse) ;蘇珊有一匹馬Like(Phillip,Susan) ;菲力譜寵愛蘇珊如:JohnlikesMary. 表示為likes(John,Mary)系的。在PROLOG中,對(duì)象與對(duì)象之間的關(guān)系是以數(shù)據(jù)庫(kù)的形式來存放的,所以數(shù)據(jù)庫(kù)是PROLOG的核心。在宣稱的這些事實(shí)之后,就可以對(duì)系統(tǒng)進(jìn)展提問。?—likes(John,Mary)Yes?—likes(John,Abby)No.說明:全部關(guān)系的名字和對(duì)象名,不能承受小寫;關(guān)系符寫在前面,對(duì)象在其后而且用括號(hào)括起來;當(dāng)事實(shí)描述完畢,則用“.”來完畢。在上述例子中,likesJohn,Mary則為變?cè)W兞?,不能用大寫字母,它是一種規(guī)律型的變量,而且是一種靜態(tài)的關(guān)系,即一旦確定之后,便不再轉(zhuǎn)變。如:?—likes(John,x)一旦在事實(shí)庫(kù)中找到likes(John,Mary)之后,則x=”Mary”,x便不再轉(zhuǎn)變。x=”Mary”PROLOG中,一個(gè)名字一經(jīng)使用,這個(gè)名字就指一特定的對(duì)象,因此,當(dāng)我們使用名字時(shí),必需打算如何來解釋這個(gè)名字,只要在一給定的問題中所使用的名字解釋全都,就不會(huì)有任何問題。假設(shè)有以下事實(shí):likes(John,flowers).likes(John,Mary).likes(Paul,Mary).提問時(shí)應(yīng)當(dāng)留意:⑴?—likes(John,x)①x=flowers ↘只有一個(gè)結(jié)果,便可回車②x=flowers ;假設(shè)再連續(xù)查找,John還寵愛什么,用分號(hào),再回車個(gè)開頭,即接著上次匹配的下一個(gè)數(shù)據(jù)開頭;二是使變量x的事實(shí)無效—脫解。⑵假設(shè)向John?—likes〔John,x〕x=flowers;x=Mary;no.⑶對(duì)JohnMary?—likes(John,x),likes(Mary,x)三.規(guī)章

xJohn和Mary一樣,即,Mary是否也寵愛John留意:1.提問挨次按從左到右進(jìn)展,每個(gè)目標(biāo)語(yǔ)句之間用“2語(yǔ)句中實(shí)現(xiàn)了匹配,則該變量被實(shí)化。此時(shí),其余的目標(biāo)語(yǔ)句中的變量x均被實(shí)化,其內(nèi)容與第一個(gè)語(yǔ)句實(shí)化后的內(nèi)容一樣。3.一個(gè)匹配,假設(shè)其余都失敗,第一個(gè)句子再次往下移動(dòng)進(jìn)展其次次實(shí)化,直至都滿足,否則當(dāng)數(shù)據(jù)庫(kù)搜尋完畢都不能匹配,則稱整個(gè)提問失敗。句型:P:-P1,P2,?Pn.語(yǔ)義:假設(shè)P1∩P2∩?∩PnPlikebil,like〔to,.只要湯姆寵愛的比爾也寵愛。如:Likes〔John,x〕:-likes〔x,flowers〕.規(guī)章頭 定義符 規(guī)章體 完畢符上句規(guī)章的含義是:假設(shè)x寵愛花,則John例:buy〔x,car〕:-have〔x,money〕.假設(shè)某人有錢,則他就買汽車Bir:-anima〔feather.如x是動(dòng)物且有羽毛,則就是鳥Siste〔y:-femal〔,patent〔xfparent〔yf,m〕假設(shè)x是女的,并且xyxy連接,表示“與”關(guān)系。通常一個(gè)謂詞〔如:likes,sister〕能用事實(shí)和規(guī)章的混合來定義,如,likes〔John,food〕.Likes〔John,x〕:-person〔x〕.這些事實(shí)和規(guī)章稱為一階謂詞的子句,以后每當(dāng)我們涉及一個(gè)事實(shí)和一個(gè)規(guī)章時(shí),則用子句來統(tǒng)稱。關(guān)于規(guī)章定義中的兩個(gè)概念:常量:PROLOG即:原子和整數(shù)。

以小寫字母開頭的字母數(shù)字串,john,talk,like,sister原子 僅由符號(hào)組成=,→:—,?—常量整數(shù)通常意義下的整數(shù),由數(shù)學(xué)組成,不包括小數(shù)點(diǎn)原子是構(gòu)成各種事實(shí)或規(guī)章的根本符號(hào)。變量:_有“_”,,如Input,Who,_3_blind_men,?它用來代表某些尚不能命名的對(duì)象,它好象代詞。寵愛John但并不需要知道到底是誰(shuí)寵愛他,這時(shí)可以用無名變量來問。johlikes〔_,john〕.無名變量的使用,往往發(fā)生在當(dāng)表達(dá)某一事情時(shí),并不關(guān)心事情中某一變量到底代表什么具體對(duì)象,而只需要關(guān)心它的存在。四.詢問句型:?-P1,P2,?,Pn.語(yǔ)義:P1∩P2∩?∩Pn例: likes〔x,reading〕andlikes〔x,swimming〕.誰(shuí)寵愛讀書又寵愛游泳雖然用戶可以在任何時(shí)候向PROLOG提任何問題,但一般而言,程序員總是先把事實(shí)和規(guī)章供給應(yīng)PROLOG,然后再詢問有關(guān)問題。PROLOGPROLOG的數(shù)據(jù)庫(kù)中去找是否有這樣一個(gè)事實(shí)或規(guī)章。假設(shè)答復(fù)為yes,則成功,否則為no,有兩種含義,一是不或沒有等,二是不知道。PROLOG中的變量可以是被實(shí)例化的一個(gè)變量被實(shí)例化是指這個(gè)變量代表一個(gè)確定的對(duì)象,一個(gè)變量未被實(shí)例化是指當(dāng)這個(gè)變量所代表的東西還不知道。因此,PROLOG允許一個(gè)未實(shí)例化的變量匹配任何一個(gè)對(duì)象。設(shè)事實(shí)庫(kù):likes〔john,flowers〕.Likes〔john,wine〕.Likes〔Paul,wine〕.Likes〔Paul,john〕.考慮下面的一組提問:?—like〔john,,likePaul,.這個(gè)語(yǔ)句有兩個(gè)目標(biāo)組成,每個(gè)目標(biāo)包含一個(gè)x,像規(guī)章一樣,這兩個(gè)x表示同一個(gè)對(duì)象。當(dāng)PROLOG收到這個(gè)詢問,它首先企圖滿足第一個(gè)目標(biāo),找是否有某樣?xùn)|西x,john寵愛。在第一個(gè)目標(biāo)匹配第一個(gè)事實(shí),變量x被實(shí)例化,比方flowers,PROLOGPaulflowers,但此時(shí)失敗,于是,PROLOG回溯到第一個(gè)目標(biāo),企圖重滿足這個(gè)目標(biāo),此時(shí),它首先把x脫解為未實(shí)例化的,然后從其次個(gè)事實(shí)開頭往下查找。當(dāng)找到其次個(gè)事實(shí)匹配目標(biāo)時(shí),于是,這次x實(shí)例化為wine,現(xiàn)在其次個(gè)目標(biāo)中x也為wine,這樣likes〔Paul,wine〕匹配第三個(gè)事實(shí),最終答復(fù)x=wine。PROLOG中規(guī)章和詢問中的變量的作用域僅是這個(gè)規(guī)章和這個(gè)詢問,一旦某個(gè)變量,如x被實(shí)例化為某個(gè)對(duì)象,則在同一作用域內(nèi)的全部x都被實(shí)例化為某個(gè)對(duì)象,在PROLOG例:假設(shè)一個(gè)人是小偷,并且他寵愛某樣?xùn)|西,則這個(gè)人可能會(huì)偷這個(gè)東西,假設(shè)存在事實(shí)庫(kù):thief〔John〕.Likes〔Paul,food〕.Likes〔John,wine〕.May_steal〔John,x〕.提問:?—_may_steal(John,x).PROLOG①首先搜尋may_stealJohnx,問題x匹配規(guī)章中的y,則稱規(guī)章中的x被問題中的xx和規(guī)章中的y對(duì)象。②thiex〕和like〔,yx被John實(shí)例化。③其次個(gè)匹配規(guī)章like,y,因x=Johlike〔Pau,。④子目標(biāo)likes〔Paul,x〕與likes〔Paul,food〕匹配。⑤X被實(shí)例化為food,由共享原則,y也實(shí)例化為food。⑥依次返回,整個(gè)匹配成功,則x=food。五.幾點(diǎn)說明回溯問題的進(jìn)一步爭(zhēng)論P(yáng)ROLOG利用的子句〔事實(shí)或規(guī)章〕來滿足這些目標(biāo)〔只有匹配目標(biāo)的子句才被利用。一個(gè)事實(shí)能引起一個(gè)目標(biāo)馬上被滿足還不滿足計(jì)算時(shí)你詢問的答復(fù),則打入“打算是否匹配的法則①一個(gè)未實(shí)例化的變量將匹配任何對(duì)象作為匹配結(jié)果或此變量被實(shí)例化 后化為那個(gè)對(duì)象或與它們共享;②一個(gè)整數(shù)或原子將只匹配它自己;③一個(gè)構(gòu)造將匹配另一個(gè)具有一樣函數(shù)符號(hào)和一樣變?cè)獋€(gè)數(shù)的構(gòu)造。PROLOG④宣稱有關(guān)對(duì)象及其之間關(guān)系的事實(shí);⑤定義有關(guān)對(duì)象及其之間關(guān)系的規(guī)章;⑥對(duì)對(duì)象及其關(guān)系進(jìn)展提問。其他⑦在使用PROLOGwine,假設(shè)定義為like〕則時(shí)間久就會(huì)不知道此語(yǔ)句是什么意思了。因此在選取變量名時(shí)盡量使用事實(shí)與問題,比較清楚,真實(shí)。⑧在PROLOG程序中,可以用“/*”和“*/”參加注釋,幫助對(duì)事實(shí)和規(guī)章庫(kù)的治理。第四節(jié)PROLOG一. 有關(guān)項(xiàng)的概念PROLOG供給了一個(gè)全都的數(shù)據(jù)構(gòu)造稱為項(xiàng),全部的數(shù)據(jù)和PROLOG程序都是由項(xiàng)構(gòu)造而成的。項(xiàng)的定義用BNF〈項(xiàng)|〕即,項(xiàng)可以是變量、常量、構(gòu)造或括在括號(hào)中的項(xiàng)。構(gòu)造—或稱為復(fù)合項(xiàng),它是由一組其他對(duì)象組成的單個(gè)對(duì)象,這些其他對(duì)象稱為它的成分,把幾個(gè)成分組合成一個(gè)構(gòu)造作為單個(gè)對(duì)象是很有用處的。}〕〈函數(shù)符〉∷=〈原子〉下面是一些構(gòu)造的例子:Owns〔john,book〕Owns〔john,book〔pnday,author〔clocksin,McLeish〕〕A〔b,c,d〕+〔3,*〔5,2〕或3+5*2 ?二.PROLOG在PROLOG比較謂詞兩個(gè)關(guān)系表達(dá)式之間的關(guān)系符有:<,<=,=,>,>=,<>算術(shù)運(yùn)算謂詞:+,-,*,/算術(shù)函數(shù):random〔x〕 把x約束為一個(gè)大于0小于1的隨機(jī)數(shù)Round〔x〕 返回x的四舍五入數(shù)Xdivy 返回x除以y的商Abs〔x〕 返回x確實(shí)定值Cos〔x〕 返回弧度x的余弦Sin〔x〕 返回弧度x的正弦Tan〔x〕 返回弧度x的正切值A(chǔ)rctan〔x〕返回弧度x的反正切值Exp〔x〕 返回e的x次冪,其中,e=2。71828Ln〔x〕 返回x的自然對(duì)數(shù)Log〔x〕 返回x的以10為底的對(duì)數(shù)Sqrt〔x〕 返回x的平方根輸入/輸出謂詞①writlist1,l“l(fā)ist2,l〕.l1a,b],l2[1,2],則結(jié)果list1=[a,b],list2[1,2]。②nl③readln〔line〕變量line輸入一個(gè)串給line64k,每個(gè)串以回車完畢。④readint〔x〕 x輸入一個(gè)整數(shù)給x。⑤readreal〔x〕x輸入一個(gè)實(shí)型數(shù)給x。⑥r(nóng)eadchar〔charparam〕 charparam為字符型變量;輸入一個(gè)字符給charparam。掌握謂詞用于掌握PROLOG程序運(yùn)行及其推理求解而設(shè)立的①fail表示失敗,即推理求解過程失敗。用fail作為子目PROLOG程序運(yùn)行到fail,必引起回溯〔即強(qiáng)制回溯;的回溯是不行能的。截?cái)嘣刂饕糜趦蓚€(gè)方面。ⅰ〕當(dāng)事先知道不行能產(chǎn)生有意義的解,且回溯會(huì)鋪張時(shí)間和空間,使用截?cái)嗄芗涌斐绦蜻\(yùn)行且能節(jié)約空間。ⅱ〕程序的規(guī)律構(gòu)造在下述三種狀況下,需要用截?cái)嘀^詞:用它阻擋對(duì)規(guī)章中的前幾個(gè)子目標(biāo)的回溯,例如:ra,bc 這是我們僅對(duì)子目標(biāo)的a,b興趣用它來阻擋對(duì)下一個(gè)子句的回溯r的三個(gè)子句R1:—,,,cR:—,dR3:—e兩截?cái)嘣~使r1r2r3用它來將非確定性子句轉(zhuǎn)化為確定性的子句。三.PROLOGfdfdcahebgi圖2.2 建筑物平面圖所謂“迷宮”問題,即迷宮搜尋〔SearchingMaze〕問題。設(shè)某建筑物有在哪個(gè)房間,何處是出口,因此需要搜尋。當(dāng)找到建筑物出口時(shí),假設(shè)已經(jīng)找到了有的房間,那么搜尋完畢。該建筑物各房間可以自由出入為此,在搜尋過程中需要有個(gè)登記表,記錄已搜尋過的房間。這樣,凡登記表上有的房間號(hào)不再搜尋,凡沒有登記過的,可進(jìn)展搜尋并登記房間號(hào)。如此,邊搜尋邊登記,直到找到出口而且在登記表中已有的房間號(hào)為止。該建筑物的平面構(gòu)造如下圖。其中,b,c,d,e,g,h,i為房間號(hào),a為建筑物的入口,f為建筑物的出口,房間之間有門〔door〕相通,在房間g中,有關(guān)事實(shí)表示如下:Door〔a,b〕.Door〔b,i〕Door〔b,e〕.Door〔e,d〕Door〔i,g〕Door〔e,h〕Door〔g,e〕Door〔d,f〕Door〔d,c〕hasphone〔g〕“迷宮”問題搜尋步驟如下:①到某房間的門口;②假設(shè)此房間號(hào)在登記表〔visitedrooms〕中,則不再搜尋,返回①;④是都出口?⑤假設(shè)為出口,且在房間中有,則搜尋成功,則表中所登記的搜尋路徑即為問題的解,停頓搜尋,打印搜尋路徑。⑥假設(shè)不符合,返回①,連續(xù)搜尋。go由入口here向出口thereGo〔her,ther〕ifrout〔hertherher〕子句go調(diào)用routehereRouteRoute〔f,f,visitedrooms〕ifHasphone〔tel〕andMember(tel,visitedooms)andReversevisitedrooms,temp)andWrite(temp)andnl.f搜尋路徑,在這里求解出的只有一條路徑。其中,member子句用來推斷表中是否含有某元素。Member〔x,[x1_]〕.Member〔x,[_1H]〕ifmember〔x,H〕.由于收集到visitedrooms在后,承受reverse子句可得visitedroomsRevers,Y:revers〔[,,Y〕.Reverse〔Y,[],Y〕.ReversX,[u|X2,:—revers〔[u|X1,X,Y.RouteRoute〔room,way_out,visitedrooms〕ifNeighborroom(room,nextroom)andNot(member(nextroom,visitedrooms))andRoute(nextroom,way_out,(nextroom(visitedrooms))).roomneighborroom子

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論