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