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