JP2624751B2 - コンパイル型知識処理ツールの高速推論方法 - Google Patents

コンパイル型知識処理ツールの高速推論方法

Info

Publication number
JP2624751B2
JP2624751B2 JP63053523A JP5352388A JP2624751B2 JP 2624751 B2 JP2624751 B2 JP 2624751B2 JP 63053523 A JP63053523 A JP 63053523A JP 5352388 A JP5352388 A JP 5352388A JP 2624751 B2 JP2624751 B2 JP 2624751B2
Authority
JP
Japan
Prior art keywords
machine language
instruction
fact
rule
instruction sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP63053523A
Other languages
English (en)
Other versions
JPH01229329A (ja
Inventor
憲一 黒沢
優 島田
忠秋 坂東
利彦 中野
利弘 林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP63053523A priority Critical patent/JP2624751B2/ja
Priority to EP19890302317 priority patent/EP0332427A3/en
Publication of JPH01229329A publication Critical patent/JPH01229329A/ja
Priority to US08/145,299 priority patent/US5422980A/en
Application granted granted Critical
Publication of JP2624751B2 publication Critical patent/JP2624751B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/046Forward inferencing; Production systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、エキスパートシステムの高速処理方法に係
り、特にルールや事実をコンピユータの機械語命令列に
変換して高速推論を実現する推論処理方法に関する。
〔従来の技術〕
従来、論理型言語のパターンマツチ機能を用いてエキ
スパートシステムの高速な推論エンジンを構築する方式
については、ロジツク・プログラミング・コンフアレン
ス'87,1987年,第233頁から242頁(The Logic Programm
ing Conterence'87(1987)pp233−242)において論じ
られている。
〔発明が解決しようとする課題〕
上記従来技術は、論理型言語PROLOGを用いて、PROLOG
言語自身が有しているパターンマツチ機能とバツクトラ
ツク機能(PROLOGについては文献:中島:PROLOG共立出
版に詳しく述べられている)を効果的に利用することに
より高速な推論エンジンを構築しようとするものであ
る。このため、推論エンジンの必須機能である“実行可
能なルールとその条件を満足する事実の組合せからなる
解情報をすべて求めて、解情報集合を生成する”機能を
効率良く実現できない問題があつた。すなわち、PROLOG
は、ユニフイケーシヨンと呼ぶ変数に値を設定するため
のパターンマツチ機能と自動的に後戻りして別なルール
を選択するバツクトラツク機能を用いて、唯一つの実行
可能なルールを求めることを基本にしているため、推論
エンジンの必須機能である“実行可能なルールをすべて
求めること”が本質的に不得意であることに原因があつ
た。上記従来技術では、上記解情報集合をPROLOGのフア
クト文で実現し、推論の実行時に上記フアクト文をPROL
OGのassertを用いて追加し、retractを用いてあるファ
クト文を削除する必要があつた。このために、上記解情
報の生成や削除処理は、PROLOGのワークエリア上の解情
報を機械語命令に変換したりPROLOGの中間語表現形式へ
変換する必要があつた。さらに上記変換した機械語命令
または中間後を命令コード格納エリアや中間後格納エリ
アへコピーしなければならないため、高速処理が困難で
あつた。
本発明の目的は、前向き推論を行う推論エンジンの基
本機能である、実行可能なルールを全て求めて、各々の
解情報を更新することを高速に実行し得るコンパイル型
処理ツールにおける高速推論方法を提供することにあ
る。
〔課題を解決するための手段〕
上記目的は、事実の知識とルールとからなる知識ベー
スをコンピュータが実行するための機械語命令へ変換
し、該変換された機械語命令列と当該変換された機械語
命令列を実行することにより生成される解情報の一つを
選択する解情報選択機械語命令列を実行して推論を行う
推論システムにおける推論方法において、解情報選択機
械語命令列を用いて選択された解情報を利用して、事実
から変換された機械語命令列のデータ部分を変更するこ
とにより事実を更新する事実変更手順と、さらに、更新
された事実を参照するルールに対応する機械語命令列
を、事実管理テーブルを用いて実行する手順により達成
される。
〔作用〕
解情報集合を高速に生成するために、まず、解情報選
択機械語命令列を用いて選択された解情報を利用して、
事実から変換された機械語命令列のデータ部分を変更す
る事実変更手順により、高速に事実を更新することが可
能になる。
さらに、更新された事実を参照するルールに対応する
機械語命令列を管理するテーブルの事実管理テーブルを
用いて求める手順により、事実の更新により再び実行す
る必要のある機械語命令列を高速に求めて実行すること
が可能になる。
以上の手順により、解情報を選択後、高速に事実を更
新してから、次々と別の実行可能なルールを全て求め
て、各々の解情報を高速に生成することが可能になる。
〔実施例〕
まず最初に、ルールと事実の知識の例を第2図に示
し、第3図において、その実行過程を説明する。
第2図(A)は判断の知識の例である。すなわち、属
性“値”が“人間”である事実Xが存在すれば、その事
実Xの属性“値”を“死ぬ”に変更せよという言葉のル
ールであり、(B)は事実を示す知識の例で、ソクラテ
スは属性“値”として“人間”をもつという意味であ
る。
第3図に示すように、この例を用いた場合の推論エン
ジンの実行過程は前向き推論を前提にすると、事実1
(C)がルールの条件(D1)を満足するか調べ、もし成
立すればルール1と事実1と変数Xの値からなる解情報
・(ルール1,事実1,X=ソクラテス)を解情報保持エリ
アへ保持する。この例では他に解情報が存在せずしかも
実行可能なルールは、上記解情報内のルールだけなの
で、次のルールの実行処理は(D2)に従い、変数Xで示
された事実であるソクラテスの属性“値”の値を“死
ぬ”に変更する処理を行う。この結果、新たな事実
(E)(事実2:ソクラテス値=死ぬ)が作成される。次
に変更前の事実1をもつ解情報を解情報保持エリアから
削除する処理を行う。この結果、解情報保持エリアには
解情報が存在しなくなる。次に、新たな事実2を用いて
ルールの条件(D1)を満足するか調べると成立しないの
ですべてのルールが成立しないことになり、かつ解情報
保持エリアも解情報が存在しないので処理が終了する。
以上の結果、第3図の(E)の事実2だけが前向き推論
から得られたことになる。
一般には、ルール数,事実数ともに複数個存在するの
で、上記解情報は爆発的に増加し、このような前向き推
論では、すべての解情報を求める処理の高速化が大きな
問題となつている。
第4図に推論エンジンの前向き推論実行メカニズムを
示す。ここでF1は、F5のルールとF4の事実のパターンマ
ツチを行い、F5のルールの条件部を満足する解情報をす
べて求め解情報集合に追加し次のF2の競合解消処理にお
いて、ある戦略に基づいて唯1つのルールを選択する。
例えば、最とも新しい事実によつて成立したルールを優
先的に選択する戦略や、最も多くの条件をもつルールを
優先的に選択する戦略などがある。次にF3において選択
されたルールの実行部を実行し、事実を変更や新しい事
実の生成又は事実の削除などを行い、変更前の事実の下
で成立していた解情報を前記解情報集合から削除すると
ともに、変更または新たに追加された事実の下で新たに
成立するルールをすべて求めるパターンマツチ処理F1を
再度くり返す。
以上のごとく、推論エンジンは、上記解情報集合が空
集合になるまで実行をくり返す。
第5図は、本発明の一実施例を実現するためのハード
ウエア構成図である。ここでHは、記録装置Gに格納さ
れているプログラムを実行するためのコンピユータで、
その機械語命令は、文献D.H.D Warren著のAbstract PRO
LOG Instruction Set,SRI Intrnationl Techmical No.3
09,1983記載の機械語命令を少なくとも有しているもの
とする。Gは記憶装置であり、G1は第1図で示したルー
ルや事実から成る知識ベースを格納するための記憶エリ
アで、G2は本発明の手段を実現するプログラムを格納す
るための記憶エリアで、G3はG2のプログラムによつてG1
の知識ベースから変換された機械語命令列を格納するた
めの記憶エリアであり、G4はG3の機械語命令列が実行さ
れる時に使用するワークエリアであり、上記D.H.D Warr
enの文献ではHeapと呼ばれている領域を意味する。G5は
本発明の一手段を実現するために新設した解情報保持エ
リアで、G6は、G3の機械語命令列が使用する制御エリア
であり、上記文献にてStackと呼ばれている領域を意味
する。またG7は、バツクトラツクが発生した時に変数を
元の値に戻すために当該変数のアドレスを保持する記憶
エリアで、上記文献ではTrail Stackと呼ばれる記憶エ
リアである。またG8は、G1の変換プログラムが使用する
ワークエリアである。
第6図は、本発明の手段を実現するプログラムの全体
構成を示したものである。ここではI1は、第2図の事実
の知識を機械語命令列に変換するプログラムで、I2はル
ールの条件部を機械語命令列に変換するもので、I3はル
ールの実行部を機械語命令列に変換するプログラムで、
I4は事実の管理テーブルを作成する処理プログラムであ
る。
第7図は、I2をさらに詳細に示したもので、I20は、
ルールの条件部を機械語命令列へ変換するプログラムの
本体であり、I21は、本実施例の重要な一手段である解
情報を生成する機能をもつ機械語命令列生成プログラム
である。
第8図は、I3をさらに詳細に示したもので、I30はル
ールの実行部を機械語命令列へ変換するプログラムであ
り、I31はI30で生成された機械語命令列の実行によつて
属性値が変更された事実を有する解情報を解情報保持エ
リアからすべて削除する機械語命令列を生成するプログ
ラムである。
以下、各プログラムの構成について詳しく述べる。第
9図は、事実の知識の一般表現を示したものである。本
発明では、第4図のF1のパターンマツチ処理を高速化す
るため、第9図(J)の事実の知識を、D.H.D Warren著
の前記文献記載の“get−constant fid,A1",“get−con
stant time−tag,A2",“get−constant Vi,Ai+2"(i=
1〜n)命令列と“Proceed"命令の組へ変換することに
より高速パターンマツチを実験する。
ここで上記get−constant命令は、定数と引数レジス
タAi(上記文献ではArgumeut registerと呼んでいる)
とのパターンマツチを行う命令である。また、fidは事
実を一意に識別するための識別番号でありtime−tag
は、事実の新しさを示すタイムフラグである。すなわ
ち、time−tagが大きい値であればあるほど新しい事実
であることを意味する。さらに、Vi(i=1〜n)は、
事実の属性値であり、“Proceed"命令は、上記すべての
get−constant命令のパターンマツチングが成功した時
に限り実行される命令で、上記文献ではレジスタCP(Co
ntinuous Pointer)で指示されたアドレスへジャンプす
る命令である。すなわち、第10図のプログラムI10は、
第9図(J)を(K)の機械語命令列へ変換し、第5図
のG3の記憶エリアへ格納する手段を示している。I101は
いI1の処理を意味する。すなわち、I101では、G3のトツ
プアドレスを示すCode−Prで指示された場所へ前記“ge
t−constant fid,A1"命令を書き込む処理を行い、次のI
102では、上記命令のサイズαだけCode−Prをインクリ
メントしている。次のI103では、Code−Prで指示された
場所へ前記“get−constant time−tag,A2"命令を書き
込む処理を行い、次のI104では、上記命令サイズαだけ
Code−Prをインクリメントしている。次のI105では、I1
06とI107を事実の属性個数n回実行し、I106ではCode−
Prで指示されたアドレスへ、前記“get−constant Vi,A
i+2"命令を書き込む処理を行い、次のI107では、上記命
令サイズαだけCode−Prをインクリメントしている。次
のI108では、Code−Prで指示された場所へ前記“Procee
d"命令を書き込み、最後にI109にてCode−Prを“Procee
d"命令をサイズβだけインクリメントして処理を終了す
る。
第11図は、第6図のI4で作成する事実の管理テーブル
の構成図を示したものである。すなわち、事実は、第4
図のパターンマツチ処理F1で参照されるばかりでなく、
F3にて事実の属性値の変更も行われる。本事実管理テー
ブルは、上記F3にて高速に属性値を変更するためと、変
更が発生した時に、F1にてその事実を条件部で参照して
いるルールの実行可能性を高速に調べるために用いる。
すなわち、第11図に示すごとく事実管理テーブルFT
は、各事実ごとにその事実と条件部にて参照しているル
ールの条件部をI2にて変換した機械語命令のアドレスか
ら成るテーブル1hs−tblへのポインタ1hs−tbl−adr
と、事実の属性個数n−slotと事実を一意に決定するた
めのfid情報と事実に対応する機械語命令列へのfact−P
rから成り立つている。
次に第7図のルールの条件部処理プログラムについて
詳しく説明する。I20は、条件部を機械語命令列へ変換
するプラグラムで、I21は本発明で最も重要な手段であ
る解情報を生成する機能を有する機械語命令列を生成す
るプログラムである。上記プログラムの説明の前に、第
12図を用いてルールの条件部をどのような機械語命令へ
変換するのか説明する。
A12は、n個の条件から成るルールの条件部である。
一般には、これら各条件は、事実の属性値を参照し、事
実の属性値同志の関係を条件としている。また、一般的
な条件も記述可能で、各属性が第2図のルールの条件の
ごとく変数を含んでいることもありうる。このようなル
ールの条件部を本発明の手段では、各条件で参照してい
る事実の数だけ、第12図に示す機械語命令列に変換す
る。例えば、A12の条件部でK個の事実を参照していれ
ば、第12図の機械語命令列は、K種作成されることにな
る。B12〜H12の機械語命令列は、第9図に示す事実
(J)がA12の条件部で参照されている時の命令列を示
している。以下、この場合の機械語命令列の機能を簡単
に説明する。
まず、機械語“allocate l"命令はD.H.D Warren著の
前記文献にて詳しく述べられているように、第5図の制
御エリアG6へA12の条件部中に含まれる変数の個数l個
の領域を確保して制御情報を確保し格納する。次のB12
では、変更された事実の属性値及びタイムタグをそれぞ
れVi(i=1〜w)とT−tagという上記変数領域へ保
持する。またfidは変更された事実の識別がfidであるか
どうかを調べるために使用する。この時に使用する“ge
t−constant"命令及び“get−variable"命令は、上記文
献に記載されているとおりである。次のC12では、A12の
条件部に対応する機械語命令列で、変数への属性値の代
入や代入された値と他の属性値との比較などに対応する
機械語命令列である。次のD12、本発明で重要な役割り
を果たす機械語命令列で、上記B12〜C12がワークエリア
G4や制御エリアG6を使用して処理を行つているのに対し
てD12ではG4のトツプアドレスを示すレジスタHの値を
一時保持レジスタSHへ転送する“move H,SH"命令と解情
報保持エリアのトツプアドレスを示するレジスタKの値
をレジスタHへ転送する“move K,H"命令から成つてい
る。この意味するところは、以下のE12〜F12において生
成する解情報をワークエリアG4ではなく解情報保持エリ
アG5へ生成することにある。すなわち、E12とF12におい
て使用する“put−list"および“unify−value"命令な
どは、D.H.D Warren著の前記文献では、各命令のオペラ
ンドで指示されたリストデータおよび変数の値とレジス
タHで指示された場所へ生成するため、D12においてレ
ジスタHを解情報保持エリアのトツプアドレスを指示す
るように変更し、上記命令によつて解情報を解情報保持
エリアG5へ生成しようとするものである。
次のE12では、レジスタA1へ解情報保持エリアG5のト
ツプアドレスを示するリストポインタを書き込む“put
−list"命令と変数VVi(i=1〜p)を解情報保持エリ
アへ書き込む“unify−value"命令から成つている。こ
れにより、解情報の一部である変数情報を解情報保持エ
リアへ書き込むことができる。次のF12では、レジスタA
2へ解情報保持エリアG5のトツプアドレスを示すリスト
ポインタを書き込む“put−list"命令とC12の条件を満
足した事実のタイムタグT−tagi(i=1〜q)を解情
報保持エリアへ書き込む“unify−value"命令から成つ
ている。これにより、解情報の一部であるタイムタグ情
報を解情報保持エリアへ書き込むことができる。次のG1
2では、解情報保持エリアへ解情報を生成する処理が終
了したので第13図に示すごとく生成した変数情報リスト
V−listとタイムタグリストT−listをルール管理テー
ブルRCTへ登録する処理命令add−csの実行を行う。ここ
でridは、ルールの一意に決定するための番号である。
また第13図のV−list(i=1〜r),T−list(i=
1〜r)はRCTのridエントリに既に登録されている解情
報リストを意味している。新たに生成した解情報V−li
st,T−listは、第13図に示すごとくadd−cs命令によつ
てまずによつて新たに追加した解情報のポインタセル
(レジスタHで指示された場所)へRCTのridエントリの
内容であるrid−prを書き込み、次にによつてrid−pr
をレジスタKに書き換える処理を行う。これによつて新
たな解情報は、ルール管理テーブルとridのエントリに
登録することができた。この処理は、第14図に示すadd
−cs命令の処理フローで示している。次の第12図のH12
では解情報保持エリアからワークエリアへレジスタHを
元に戻す処理を行う。すなわち、レジスタHの内容をレ
ジスタKへ転送し、次のレジスタSHの内容とレジスタH
へ転送することにより、以後の処理ではレジスタHはワ
ークエリアを操作することになる。次の“deallocate"
と“fail"命令は、D.H.D Warren著の前記文献に記載さ
れているように制御してエリアから制御情報と変数領域
を解放し、強制的にバツクトラツクを発生させる処理を
行う。これにより、解情報はバツクトラツクの影響を受
けない(すなわちバツクトラツクによつても解放されな
い)解情報保持エリアへ格納することが可能となり、一
方、実行制御は、強制的にバツクトラツクを発生させる
ことにより、次々と別のルールと条件部を実行すること
が可能となるため、効率的にすべての解情報が解情報保
持エリアへ格納することが可能となる。また、本発明で
は、D12とH12で示したごとく、簡単な制御によりワーク
エリアと解情報保持エリアを切り換えることができる点
及び、E12とF12で示したごとく解情報をワークエリアへ
生成し、その後解情報エリアへコピーするのではなく、
直接解情報保持エリアへ生成することができる点が特徴
である。また、レジスタKとHを用いて第14図に示すご
とくJ100とJ200によつてルール管理テーブルへ新たに生
成した解情報を登録することができる。尚、競合集合
は、第13図にて説明したように解情報保持エリアG5に生
成される。このためルール管理テーブルRCTによって管
理されるものである。また、タイムタグ情報は最新の事
実のもとで成立しているルールを優先的に選択し、その
ルールの実行部を実行するために使用されるものであ
る。
以上が、第7図I20とI21によつて行うべき処理内容で
ある。すなわち、I20ではルールの条件部を第12図のB12
〜C12の機械語命令列へ変換し、次のI21では、第12図の
D12〜H12の機械語命令列へ変換する処理プログラムであ
る。
これにより、変更された事実を参照している条件とし
てもつルールを実行することが可能となり、しかも効率
良くすべての解情報を解情報保持エリアへ保持すること
ができる。これで第4図のF1のパターンマツチ処理が終
了したことになる。次にF2の競合解消処理によつて1つ
の実行すべきルールを決定する必要があるが、この処理
は本発明とは直接関係無いので、ここでは一意にルール
を特定化するためのrid番号とその解情報((VV1,…,VV
p),T−list)が解情報保持エリアの中から選択された
ものと仮定する。もし解情報保持エリアに1つも解情報
が無くなつた時、すべての推論処理が終了したことにな
る。
尚、ここで具体的な一例を用いて、ワークエリアG4と
解情報保持エリアG5に格納されるデータ構造について説
明する。
ワークエリアG4へ格納するデータを第9図に示される
事実と、第12図中のB12,C12を用いて説明する。尚、第
9図における事実を、事実:値1=1.5,値2=2.5と
し、第12図中のC12をgreater−than2.0>A3+A4とる
と、第12図中のB12では、レジスタA3(実数1.5)とA4の
内容(実数2.5)を変数領域V1とV2へ格納している。第1
2図中のC12では、A3とA4を加算した値4.0をワークエリ
アG4へ生成する。この結果レジスタHは第24図に示した
位置を指示する。次ぎに4.0と定数2.0と比較し条件を満
足しないため、レジスタHの値を再び第24図に示した以
前のHの値に変更する。このように、4バイト長を越え
るデータがワークエリアG4に格納される。また、一方解
情報保持エリアG5に格納されるデータの構造は、第12図
の命令列E12,F12の実行によって第25図のデータ構造が
生成される。本実施例においては、簡易的にこのデータ
構造を((VV1,VV2,…VVp),(Ttag1,Ttag2,…,Ttag
q))と表現している。更に、G12の命令を実行すること
により、上記データ構造の最後のアドレスrid−prを書
き込む(第14図中のJ100)、rid−prは、第13図に示し
た要にこのルールの解情報アドレスである。その結果、
上記のデータ構造は、((VV1,VV2,…,VVp),(Ttag1,
Ttag2,…,Ttagq),rid−pr)となる。
また、解情報の追加処理については、上記のように生
成したデータ構造の最後(レジスタHで指示された場
所)に、他の解情報の先頭アドレス(rid−pr)を追加
する(第14図のJ100)。次ぎに、生成したデータ構造の
先頭アドレスを指示するレジスタKの値をルール管理テ
ーブルCRTへ書き込む(J200)。この結果、第13図に示
したようにリストの構造の形で追加されることになる。
次に第8図に示すルールの実行部処理について詳しく
説明する。まず、ルールの実行部をどのような機械語命
令列に変換するのかを第15図を用いて説明する。この図
は、ルールの実行部が“modify(X,値=死ぬ)”であ
り、これは、事実Xの属性“値”を死ぬに変更する処理
である。まず、“get−constant rid,A1"命令は、やは
りルール番号を保持している引数レジスタA1とこのルー
ルの番号ridのパターンマツチを行う命令である。これ
により、実行すべきルールがridである時のみ、このル
ールを実行することが可能である。
次のget−list,unify−value VV1,…,unify−value V
Vp命令は、前記解情報の中の変数情報VV1,…,VVpを参照
する命令である。すなわち、このルールの条件部にて変
数として出現し、かつ実行部にも出現した変数を解情報
保持エリアに格納していたのは、このように実行部で参
照するためである。この例ではVVl(1≦l≦P)が変
更された事実のfidを保管していう変数をしているもの
と仮定する。次のget−variable A3命令は、解情報の内
のタイムタグ情報を得るための命令である。ここでは必
要がないため、引数レジスタA3に保持しただけである。
次のread−time−tag VVl,T−tag命令は、変更された事
実のタイムタグを変数T−tagへ格納する命令で第16図
で詳しく説明する。次のmodify−frame−slot命令は、
変更すべき事実VVlの属性番号slot−noの値をvalueに変
更し、そのタイムタグを更新する処理を行う命令であ
る。次のfr−rule VVl,list−pointer命令は、変更され
た事実をその条件部で参照しているルールの保持してい
るルールフレームテーブルから求め、そのリストデータ
を変数list−pointerへ格納する命令である。すなわ
ち、list−pointerに存在するルールのみ実行すれば、
変更された事実の下で成立するルールをすべて知ること
ができる。次のcut−cs命令は、解情報保持エリア中の
解情報が変更される以前の事実を示すタイムタグT−ta
gをもつているかどうか調べる命令である。すなわち、
本命令では、解情報保持エリアの中でT−tagをもつて
いる解情報をすべて削除する処理を行う。次のmake−go
al−jump命令は、変更された事実VVlの各引数、すなわ
ち各属性値を引数レジスタAiへロードし、その事実を参
照しているルールの条件部に対する機械語命令列を次々
と実行する処理を行う。すなわち、これにより前記ルー
ルの条件部のパターンマツチ処理が呼び出される。以上
のごとく、本発明では、以前に述べたように、解情報を
効率良く求めることができるコンパイル方式である点が
特徴である。
以下、第16図を用いて“read−time−tag"を説明す
る。まず、A16では第11図の事実管理テーブルのトツプ
アドレスを示すFT−topと事実のfidを示すVVlからft−p
rを求める。このft−prは、第11図に示す4つの情報1hs
−tbl−adr,n−slot,fid,fact−prのトツプを示すアド
レスである。次のB16では、ft−prに3を加えたテーブ
ルの内容、すなわち事実の機械語命令列を指示するアド
レスをfact−prへ代入する処理を行つている。次のC16
では、第11図中のtime−tagの値をT−tagへロードする
ため、命令のサイズαとそのオペランドサイズγのオス
セツトを加えたアドレスfact−pr+α+γの内容をT−
tagへロードしている。これにより変数T−tagへタイム
タグがロードされたことになる。
次の第17図は、modify−frame−slot命令のフローで
ある。A17ではFT−topとVVlにより事実管理テーブルのf
idに関する情報エリアアドレスft−topを求めている。
次のB17では事実の機械語命令列へのアドレスfact−pr
を求めている。C17では、属性番号slot−noと命令のサ
イズαを用いて、変更したい属性をもつ機械語命令のト
ツプアドレスwkを求めている。次のD17ではその機械語
命令のオペランド、すなわち属性値アドレスへ変更した
い値valueを書き込んでおり、次のE17では、事実が変更
されたので、タイムタグを更新するため、機械語命令列
中のタイムタグのアドレスfact−pr+α+γへ一意に最
新のタイムタグを保持しているglobal−time−tagの内
容を書き込み、次のF17では、次の事実の変更があつた
ときのために、global−time−tag値を更新している。
次にfr−rule命令を説明するが、その前に、各事実ご
とに、その事実をルールの条件部にて参照しているルー
ルを保持しているルールフレームテーブルの構成につい
て説明する。第18図は、ルールフレームテーブルRETと
そのトツプアドレスを示すFR−top、および各事実fidを
参照しているルールのリストを示すlist−pointerを示
している。また参照しているルールは、一意にルールを
特定化できる番号rid1〜ridmによつて結合されている。
この例では、事実fidは、rid1大1からridmまでのm個
のルール条件部に出現していることを示している。以上
の準備のもとに第19図を用いてfr−rule命令を説明す
る。
A19では、ルール・フレームテーブルのトツプアドレ
スFR−topと事実のfidを示すVVlを用いて、その事実を
条件部にて参照しているルールのリストアドレスをlist
−pointrへロードしている。
次ぎに、解情報の削除距離(cut−cs命令)について
第20図及び第21図を用いて説明する。
A20で、ルールフレームテーブルRFT内のlist−pointe
rで指示されたrule idをridへ代入する。これにより、
変更されたfidを参照しているルールをridへ設定するこ
とが可能となる。B20で、list−pointerの次ぎのアドレ
スの内容、即ち、他のrule idのアドレスをlist−point
erへ代入する。C20で、変数jへ1を代入する。これはF
20で参照するために設定するものである。D20で、ルー
ル管理テーブルRCTの先頭アドレスRid−topとridを加算
した値をrid−prへ代入する。rid−prはルール管理テー
ブルRCTのエントリアドレスを示している。E20で、ルー
ル管理テーブルRCTの内容に1を加えた値をT−listjに
代入する。この結果、T−listjは、タイムタグリスト
T−listのアドレスを保持する。次ぎに、F20で、cut−
csで指定されたT−tagがそのリストT−listに含まれ
ているか判定し、もし含まれていれば、削除する。Ga20
で、F20の処理終了後のT−listjから次ぎの解情報リス
トアドレスを求めr−prへ代入する。G20で、他に解情
報が存在するか判定し、もし存在しなければH20にて、
他のridが存在するか判定する。逆にもし存在すれば、l
a20にて、次ぎのrule idアドレスrid−prを求め、l20に
てjを加算して再びE20を実行する。
第21図は、第20図におけるT−listj処理(F20)のフ
ローである。A21で、T−listjにて指示されたタイムタ
グリストの先頭要素をt−tagへ代入する。B21で、指定
されたT−tagとt−tagとを比較して一致していればC2
1を実行し、一致していなければF21を実行する。C21
は、jへ0を代入することにより一致したt−tagした
ことを示す。F21では、タイムタグリストの全ての要素
を調べたか判定し、もし正しければHa21を実行し、正し
くなければG21を実行する。Ha21では、jが0か判定
し、0であれば、T−tagがタイムタグリスト中になか
ったことを意味するため削除することなく終了する。一
方、0でなければH21にて削除処理を実行する。即ち、
次ぎの解情報へのポインタ(T−listj+2)をrid−pr
で指示されたアドレスへ格納することによってその解情
報を削除する。
以上でT−listj処理が終了する。参考のため、第22
図に、T−listjのリスト構成例を示す。このように、
T−listj自身もリスト構造をしているものとして説明
した。
第23図は、変更された事実の下で再度解情報を求める
ために、前記ルールの条件部に対する命令コード(第12
図)を次々と実行するための機械語命令make−goal−ju
mp命令のフローである。
まず、A22では第11図の事実管理テーブルのトツプア
ドレスFT−topと事実を知すVVlすなわちfidからその事
実に関する情報アドレスfid−prを求めている。次のB22
では、事実の機械語命令列アドレスを変数fact−Prへロ
ードしている。C22では、事実の引数個性、すなわち属
性個数分だけ、各属性値を引数レジスタAl(l=1〜n
−slot)へロードするため、変数lへゼロをロードして
いる。次のD22では、各機械語命令のオペランド、すな
わち属性値を引数レジスタAlへロードしている。ここで
αは機械語命令サイズ、γは、そのオペランドまでのオ
フセツトである。E22では、変数lをカウントアツプ
し、次のF22にて(fact−Pr+1)、すなわちn−slot
だけlがカウントアツプされたか調べている。これによ
りすべての属性値を引数レジスタAl(l=1〜n−slo
t)へロードできる。もしnoであれば、D22をくり返し実
行する。もし、yesであれば、次にG22にて(fid−P
r)、すなわちルールの条件部の機械語命令列のアドレ
スを保持するテーブルのアドレスを変数1hs−tbl−adr
へロードし、最後にH22にてexecute命令にて、そのオペ
ランドで示されたテーブル中のアドレスの命令列へ分岐
する。
このように、第1引数レジスタA1は必ず、fidを保持
し、第2引数レジスタA2は、事実のタイムタグを保持
し、かつ第3時以降の引数レジスタが事実の属性値を保
持するため、第12図のルールの条件部に対する機械語命
令列と整合性がとれることになる。また、本発明では詳
しく述べなかつたが、第11図中の各条件部に対する機械
語命令コードの直前には、D.H.D.Warren著の文献中に示
されている制御情報を命令列中に作り出す命令であるtr
y−me−else命令や、retry−me−else命令、および最後
の条件部の機械語命令列の直前には、trust−me−fail
命令が生成されているものとする。変換された機械語命
令列の最後に付加されたfail命令と3つの制御命令とが
上記execute命令と共に繰返し実行される。この結果、
次々とバツクトラツクを発生させながら、ルールの条件
部を満足するすべての解情報を解情報保持エリアへ直接
生成することが可能である。
最後に、本実施例において最も重要な第12図の機械語
命令列を生成する手段を示した第1図のフローを説明す
る。
まず、A1において、当該ルールの条件部にて参照され
ている事実の種類だけ機械語命令列を生成したか調べて
いる。もし、生成していれば、処理を終了する。B1で
は、参照されている事実の属性数を変数lに代入し、対
のC1にてallocate l命令を生成する。次に、D1において
参照されている事実は変数として表現されているか、事
実名が明記されているか判定し、変数であれば、E1にて
get−variable Fid,A1命令とget−variable T−tag,A2
命令を生成する。一方、変数でなければF1にて事実を特
定化する番号fidを用いてget−constant fid,A1命令とg
et−variable T−tag,A2命令を生成する。次にG1にて事
実の属性個数Kだけget−variable Vi,Ai+2(i=1〜
K)命令を生成し、H1にてルールの条件部に対する機械
語命令列を生成する。次のI1では、第5図のG4からG5へ
レジスタHを切り換えることにより、ワークエリアから
解情報保持エリアへ切り換える命令を生成する。次のJ1
とK1では、それぞれ、変数情報とタイムタグ情報を解情
報保持エリアに生成するための機械語命令列を生成し、
次のL1では、新たに生成した解情報をridへ登録するた
めの命令を生成している。最後に、M1では、解情報保持
エリアからワークエリアへ切り換えるためにmove H,K命
令とmove SH,H命令を生成し、deallocate命令と強制的
にバツクトラツクを発生するfail命令を生成する。次に
A1をくり返し実行する。
〔発明の効果〕
本発明によれば、推論において最も負荷の重い解集合
をすべて求める処理を高速に行うことが出来るので、エ
キスパートシステムなどの推論速度を大幅に向上させる
ことができる。すなわち、事実をデータとして表現する
のではなく機械語として表現したことにより、高速に事
実とのパターンマツチが可能となり、ルールの条件部に
対するすべての解情報を高速に求め、かつ次々と別のル
ールの条件部を調べることができることから、従来の大
部分の推論エンジンがルールをインタプリットしていた
のに対してかなり高速となりえる。
【図面の簡単な説明】
第1図は、本発明の一手段であるすべての解情報を効率
良く求める機械語命令列を生成する手段を示したもので
ある。第2図は、本発明の手段によつて変換される以前
の一つの推論ソールプログラム例である。第3図は、そ
の実行を示したものである。第4図は、一般的な推論メ
カニズムを示したものである。第5図は、本発明を実行
するために必要なコンピユータと記憶装置を示したもの
である。第6図から第23図は、本発明の一実施例を詳し
く述べた図である。第24図は、本実施例におけるワーク
エリアに記憶されるデータ構造の説明図である。第25図
は、本実施例における解情報保持エリアに記憶されるデ
ータ構造の説明図である。 I1……ワークエリアから解情報保持エリアへ変更する処
理、J1〜L1……解情報保持エリアへ新たな解情報を生成
し登録する処理、M1……解情報保持エリアからワークエ
リアへ変更しかつ強制的にバツクトラツクを発生する機
械語命令列を生成する処理。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 坂東 忠秋 茨城県日立市久慈町4026番地 株式会社 日立製作所日立研究所内 (72)発明者 中野 利彦 茨城県日立市大みか町5丁目2番1号 株式会社日立製作所大みか工場内 (72)発明者 林 利弘 茨城県日立市大みか町5丁目2番1号 株式会社日立製作所大みか工場内

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】記憶部に格納されたプログラムを実行する
    コンピュータと、事実の知識とルールとからなる知識ベ
    ースをコンピュータが実行するための機械語命令へ変換
    するプログラムを有し、該プログラムにより変換された
    機械語命令列を実行することにより推論を行う推論シス
    テムにおける推論方法であって、 前記プログラムは、 事実を、レジスタに格納された値とパターンマッチを行
    う機械語命令の命令部分を格納するコード領域と、事実
    の有する値に対応する該機械語命令のオペランドを格納
    するオペランド領域とを有する機械語命令を有する機械
    語命令列に変換し、 ルールの条件部を、パターンマッチを行う際に用いる変
    数の値を保持する領域を前記記憶部に設けた作業領域に
    第1の領域として確保する命令と、パターンマッチを行
    う値を所定のレジスタに設定したのち事実から変換され
    た機械語命令列を呼び出す分岐命令と、解集合をバック
    トラックが行われた際も情報が保持される前記記憶部の
    所定の第2の領域に生成する命令と、ルールの実行部か
    ら変換される機械語命令列への分岐命令、及びルールの
    条件部に定義された条件が満足された場合に前記第1の
    領域を未使用状態にした後バックトラックを行う命令と
    を有する機械語命令列に変換し、 ルールの実行部を、前記ルールの条件部が変換された機
    械語命令列を実行することにより生成される解情報の一
    つを選択する解情報選択機械語命令列を実行させる命令
    と、ルールの実行部で定義された動作を行う命令を含む
    機械語命令とに変換し、 該ルールの実行部で定義された動作を行う命令は、ルー
    ルの実行部で定義された動作が事実を変更する動作であ
    る場合には、前記事実から変換された機械語命令列のオ
    ペランド領域を変更する命名からなるオペランド変更機
    械語命令列を有し、 上記変換された機械語命令列を予め前記記憶部内の所定
    の第3の領域に記憶し、 該記憶された機械語命令列を実行することにより行う推
    論方法は、 前記第3の領域に記憶された機械語命令列の内、ルール
    の条件部から変換された機械語命令列を実行する際に、
    前記ルールの条件部から変換された機械語命令列中の記
    憶部の所定の第2の領域に解集合を生成する命令を実行
    することにより、実行の際に求めた解集合を前記第2の
    領域に生成した後バックトラックを行って全ての解情報
    を求め、 前記解情報選択機械語命令列を実行して上記求められた
    全ての解情報の中から選択された一つの解情報を用い
    て、前記事実から変換された機械語命令列が有するオペ
    ランド変更機械語命令列を実行してオペランド領域を変
    更することにより事実を更新する事実変更処理と、 前記事実から変換された機械語命令列の識別情報と、該
    事実から変換された機械語命令列を呼び出すルールの条
    件部から変換された機械語命令列とを対応させる事実管
    理テーブルを用いて、上記事実変更処理により変更され
    た事実から変換された機械語命令列を実行するルールの
    条件部から変換された機械語命名列を実行する処理 とを有することを特徴とするコンパイル型知識処理ツー
    ルの高速推論方法。
JP63053523A 1988-03-09 1988-03-09 コンパイル型知識処理ツールの高速推論方法 Expired - Lifetime JP2624751B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP63053523A JP2624751B2 (ja) 1988-03-09 1988-03-09 コンパイル型知識処理ツールの高速推論方法
EP19890302317 EP0332427A3 (en) 1988-03-09 1989-03-08 Inference processing method and apparatus
US08/145,299 US5422980A (en) 1988-03-09 1993-11-03 Inference processing method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63053523A JP2624751B2 (ja) 1988-03-09 1988-03-09 コンパイル型知識処理ツールの高速推論方法

Publications (2)

Publication Number Publication Date
JPH01229329A JPH01229329A (ja) 1989-09-13
JP2624751B2 true JP2624751B2 (ja) 1997-06-25

Family

ID=12945178

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63053523A Expired - Lifetime JP2624751B2 (ja) 1988-03-09 1988-03-09 コンパイル型知識処理ツールの高速推論方法

Country Status (3)

Country Link
US (1) US5422980A (ja)
EP (1) EP0332427A3 (ja)
JP (1) JP2624751B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02259836A (ja) * 1989-03-31 1990-10-22 Hitachi Ltd フアジイ推論方法
JPH0695879A (ja) * 1992-05-05 1994-04-08 Internatl Business Mach Corp <Ibm> コンピュータシステム
JP3638310B2 (ja) * 1994-06-29 2005-04-13 株式会社東芝 事例推論支援装置
JP3353651B2 (ja) * 1997-06-23 2002-12-03 松下電器産業株式会社 エージェントインタフェース装置
US6157922A (en) 1997-10-24 2000-12-05 Trilogy Development Group, Inc. Method and apparatus for transparent backtracking
US5946683A (en) * 1997-11-25 1999-08-31 Lucent Technologies Inc. Technique for effectively instantiating attributes in association rules

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0736123B2 (ja) * 1983-05-09 1995-04-19 株式会社日立製作所 設備群制御方法
US4803641A (en) * 1984-06-06 1989-02-07 Tecknowledge, Inc. Basic expert system tool
US4648044A (en) * 1984-06-06 1987-03-03 Teknowledge, Inc. Basic expert system tool
US4748439A (en) * 1985-08-13 1988-05-31 Fairchild Semiconductor Corporation Memory apparatus and method for retrieving sequences of symbols including variable elements
JPS62262132A (ja) * 1986-05-08 1987-11-14 Mitsubishi Electric Corp デ−タ・フアイル管理方式
JPS633334A (ja) * 1986-06-23 1988-01-08 Hitachi Zosen Corp 前向き推論方式
JPS6341926A (ja) * 1986-08-08 1988-02-23 Casio Comput Co Ltd 高速推論方式
US4847784A (en) * 1987-07-13 1989-07-11 Teknowledge, Inc. Knowledge based tutor
US4839822A (en) * 1987-08-13 1989-06-13 501 Synthes (U.S.A.) Computer system and method for suggesting treatments for physical trauma

Also Published As

Publication number Publication date
EP0332427A3 (en) 1992-02-19
EP0332427A2 (en) 1989-09-13
JPH01229329A (ja) 1989-09-13
US5422980A (en) 1995-06-06

Similar Documents

Publication Publication Date Title
US5664177A (en) Data processing system having a data structure with a single, simple primitive
US5267175A (en) Data base access mechanism for rules utilized by a synthesis procedure for logic circuit design
US5361357A (en) Method and apparatus for optimizing computer file compilation
JP3765949B2 (ja) オブジェクト指向ソフトウェア開発支援装置および開発支援方法
US4644471A (en) Method for processing a data base
US5339435A (en) Heterogenous software configuration management apparatus
JPH0228831A (ja) バージョン管理方法
WO2003073274A1 (en) Iterative software development environment with prioritized build rules
JPH07200358A (ja) ソフトウェア・アプリケーションの自動テスト方法
JPH05298120A (ja) 計算機システム
JP2624751B2 (ja) コンパイル型知識処理ツールの高速推論方法
JPH086812A (ja) 情報処理プログラムのデバッグ方法およびそのためのデバッガ
US5062039A (en) Sharing of workspaces in interactive processing using workspace name tables for linking of workspaces
US5721924A (en) Method and device for obtaining a value of a referred to variable defined in a source program having a specific variable name
US5765177A (en) Document processing method and apparatus for searching documents having a graph based document logic structure
JP3318051B2 (ja) 翻訳処理方法
JPH06110733A (ja) プログラムのテストケース生成装置
JPH0934698A (ja) ソフトウェア生成方法及び開発支援方法
US5241623A (en) Method and system for delineation of structure and linkages between knowledge base modules
Kloepping et al. The Design and Implementation of a Relational Interface for the Multi-Lingual Database System.
JPH0736684A (ja) ドメイン指向部品管理方法
EP0267379A2 (en) Data base access mechanism for rules utilized by a synthesis procedure for logic circuit design
JP3531536B2 (ja) 抽象構文記法を用いたデータ構造定義における型情報の動的割り当て方法
JPH04239338A (ja) マイクロプログラム網羅率測定方式
JPH0816448A (ja) データ群のデータ削除方法