曹飛騰
【摘 要】本文主要運(yùn)用prolog實(shí)現(xiàn)面向?qū)ο笾R(shí)表示的內(nèi)容,并且利用推理機(jī)的功能實(shí)現(xiàn)具體的知識(shí)表示。
【關(guān)鍵詞】面向?qū)ο?知識(shí)表示;推理機(jī)
一、面向?qū)ο蟮闹R(shí)表示方法
目前,面向?qū)ο蠹夹g(shù)的研究已經(jīng)深入到計(jì)算機(jī)軟、硬件的多個(gè)領(lǐng)域,人們開(kāi)始把面向?qū)ο蟮乃枷?、方法用于智能系統(tǒng)的設(shè)計(jì)與構(gòu)造,并在知識(shí)表示、知識(shí)庫(kù)的組成與管理、專家系統(tǒng)的設(shè)計(jì)等方面有了一定進(jìn)展。相對(duì)于傳統(tǒng)的知識(shí)表示方法,面向?qū)ο蟮闹R(shí)表示方法從客觀世界的具體事物及事物間的聯(lián)系進(jìn)行抽象,更符合人們認(rèn)識(shí)問(wèn)題和分析問(wèn)題的習(xí)慣思維方式,并具有代碼重用和可維護(hù)性好等特點(diǎn)。用面向?qū)ο蟮姆椒ū硎镜闹R(shí)系統(tǒng)中,對(duì)象的靜態(tài)屬性就是對(duì)象具有知識(shí),而對(duì)知識(shí)的處理方法和操作就是該對(duì)象所具有行為,因此,一個(gè)從客觀世界抽象出來(lái)的對(duì)象可表示為:<對(duì)象>::=(ID,DS,MS,MI)其中:ID是對(duì)象的標(biāo)識(shí)符,即對(duì)象名;DS是對(duì)象的數(shù)據(jù)結(jié)構(gòu),描述對(duì)象的靜態(tài)屬性;MS是對(duì)象的方法,用于說(shuō)明對(duì)象提供的對(duì)靜態(tài)數(shù)據(jù)進(jìn)行處理的方法操作,由于對(duì)象的數(shù)據(jù)只能由其具體操作來(lái)改變,其它對(duì)象不能操縱,從而體現(xiàn)了面向?qū)ο蠓椒ㄋ哂行畔㈦[蔽性即封裝性;MI作為對(duì)象的消息接口,用于接收外部信息和驅(qū)動(dòng)內(nèi)部相關(guān)操作及產(chǎn)生向外的輸出信息,問(wèn)題的求解就是依靠對(duì)象間傳遞消息完成的。面向?qū)ο笤O(shè)計(jì)需要將一組客觀對(duì)象具有的共同特征抽象出來(lái),即采用從特殊到一般的歸納方法構(gòu)造類,為系統(tǒng)構(gòu)成提供了同一類對(duì)象之間代碼共享的手段。此外,面向?qū)ο笤O(shè)計(jì)還是一個(gè)建立類層次的過(guò)程,派生類通過(guò)繼承機(jī)制從較簡(jiǎn)單的基類中繼承特征,實(shí)現(xiàn)代碼重用,為系統(tǒng)構(gòu)成提供了類之間代碼共享的手段。用面向?qū)ο蠓椒ū硎局R(shí)時(shí)需要對(duì)類進(jìn)行描述,具體描述形式如下:
class<類名>[:
[<類變量表>]
Structure
<對(duì)象靜態(tài)結(jié)構(gòu)描述>
Method
<對(duì)象的操作定義>
Restraint
[<限制條件>]
END
其中,類名是系統(tǒng)中類的唯一標(biāo)識(shí),如果該類是由其它類繼承而來(lái),則superclass指出其基類名字,<類變量表>給出類所有對(duì)象所共享的一組變量,<對(duì)象靜態(tài)結(jié)構(gòu)描述>用于描述類對(duì)象的數(shù)據(jù)結(jié)構(gòu),<對(duì)象的操作定義>給出對(duì)類對(duì)象可進(jìn)行的操作和方法,也可以是一組規(guī)則,<限制條件>指出該類對(duì)象應(yīng)滿足的限制條件。
二、推理機(jī)制
領(lǐng)域?qū)<医鉀Q領(lǐng)域問(wèn)題的能力主要體現(xiàn)在兩個(gè)方面:
一是專家擁有大量的知識(shí),二是專家具有選擇知識(shí)來(lái)解決問(wèn)題的能力。知識(shí)庫(kù)和推理機(jī)是專家系統(tǒng)必不可少的組成部分,是基于知識(shí)的推理的基礎(chǔ)和核心。在故障診斷中,推理過(guò)程即是根據(jù)故障事實(shí),利用知識(shí)庫(kù)中的知識(shí),采用某種推理策略得到故障的原因(位置)。在面向?qū)ο蟮闹R(shí)表示方法中,知識(shí)對(duì)象將實(shí)體屬性、知識(shí)以及知識(shí)處理方法封裝在一起,知識(shí)對(duì)象通過(guò)消息(接口)與外部發(fā)生聯(lián)系,整個(gè)推理過(guò)程就是消息在各對(duì)象之間傳遞的過(guò)程。面向?qū)ο蟮耐评磉^(guò)程是知識(shí)對(duì)象類的實(shí)例化過(guò)程,如果傳遞到知識(shí)對(duì)象的消息觸發(fā)了其方法,則該知識(shí)對(duì)象被激活,知識(shí)對(duì)象類實(shí)例化一個(gè)知識(shí)對(duì)象過(guò)程是:如果該對(duì)象還包含其他對(duì)象類作為自己的成員,則首先實(shí)例化那些對(duì)象,然后進(jìn)行屬性填充、繼承、過(guò)程調(diào)用等方法獲取知識(shí),建立起一個(gè)新對(duì)象。對(duì)象創(chuàng)建后開(kāi)始進(jìn)行推理,推理首先在對(duì)象內(nèi)部,在知識(shí)對(duì)象內(nèi)部確定導(dǎo)致該知識(shí)對(duì)象對(duì)應(yīng)的結(jié)構(gòu)元素發(fā)生故障的子結(jié)構(gòu)或發(fā)生故障的同層次的其它結(jié)構(gòu)元素,如果是子結(jié)構(gòu)故障,說(shuō)明故障發(fā)生在對(duì)象所在實(shí)體,則引導(dǎo)系統(tǒng)向下一層次進(jìn)行診斷;若是同層次的其它結(jié)構(gòu)元素發(fā)生故障,則轉(zhuǎn)到同層次的其它知識(shí)對(duì)象進(jìn)行診斷推理。按上述方法將推理一直進(jìn)行下去,直到得到診斷結(jié)果。整個(gè)推理過(guò)程可以表示成一個(gè)樹(shù)形結(jié)構(gòu),樹(shù)的葉子結(jié)點(diǎn)就是診斷的結(jié)果。
三、實(shí)例
(一)代碼
在prolog中用對(duì)象的知識(shí)表示來(lái)表示人與愛(ài)好的關(guān)系,其代碼如下:
predicates
domains————/定義的域,這里之定義Name 和hobby兩域/
name,hobby=symbol
predicates———————————/謂詞/
likes(name,hobby)
friend(name,name)
clauses————————————/類的定義/
likes(bell,sports).
likes(mary,music).
likes(mary,sports).
likes(jane,smith).
friend(john,X):- likes(X,sports),likes(X,music).
goal
likes(X,sports),likes(X,music)
其在prolog推理機(jī)中寫(xiě)入的代碼如下:
likes(bell,sports).
likes(mary,music).
likes(mary,sports).
likes(jane,smith).
friend(john,X):- likes(X,sports),likes(X,music).
(二)利用推理機(jī)的方式實(shí)現(xiàn)面向?qū)ο蟮闹R(shí)表示內(nèi)容
首先安裝好prolog并注冊(cè),根據(jù)prolog教程中對(duì)推理機(jī)的安裝與調(diào)試辦法,將其進(jìn)行調(diào)試。其打開(kāi)頁(yè)面如下圖1.1所示:
第二步:選擇“file”—“new”。當(dāng)打開(kāi)新建的頁(yè)面后,將上面知識(shí)表示的代碼粘貼其中,如圖1.2所示:
第三步:選擇“Engine”—“reconsult”,將要推理的內(nèi)容載入推理機(jī)。
第四步:在“Dialog”鍵入“l(fā)ikes(X,music)”并按回車,就可出現(xiàn)推理的結(jié)果。如圖1.3所示:
運(yùn)行結(jié)果為:
X=mary
【參考文獻(xiàn)】
[1]曹元大,徐漫江.面向?qū)ο笾R(shí)表示在專家系統(tǒng)開(kāi)發(fā)工具中的應(yīng)用[J].北京:北理工大學(xué)學(xué)報(bào),2000,20(6):688-692.
[2]張欽,人工智能中知識(shí)表示方法之比較[J].科教文匯.2008年9月
[3]雷英杰,邢清華,王濤.人工智能(AI)程序設(shè)計(jì)(面向?qū)ο笳Z(yǔ)言)[M].清華大學(xué)出版社.2002年
[4]劉啟和,楊國(guó)緯.面向?qū)ο蟮闹R(shí)表示[J].計(jì)算機(jī)科學(xué).2004年Vol.3 NO3.