JPH02224127A - パターン突合せネットワークの併合方法 - Google Patents
パターン突合せネットワークの併合方法Info
- Publication number
- JPH02224127A JPH02224127A JP1294076A JP29407689A JPH02224127A JP H02224127 A JPH02224127 A JP H02224127A JP 1294076 A JP1294076 A JP 1294076A JP 29407689 A JP29407689 A JP 29407689A JP H02224127 A JPH02224127 A JP H02224127A
- Authority
- JP
- Japan
- Prior art keywords
- node
- rete
- nodes
- pattern matching
- mini
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4494—Execution paradigms, e.g. implementations of programming paradigms data driven
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/046—Forward inferencing; Production systems
- G06N5/047—Pattern matching networks; Rete networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Devices For Executing Special Programs (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
A、産業上の利用分野
本発明はパターン突合せネットワークに関し、詳細には
そのようなネットワークと、モジュール式に変更可能な
ネットワークを含む合成ネットワークとを組み合わせる
方法、及びパターン突合せネットワークの所定の部分を
要求に応じて更新する方法に関するものである。
そのようなネットワークと、モジュール式に変更可能な
ネットワークを含む合成ネットワークとを組み合わせる
方法、及びパターン突合せネットワークの所定の部分を
要求に応じて更新する方法に関するものである。
B、従来の技、術
フォージー(Forgy) によって教示されたRET
Eなどの、いわゆる人工知能またはパターン突合せプロ
グラミングが、最近の数年間に開発され使用されてきた
。RETEアルゴリズムは、1組または数組の突合せ規
則を使用する、いくつかのパターン突合せ手法の1つで
ある。これらのプログラムは周知のものである。これに
ついては、たとえばARTIFICIAL IH置LI
GENCEXV o 1 、 19(1982年)、り
り、17−37に所載のチャールズ・L・フォージーの
論文rRETE :多数パターン/多数オブジェクト・
パターン突合せ問題用の高速アルゴリズム(RETE:
A Fast Algorithmfor the
Many Pattern/Many 0bje
ct PatternMatch Problem)
Jの記載を参照されたい。当技術分野における他の公
知例は、マーシャル・シ望ア(Marshall 5c
hor)他の論文rRETEパターン突合せにおける進
歩(Advances in RETEPattern
Matching) J 、PROCEEDIHGS
of 1986AMERICAN ASSOCIAT
IOHfor ARTIFICIΔLIH置LIGEH
CE C0NFERENCE11986年、pp。
Eなどの、いわゆる人工知能またはパターン突合せプロ
グラミングが、最近の数年間に開発され使用されてきた
。RETEアルゴリズムは、1組または数組の突合せ規
則を使用する、いくつかのパターン突合せ手法の1つで
ある。これらのプログラムは周知のものである。これに
ついては、たとえばARTIFICIAL IH置LI
GENCEXV o 1 、 19(1982年)、り
り、17−37に所載のチャールズ・L・フォージーの
論文rRETE :多数パターン/多数オブジェクト・
パターン突合せ問題用の高速アルゴリズム(RETE:
A Fast Algorithmfor the
Many Pattern/Many 0bje
ct PatternMatch Problem)
Jの記載を参照されたい。当技術分野における他の公
知例は、マーシャル・シ望ア(Marshall 5c
hor)他の論文rRETEパターン突合せにおける進
歩(Advances in RETEPattern
Matching) J 、PROCEEDIHGS
of 1986AMERICAN ASSOCIAT
IOHfor ARTIFICIΔLIH置LIGEH
CE C0NFERENCE11986年、pp。
228−232に出ている。RETEネットワーク及び
知能プログラミングについての周知の情報は、当業者が
本発明を理解するために必要なもの以外はここでは繰り
返さない。フォージーが述べているように、RETEと
して定義される、より大きくより複雑な性能と機能性を
高めるネットワークが重要性を増してきている。性能を
高めるのみならずパターン突合せネットワークの機能性
をも高めることが望まれる。
知能プログラミングについての周知の情報は、当業者が
本発明を理解するために必要なもの以外はここでは繰り
返さない。フォージーが述べているように、RETEと
して定義される、より大きくより複雑な性能と機能性を
高めるネットワークが重要性を増してきている。性能を
高めるのみならずパターン突合せネットワークの機能性
をも高めることが望まれる。
周知のように、このようなパターン突合せプログラミン
グは多数のデータ構造で実行される。作業用記憶素子(
WM E )は入力データ構造である。
グは多数のデータ構造で実行される。作業用記憶素子(
WM E )は入力データ構造である。
新しいWME1変更されたWME、または除去されたW
MEはどれも「トークン」 (またはデルタ)をもたら
す。トークンとはある関連データ操作と共に1つまたは
複数のWMEからなるデータ構造である。RETEの現
在の情報内容はWMEの追加、変更または削除を反映し
ないので、ネットワークを通じてトークンを伝搬させる
ことによって、入力の現情報状態を反映するように、R
ETEを更新する必要がある。トークンがRETEを通
じてブツシュ(処理)され、RETE内でパターンと突
き合わされる各回がパターン突合せ動作となる。
MEはどれも「トークン」 (またはデルタ)をもたら
す。トークンとはある関連データ操作と共に1つまたは
複数のWMEからなるデータ構造である。RETEの現
在の情報内容はWMEの追加、変更または削除を反映し
ないので、ネットワークを通じてトークンを伝搬させる
ことによって、入力の現情報状態を反映するように、R
ETEを更新する必要がある。トークンがRETEを通
じてブツシュ(処理)され、RETE内でパターンと突
き合わされる各回がパターン突合せ動作となる。
フォージーによって教示されるように、RETEはアル
ファ部とベータ部からなる。変更トークンがRETEを
通じて処理されたとき、新しいWMEまたは変更された
WMEの情報内容、または削除されたWMEによる情報
変更が、「ルート・ノード」を経てネットワークに使用
可能になった後、まずアルファ部を通過する。ルート・
ノードはRETEへの入口点であるネットワークのデー
タ域である。1組の「トップ」ノードが、ルート・ノー
ドに接続されている。トップ・ノードは°次々に後続ノ
ードに接続され、最終的にはプロダクション(推論)ノ
ードまたはマツチ・ノードと呼ばれる多数の終端ノード
またはボトム・ノードに達する。各ノード・データは、
入ってくるトークンに対する突合せテストを含むことが
できる。当技術分野で周知のように、ノードのいくつか
はテーブル中に走査すべき記憶項目を有する。これらの
ノードは「記憶ノード」と呼ばれる独立のノードとして
実施することができ、またテーブルを突合せ動作を表す
ノードに直接関連づけることもできる。
ファ部とベータ部からなる。変更トークンがRETEを
通じて処理されたとき、新しいWMEまたは変更された
WMEの情報内容、または削除されたWMEによる情報
変更が、「ルート・ノード」を経てネットワークに使用
可能になった後、まずアルファ部を通過する。ルート・
ノードはRETEへの入口点であるネットワークのデー
タ域である。1組の「トップ」ノードが、ルート・ノー
ドに接続されている。トップ・ノードは°次々に後続ノ
ードに接続され、最終的にはプロダクション(推論)ノ
ードまたはマツチ・ノードと呼ばれる多数の終端ノード
またはボトム・ノードに達する。各ノード・データは、
入ってくるトークンに対する突合せテストを含むことが
できる。当技術分野で周知のように、ノードのいくつか
はテーブル中に走査すべき記憶項目を有する。これらの
ノードは「記憶ノード」と呼ばれる独立のノードとして
実施することができ、またテーブルを突合せ動作を表す
ノードに直接関連づけることもできる。
特定ノード用の関連する記憶テーブルを、ノードの「結
果記憶域」と呼ぶことにする。結果記憶テーブルは、ベ
ータ・ノード及び後述のアルファ配布ノードと関連づけ
られる。
果記憶域」と呼ぶことにする。結果記憶テーブルは、ベ
ータ・ノード及び後述のアルファ配布ノードと関連づけ
られる。
記憶項目用のテーブルは、ネットワーク内のその点まで
の部分突合せ結果を表す値(数値、テキストなど)を含
む。これらの値はその後の突合せ動作で「結合」ノード
への入力の1つとして使用できる。テーブルへのアクセ
スは通常のプログラミング手順に従って行ない、また突
合せ動作は通常のプログラミングで行なわれる比較であ
ることを理解されたい。
の部分突合せ結果を表す値(数値、テキストなど)を含
む。これらの値はその後の突合せ動作で「結合」ノード
への入力の1つとして使用できる。テーブルへのアクセ
スは通常のプログラミング手順に従って行ない、また突
合せ動作は通常のプログラミングで行なわれる比較であ
ることを理解されたい。
RETEのアルファ部は、結果記憶域、すなわち部分パ
ターン突合せ結果が記憶されるテーブルを持たないが、
これに対してベータ部はそのようなテーブルを含む。ア
ルファ部とベータ部の間にアルファ配布ノードと呼ばれ
るノードがあるが、これらのノードはすべて、アルファ
部で生成された部分パターン突合せ結果を記憶する結果
記憶域を有する。これらのアルク1配布ノードから、ト
ークンはベータ部にブツシュされる。「ブツシュされる
」という言葉は、プログラムがブツシュされるトークン
の情報内容を使って、後続ノードでパターン突合せ動作
を実行することを意味する。
ターン突合せ結果が記憶されるテーブルを持たないが、
これに対してベータ部はそのようなテーブルを含む。ア
ルファ部とベータ部の間にアルファ配布ノードと呼ばれ
るノードがあるが、これらのノードはすべて、アルファ
部で生成された部分パターン突合せ結果を記憶する結果
記憶域を有する。これらのアルク1配布ノードから、ト
ークンはベータ部にブツシュされる。「ブツシュされる
」という言葉は、プログラムがブツシュされるトークン
の情報内容を使って、後続ノードでパターン突合せ動作
を実行することを意味する。
RETEで使用されるノードには、入力接続数からいっ
て、1人カノードと2人カノードの2種がある。すべて
のアルファ・ノードは、(後述のプロダクション・ノー
ドまたはマツチ・ノードと同様に)アルファ配布ノード
と同じく1人力を有する。このような1人力をrRH8
入力」または単に「入力」と呼ぶことにする。これに対
してほとんどのベータ・ノードは、プロダクション・ノ
ード、マツチ・ノードまたは他の特殊目的ノードを除き
、2つの入力、すなわち左側(LH8)と右側(RH8
)の入力を有する。この2つの入力は、結合テスト(テ
ストが行なわれないこともある)に合格した(各側から
の入力からなる)トークンの対が結合されて、結合ノー
ドの関連する結果記憶テーブルを更新するために使用さ
れる新しい融合したトークンとなるので、「結合ノード
」と呼ばれる。
て、1人カノードと2人カノードの2種がある。すべて
のアルファ・ノードは、(後述のプロダクション・ノー
ドまたはマツチ・ノードと同様に)アルファ配布ノード
と同じく1人力を有する。このような1人力をrRH8
入力」または単に「入力」と呼ぶことにする。これに対
してほとんどのベータ・ノードは、プロダクション・ノ
ード、マツチ・ノードまたは他の特殊目的ノードを除き
、2つの入力、すなわち左側(LH8)と右側(RH8
)の入力を有する。この2つの入力は、結合テスト(テ
ストが行なわれないこともある)に合格した(各側から
の入力からなる)トークンの対が結合されて、結合ノー
ドの関連する結果記憶テーブルを更新するために使用さ
れる新しい融合したトークンとなるので、「結合ノード
」と呼ばれる。
RETEアルゴリズムは、WMEの追加、修正または削
除を表す変更トークンで始まる。次いで、アルゴリズム
を実行するプログラムは、変更トークンの内容を必要に
応じて当該アルファ・ノードの突合せ情報項目と突き合
わせするために複数のアルファ・ノードを走査する。す
なわち、各アルファ・ノードは、トークンで表されるW
MEの種々の態様をテストし、トークンをアルファ・ノ
ードの様々な後続ノードにパスするか、またはそこでブ
ロックする(パスしない)。この動作は、従来技術で周
知のように、アルファ・ノード部の下底に達するまで継
続する。この時点で、アルファ・ノードのテストが成功
したと想定すると、最初の結果記憶域(アルファ配布ノ
ード)はトークンを受は取り、WME操作(追加、修正
、削除)の種類に応じてその記憶域を更新することがで
きる。
除を表す変更トークンで始まる。次いで、アルゴリズム
を実行するプログラムは、変更トークンの内容を必要に
応じて当該アルファ・ノードの突合せ情報項目と突き合
わせするために複数のアルファ・ノードを走査する。す
なわち、各アルファ・ノードは、トークンで表されるW
MEの種々の態様をテストし、トークンをアルファ・ノ
ードの様々な後続ノードにパスするか、またはそこでブ
ロックする(パスしない)。この動作は、従来技術で周
知のように、アルファ・ノード部の下底に達するまで継
続する。この時点で、アルファ・ノードのテストが成功
したと想定すると、最初の結果記憶域(アルファ配布ノ
ード)はトークンを受は取り、WME操作(追加、修正
、削除)の種類に応じてその記憶域を更新することがで
きる。
一方、トークンのテストが不合格の(一致しなかった)
場合には、トークンのパスがアルファ部の下底にまで達
しないことがある。トークンをパスするには、周知のよ
うに複数の論理経路が必要となることがある。このパタ
ーン突合せ動作に続いて、RETEのベータ部がRET
E動作を継続する。
場合には、トークンのパスがアルファ部の下底にまで達
しないことがある。トークンをパスするには、周知のよ
うに複数の論理経路が必要となることがある。このパタ
ーン突合せ動作に続いて、RETEのベータ部がRET
E動作を継続する。
原型ベータ結合ノードの1人力に達するトークンでは、
そのノードは、トークンの内容と、結合ノードの反対側
の入力にソース・ノードとして論理的に接続されている
先行ノードにある結果記憶域に含まれる1組の部分突合
せトークンとの間のパターン突合せ機能を指定する。次
いで、プログラムは、結合ノードで定義されるように、
トークンと結果記憶域の間でテストを行なう。この結果
記憶域は「反対側記憶域」と呼ばれる。
そのノードは、トークンの内容と、結合ノードの反対側
の入力にソース・ノードとして論理的に接続されている
先行ノードにある結果記憶域に含まれる1組の部分突合
せトークンとの間のパターン突合せ機能を指定する。次
いで、プログラムは、結合ノードで定義されるように、
トークンと結果記憶域の間でテストを行なう。この結果
記憶域は「反対側記憶域」と呼ばれる。
RETEは、1組のパターン突合せ規則からコンパイル
される。各規則はRETEを通るルート・ノードから出
力ノードまでの論理経路を定義する。
される。各規則はRETEを通るルート・ノードから出
力ノードまでの論理経路を定義する。
規則で定義されたRETEを通る経路は、一般にかなり
複雑になっている。したがって現在の所、RETEは、
−度コンパイルされると、結果記憶テーブルの更新を除
いては、比較的静的な構造となる。RETE及び他のパ
ターン突合せネットワークをよりフレキシブルで変更可
能なものにすることが望ましい。
複雑になっている。したがって現在の所、RETEは、
−度コンパイルされると、結果記憶テーブルの更新を除
いては、比較的静的な構造となる。RETE及び他のパ
ターン突合せネットワークをよりフレキシブルで変更可
能なものにすることが望ましい。
一般に前述のRETEは、併合されるRETEが、可能
ならば併合の相手方RETEとノードを共用し、一方新
しいRETEの併合不能で従って共用されない部分は、
併合の相手方RETE内の既存の結果記憶域からの部分
突合せ情報で正しく初期設定されるように、新しいRE
TE部分を正しく併合する能力を示さない。新しいパタ
ーン突合せネットワーク全体を再コンパイルし次いで更
新することなしに、要求主導型の動的変更ができるよう
に、パターン突合せネットワークの機能性を高めること
が望まれる。
ならば併合の相手方RETEとノードを共用し、一方新
しいRETEの併合不能で従って共用されない部分は、
併合の相手方RETE内の既存の結果記憶域からの部分
突合せ情報で正しく初期設定されるように、新しいRE
TE部分を正しく併合する能力を示さない。新しいパタ
ーン突合せネットワーク全体を再コンパイルし次いで更
新することなしに、要求主導型の動的変更ができるよう
に、パターン突合せネットワークの機能性を高めること
が望まれる。
ダン・スケールズ(Dan 5cales)の論文「S
。
。
AR10PS57”ロダクシ日ン・システム用の効率の
良い突合せアルゴリズム(Eff icientMat
ching Algorithms for the
5OAR10PS5Production Syste
m) J 、スタンフォード大学コンピュータ科学部技
術報告書(StanfordLlniversity
Technical Report of theDe
partment of Computer 5
cience)N 1 9 8 6 年の報告によれ
ば、従来の0PS5/RETEは、前述のように効率を
高められた。この教示は、要求主導型のまたはモジュー
ル式に更新可能なパターン突合せネットワークを教示も
示唆もしていない。
良い突合せアルゴリズム(Eff icientMat
ching Algorithms for the
5OAR10PS5Production Syste
m) J 、スタンフォード大学コンピュータ科学部技
術報告書(StanfordLlniversity
Technical Report of theDe
partment of Computer 5
cience)N 1 9 8 6 年の報告によれ
ば、従来の0PS5/RETEは、前述のように効率を
高められた。この教示は、要求主導型のまたはモジュー
ル式に更新可能なパターン突合せネットワークを教示も
示唆もしていない。
C0発明の要旨
本発明の目的は、パターン突合せネットワークにおいて
要求主導型パターン突合せを実現することである。
要求主導型パターン突合せを実現することである。
本発明の他の目的は、入カバターン突合せデータ構造と
既存パターン突合せネットワークの効率的で高速の併合
を実現することである。
既存パターン突合せネットワークの効率的で高速の併合
を実現することである。
2つのパターン突合せネットワークを併合すると、既存
のネットワークに、新たに加えられた構造(ここではノ
ードと呼ぶ)のいくつかを併合し、新たに加えられたが
併合不能なすべてのノードを接続することによって、加
えられるデータ構造の数が最小限になる。修正されたネ
ットワークを更新すると、パターン突合せ結果の重複も
欠落もない、正しい結果が生成される。
のネットワークに、新たに加えられた構造(ここではノ
ードと呼ぶ)のいくつかを併合し、新たに加えられたが
併合不能なすべてのノードを接続することによって、加
えられるデータ構造の数が最小限になる。修正されたネ
ットワークを更新すると、パターン突合せ結果の重複も
欠落もない、正しい結果が生成される。
本発明の他の目的は、突合せパターンの出所に応じて各
種の併合モードを提供することである。
種の併合モードを提供することである。
突合せパターンの出所は、規則の条件部分(一般に「規
則のLH8部分」と呼ばれる)でも、活動部分の作業か
らくる要求時パターン突合せ構造でもよい。修正された
ネットワークの更新によって、パターン突合せ結果の重
複も欠落もない、正しい結果が作成される。
則のLH8部分」と呼ばれる)でも、活動部分の作業か
らくる要求時パターン突合せ構造でもよい。修正された
ネットワークの更新によって、パターン突合せ結果の重
複も欠落もない、正しい結果が作成される。
本発明の他の目的は、突合せパターンの出所に応じた各
種の併合モードを提供することである。
種の併合モードを提供することである。
突合せパターンの出所は、規則の条件部分(一般に「規
則LH8部分」と呼ばれる)でも、規則の活動部分また
は任意の手順プログラミング・コードから来る要求時パ
ターン突合せ構造でも、トップ・レベル、すなわちある
ユーザによって入力された再使用の可能性のない要求時
パターンでもよい。
則LH8部分」と呼ばれる)でも、規則の活動部分また
は任意の手順プログラミング・コードから来る要求時パ
ターン突合せ構造でも、トップ・レベル、すなわちある
ユーザによって入力された再使用の可能性のない要求時
パターンでもよい。
併合のスパン(持続時間)は「永久的」でも「−時的」
でもよい。既存のRETEと永久モードで組み合わされ
た新しいRETE (ミニRETEと呼ぶことにする)
は、その結果得られる併合ネットワークの不可分の部分
となる。一方、既存RETEに一時モードで接合された
ミニRETEは、要求時にのみ使用可能である。これら
のRETEの未併合部分は、併合の相手方RETEと永
久的には接続されない。−時的併合では、併合されたR
ETEの再使用の可能性に応じて、シナプス・ノードが
保管されることも保管されないこともある。たとえば、
トップ・レベルのパターン突合せ要求は、保管されない
シナプス・ノードを生成し、一方規則の活動部分にある
要求時パターンは保管される。
でもよい。既存のRETEと永久モードで組み合わされ
た新しいRETE (ミニRETEと呼ぶことにする)
は、その結果得られる併合ネットワークの不可分の部分
となる。一方、既存RETEに一時モードで接合された
ミニRETEは、要求時にのみ使用可能である。これら
のRETEの未併合部分は、併合の相手方RETEと永
久的には接続されない。−時的併合では、併合されたR
ETEの再使用の可能性に応じて、シナプス・ノードが
保管されることも保管されないこともある。たとえば、
トップ・レベルのパターン突合せ要求は、保管されない
シナプス・ノードを生成し、一方規則の活動部分にある
要求時パターンは保管される。
D、実施例
添付の各図面をさらに詳しく参照するが、各図で、同じ
参照番号は、同じ部品及び構造上の特徴を示す。後述及
び前述のプログラミング・ステップを実施するための周
知のプログラミング言語は、”Common LIS
P”である。これについては、ガイ・L・スティール・
ジュニア(Guy L。
参照番号は、同じ部品及び構造上の特徴を示す。後述及
び前述のプログラミング・ステップを実施するための周
知のプログラミング言語は、”Common LIS
P”である。これについては、ガイ・L・スティール・
ジュニア(Guy L。
5teele、 Jr、)、rcOMMON LIS
PJ、Digital Pressx 1984年、
(QA76.73.L235731984 l5BHO
−932376−41−X)を参照のこと。既知のRE
TEアルゴリズムは、ブラウンストーン(Brovns
tone)、rOPs5によるエキスパート・システム
ノフロクラミング(PROGRA1414ING EX
PERTSYSTEMS I)l 0PS5) J 、
Addison−WesleyPublishing
Con+pany11985年、pp、228−239
に記載されている。従来のパターン突合せシステムなら
びにその好ましい実施例は、ディジタル・コンピュータ
(図示せず)を使用し、パターン突合せネットワークの
骨格を構成するデータ構造が、ディジタル・コンピュー
タの記憶域部分に記憶されるものである。すべての図は
、本発明が理解できるように、記憶された構造の一部を
詳細に示している。
PJ、Digital Pressx 1984年、
(QA76.73.L235731984 l5BHO
−932376−41−X)を参照のこと。既知のRE
TEアルゴリズムは、ブラウンストーン(Brovns
tone)、rOPs5によるエキスパート・システム
ノフロクラミング(PROGRA1414ING EX
PERTSYSTEMS I)l 0PS5) J 、
Addison−WesleyPublishing
Con+pany11985年、pp、228−239
に記載されている。従来のパターン突合せシステムなら
びにその好ましい実施例は、ディジタル・コンピュータ
(図示せず)を使用し、パターン突合せネットワークの
骨格を構成するデータ構造が、ディジタル・コンピュー
タの記憶域部分に記憶されるものである。すべての図は
、本発明が理解できるように、記憶された構造の一部を
詳細に示している。
第1図では、RETEIOが作業用記憶域11に対する
変更によって(周知のようにプログラムの実行を介して
)論理的に駆動される(作業用記憶域11は、RETE
システムの制御データ及び入力データ要素を記憶するた
めのディジタル・コンピュータのプログラム指定部分で
ある)。制御データ及び入力データは、作業用記憶要素
(WME)と呼ばれ、矢印13で示すように作業用記憶
域11に受は取られる。WMEは、作業用記憶域11に
追加し、そこから削除し、またはその中で変更すること
ができる。このような追加、削除、または変更の結果、
作業用記憶域11の内容が、RETE 10の現状況と
は異なるようになる。RETE 10は後述する記憶ノ
ードに部分パターン突合せ結果を記憶することを銘記さ
れたい。作業用記憶域11とRETE 10の間のこの
相違またはデルタは、当技術分野で周知のように、「ト
ークン」によって表される。トークンは1つのWMEに
対する1回の変更(追加、更新、または修正)を表す。
変更によって(周知のようにプログラムの実行を介して
)論理的に駆動される(作業用記憶域11は、RETE
システムの制御データ及び入力データ要素を記憶するた
めのディジタル・コンピュータのプログラム指定部分で
ある)。制御データ及び入力データは、作業用記憶要素
(WME)と呼ばれ、矢印13で示すように作業用記憶
域11に受は取られる。WMEは、作業用記憶域11に
追加し、そこから削除し、またはその中で変更すること
ができる。このような追加、削除、または変更の結果、
作業用記憶域11の内容が、RETE 10の現状況と
は異なるようになる。RETE 10は後述する記憶ノ
ードに部分パターン突合せ結果を記憶することを銘記さ
れたい。作業用記憶域11とRETE 10の間のこの
相違またはデルタは、当技術分野で周知のように、「ト
ークン」によって表される。トークンは1つのWMEに
対する1回の変更(追加、更新、または修正)を表す。
トークンは、矢印15で示すように、プログラム制御に
よって作業用記憶域11からRETEIOのルート・ノ
ード20に転送される。トークンがルート・ノード20
に入ると、周知のRETEプログラム(図示せず)がト
ップRETE入カノード(第3図に示すアルファ部デー
タ構造)21A−21Cを走査する。実際の実施例では
、このようなRETE入カノードが多数存在することも
ある。トークンがRETEノードのいずれかに関連する
パターン突合せテストに合格すると、パターン突合せ動
作はそのRETEノードからRETE内を下方に進む。
よって作業用記憶域11からRETEIOのルート・ノ
ード20に転送される。トークンがルート・ノード20
に入ると、周知のRETEプログラム(図示せず)がト
ップRETE入カノード(第3図に示すアルファ部デー
タ構造)21A−21Cを走査する。実際の実施例では
、このようなRETE入カノードが多数存在することも
ある。トークンがRETEノードのいずれかに関連する
パターン突合せテストに合格すると、パターン突合せ動
作はそのRETEノードからRETE内を下方に進む。
たとえば、ノード21Bでの突合せの結果、次にノード
22Bでパターン突合せ動作が行なわれる。アルファ・
ノード21A−21C及び22A−22Cは、前述のフ
ォージーによって教示されたRETEのアルファ部を表
す。このようなアルファ部では、単一のRETE入カノ
ードから、スペース23で図式的に示したアルファ・ノ
ードのいくつかの階層または層が走査される。アルファ
部の論理的下底は、1組のアルファ配布ノード24A−
24Dから構成される。図示された実施例で部分パター
ン突合せ結果を記憶しないアルフT・ノードは、周知の
ようにパターン突合せ動作を実行する。アルファ・ノー
ドでパターン突合せテストに合格したトークンは、RE
TEのアルファ部の下限でそれぞれ終端するアルファ配
布ノードに記憶される。
22Bでパターン突合せ動作が行なわれる。アルファ・
ノード21A−21C及び22A−22Cは、前述のフ
ォージーによって教示されたRETEのアルファ部を表
す。このようなアルファ部では、単一のRETE入カノ
ードから、スペース23で図式的に示したアルファ・ノ
ードのいくつかの階層または層が走査される。アルファ
部の論理的下底は、1組のアルファ配布ノード24A−
24Dから構成される。図示された実施例で部分パター
ン突合せ結果を記憶しないアルフT・ノードは、周知の
ようにパターン突合せ動作を実行する。アルファ・ノー
ドでパターン突合せテストに合格したトークンは、RE
TEのアルファ部の下限でそれぞれ終端するアルファ配
布ノードに記憶される。
アルファ配布ノード24A−24Dは、RETE内で結
果記憶域を有する一番上の(論理的にルート・ノード2
0に最も近い)ノードである。これらのノードは、後述
するようにベータ・シナプス・ソース・ノードとして指
定することができる。
果記憶域を有する一番上の(論理的にルート・ノード2
0に最も近い)ノードである。これらのノードは、後述
するようにベータ・シナプス・ソース・ノードとして指
定することができる。
ベータ・ノードと呼ばれる、論理的にアルファ配布ノー
ドの下にあるノードのすべてが、RETEのベータ部を
構成する。多くのベータ・ノードは、2つの入力を有す
る結合ノードである。各結合ノードは、ベータ結合ノー
ド25Dについて図示しであるように、LH8入力とR
H8入力を有する。他のベータ・ノード25A−25C
も、図示した各ベータ・ノードの横の当該の省略水平線
で示すように、同様の入力を有する。変更トークンはL
H8入力とRH8入力のいずれかを通って、結合ノード
にパスすることができる。パスされたトークンは、結合
ノード中で指定された述語テストを用い、反対側記憶域
(反対側の入力(すなわちRH8またはLH8)に接続
された先行ノードの結果記憶域)からの複数の引数値と
比較される、1組の引数値を構成する。すべてのテスト
に合格した場合、トークンは適切な後続ノードにパスさ
れる。
ドの下にあるノードのすべてが、RETEのベータ部を
構成する。多くのベータ・ノードは、2つの入力を有す
る結合ノードである。各結合ノードは、ベータ結合ノー
ド25Dについて図示しであるように、LH8入力とR
H8入力を有する。他のベータ・ノード25A−25C
も、図示した各ベータ・ノードの横の当該の省略水平線
で示すように、同様の入力を有する。変更トークンはL
H8入力とRH8入力のいずれかを通って、結合ノード
にパスすることができる。パスされたトークンは、結合
ノード中で指定された述語テストを用い、反対側記憶域
(反対側の入力(すなわちRH8またはLH8)に接続
された先行ノードの結果記憶域)からの複数の引数値と
比較される、1組の引数値を構成する。すべてのテスト
に合格した場合、トークンは適切な後続ノードにパスさ
れる。
RETE 10の下限または下底境界は、いわゆるプロ
ダクシロン・ノードを含む出力ノード28A−28Dか
ら成る。これらの出力ノードを除き、RETE内のすべ
てのノードは、後続ノード(現ノードの走査の後に続く
パターン突合せ動作でRETEプロラムによって走査さ
れるノード)を持つことができる。先行ノードとは、所
与のノードの走査より前に走査されるノードである。ア
ルファ・ノードは、その当該のアルファ配布ノードの先
行ノードである。ベータ・ノードは、アルファ配布ノー
ド及びアルファ・ノードの後続ノードである。ベータ・
ノードは、他のベータ・ノードの先行/−ドとなること
ができる。パターン突合せテストで使用されるデータ、
実際のデータ構造及びテスト定義は、すべてデータ域ま
たは記憶域16に記憶される。RETEのデータ内容は
、データ域16に、適切なデータ構造を指すポインタを
含む。
ダクシロン・ノードを含む出力ノード28A−28Dか
ら成る。これらの出力ノードを除き、RETE内のすべ
てのノードは、後続ノード(現ノードの走査の後に続く
パターン突合せ動作でRETEプロラムによって走査さ
れるノード)を持つことができる。先行ノードとは、所
与のノードの走査より前に走査されるノードである。ア
ルファ・ノードは、その当該のアルファ配布ノードの先
行ノードである。ベータ・ノードは、アルファ配布ノー
ド及びアルファ・ノードの後続ノードである。ベータ・
ノードは、他のベータ・ノードの先行/−ドとなること
ができる。パターン突合せテストで使用されるデータ、
実際のデータ構造及びテスト定義は、すべてデータ域ま
たは記憶域16に記憶される。RETEのデータ内容は
、データ域16に、適切なデータ構造を指すポインタを
含む。
本発明の1態様によれば、1つまたは複数のミニRET
Eまたはミニ・ネットワーク18が、既存RETE、元
のRETE、または主RETEと呼ばれるRETE 1
0に併合または接合される。
Eまたはミニ・ネットワーク18が、既存RETE、元
のRETE、または主RETEと呼ばれるRETE 1
0に併合または接合される。
後述する一点鎖線構造は、そのような併合、及び好まし
い実施例の併合プロセスの要求時パターン突合せ(後で
説明する)を簡略して示したものである。ミニRETE
は、規則から構築されたRETEなど、様°々なパター
ンに対応する独立に構築されたRETEネットワークで
ある。
い実施例の併合プロセスの要求時パターン突合せ(後で
説明する)を簡略して示したものである。ミニRETE
は、規則から構築されたRETEなど、様°々なパター
ンに対応する独立に構築されたRETEネットワークで
ある。
本発明の1態様によれば、「シナプス・ノード」と呼ば
れる1組の特殊ノードが、併合動作がRETE構造を変
更した後にRETEの「延期」部分を更新する目的で生
成される。このような延期部分は、既存のRETE (
主RETEとも称する)に接合されたノード、(後で明
らかになるように)選択的に更新されたノードなどであ
る。RETEの更新は「ソース・ノード」と呼ばれる1
組のノードまでさかのぼる。RETEの延期部分の最初
のノードは「ドレイン・ノード」と呼ばれる。シナプス
・ノードは、指定されたソース・ノードとドレイン・ノ
ードの間の結合を識別する。RETEの延期部分にある
ドレイン・ノードの後続ノードは、RETEに新たに接
合または付加され、まだRETEの現在状況に更新され
てはいない。このようなシナプス・ノードは、RETE
の延期部分に対するソース更新点(2つの入力結合ノー
ドの例では複数の点)を指定する。
れる1組の特殊ノードが、併合動作がRETE構造を変
更した後にRETEの「延期」部分を更新する目的で生
成される。このような延期部分は、既存のRETE (
主RETEとも称する)に接合されたノード、(後で明
らかになるように)選択的に更新されたノードなどであ
る。RETEの更新は「ソース・ノード」と呼ばれる1
組のノードまでさかのぼる。RETEの延期部分の最初
のノードは「ドレイン・ノード」と呼ばれる。シナプス
・ノードは、指定されたソース・ノードとドレイン・ノ
ードの間の結合を識別する。RETEの延期部分にある
ドレイン・ノードの後続ノードは、RETEに新たに接
合または付加され、まだRETEの現在状況に更新され
てはいない。このようなシナプス・ノードは、RETE
の延期部分に対するソース更新点(2つの入力結合ノー
ドの例では複数の点)を指定する。
結果記憶域中のデータ・テーブルは、ベータ結合メート
に記憶されたテスト定義に従って、ベータ結合ノード中
でトークン内容とパターン突合せ比較を行なうための、
引数値(数値、テキストなど、実際には任意の構造)を
含む。テーブルへのアクセスは通常のプログラミング手
順に従い、突合せ動作は通常のプログラミングで実施さ
れる比較であることを理解されたい。
に記憶されたテスト定義に従って、ベータ結合ノード中
でトークン内容とパターン突合せ比較を行なうための、
引数値(数値、テキストなど、実際には任意の構造)を
含む。テーブルへのアクセスは通常のプログラミング手
順に従い、突合せ動作は通常のプログラミングで実施さ
れる比較であることを理解されたい。
ベータ部では、各結合ノードは2つの入力、すなわち左
側(LH8)入力と右側(RH8)入力を持つ。結合ノ
ードの出力は、入カドークンと、反対側結果記憶トーク
ンの間のパターン突合せの成功を表すトークンから成る
。
側(LH8)入力と右側(RH8)入力を持つ。結合ノ
ードの出力は、入カドークンと、反対側結果記憶トーク
ンの間のパターン突合せの成功を表すトークンから成る
。
本発明の1態様によれば、2種類のシナプス・ノード、
すなわち「アルファ・シナプス・ノード」と「ベータ・
シナプス・ノード」が構築される。
すなわち「アルファ・シナプス・ノード」と「ベータ・
シナプス・ノード」が構築される。
これらのシナプス・ノードは、すでに計算されて既存の
RETE内に存在する部分突合せ情報が共用されるよう
に、既存RETEに新しいRETEが接続される、方式
と場所を識別する働きをする。
RETE内に存在する部分突合せ情報が共用されるよう
に、既存RETEに新しいRETEが接続される、方式
と場所を識別する働きをする。
これらのシナプス・ノードは、RETEの延期部分を更
新するために使用され、併合動作によってRETE構成
が変更されている。
新するために使用され、併合動作によってRETE構成
が変更されている。
このような延期部分は、既存のRETEに接合されたノ
ード、(後で明らかになるように)選択的に更新された
ノードなどである。ベータ・シナプス・ノードは1組の
RETEノードを識別する。
ード、(後で明らかになるように)選択的に更新された
ノードなどである。ベータ・シナプス・ノードは1組の
RETEノードを識別する。
すなわち、各ベータ・シナプス・ノードは、1つまたは
2つの「ソース」ノードを「ドレイン」ノードと関連づ
ける。ソース・ノードは併合の相手方RETE内のノー
ドであり、ドレイン・ノードは既存RETEと組み合わ
される新しいRETE中のノードである。アルファ・シ
ナプス・ノードは、後述のように、ミニRETEのトッ
プ・ノードを、その「ソース」が特定のトップ・ノード
に関連するWMEであるドレイン・ノードとして識別す
る。
2つの「ソース」ノードを「ドレイン」ノードと関連づ
ける。ソース・ノードは併合の相手方RETE内のノー
ドであり、ドレイン・ノードは既存RETEと組み合わ
される新しいRETE中のノードである。アルファ・シ
ナプス・ノードは、後述のように、ミニRETEのトッ
プ・ノードを、その「ソース」が特定のトップ・ノード
に関連するWMEであるドレイン・ノードとして識別す
る。
RETEの更新は、このようなシナプス・ノード中で識
別されたソース・ノードまでさかのぼり、RETEの延
期部分にある後続ノードは(RETE内の新たに接合ま
たは追加されたノードを含めて) 、RETEの現状況
に更新されてはいない。
別されたソース・ノードまでさかのぼり、RETEの延
期部分にある後続ノードは(RETE内の新たに接合ま
たは追加されたノードを含めて) 、RETEの現状況
に更新されてはいない。
ソース・ノードはRETHの延期部分に対するソース更
新点となる。
新点となる。
併合プロセスが完了すると、接合されたパターン突合せ
ネットワークは、併合中に作成された1組のシナプス・
ノード(ソース・ノードをドレイン・ノードに接続する
ノード)を使って更新される。更新アルゴリズムには2
種類ある。1つは送出の順序づけを必要としないもので
あり、もう1つは順序づけを必要とするが、最適化され
た性能を有するものである。第1の更新アルゴリズムは
、ソース・ノードが「停止」ノードとなり、ドレイン・
ノードが「再開」ノードとなるという、同時係属の特許
出願に記載されているような、汎用更新アルゴリズムで
ある。延期RETEのベータ部にあるソース・ノードと
その後続ノードは、ベータ・シナプス・ノードのリスト
によって識別される。第2の更新アルゴリズムは、トー
クン送出順序を指定することを必要とするが、空間と時
間の効率がより高い。この更新アルゴリズムによって、
実行プログラムは、まず後で定義する「左ソース・ノー
ド」 (ベータ・シナプス・ノードの一部)に記憶され
ているトークンを、汎用更新アルゴリズムにおけるシャ
ドウィングと右後続ノードへの送出を飛び越して、昇順
でドレイン・ノードに送る。
ネットワークは、併合中に作成された1組のシナプス・
ノード(ソース・ノードをドレイン・ノードに接続する
ノード)を使って更新される。更新アルゴリズムには2
種類ある。1つは送出の順序づけを必要としないもので
あり、もう1つは順序づけを必要とするが、最適化され
た性能を有するものである。第1の更新アルゴリズムは
、ソース・ノードが「停止」ノードとなり、ドレイン・
ノードが「再開」ノードとなるという、同時係属の特許
出願に記載されているような、汎用更新アルゴリズムで
ある。延期RETEのベータ部にあるソース・ノードと
その後続ノードは、ベータ・シナプス・ノードのリスト
によって識別される。第2の更新アルゴリズムは、トー
クン送出順序を指定することを必要とするが、空間と時
間の効率がより高い。この更新アルゴリズムによって、
実行プログラムは、まず後で定義する「左ソース・ノー
ド」 (ベータ・シナプス・ノードの一部)に記憶され
ているトークンを、汎用更新アルゴリズムにおけるシャ
ドウィングと右後続ノードへの送出を飛び越して、昇順
でドレイン・ノードに送る。
ノードからのトークンの昇順送出は、ホー・S・!J
−(Ho S、 Lee)他の同時係属の特許出願に詳
しく定義されている。アドレスされたベータ・シナプス
・ノードを介するネットワークの更新は、一番下のレベ
ルの左ソース・ノード(更新スヘキ延期RETE中のす
べてのドレイン・ノードのうち一番下のレベルのドレイ
ン・ノードに論理的に接続されたソース・ノード)から
ドレイン・ノード(同時係属の特許出願では再開ノード
と称している)へのトークンの送出で始まる。左ソース
・ノードから接続されたドレイン・ノードへのトークン
の一連の昇順ブツシュによって、更新プロセスの第1ス
テツプが完了する。ドレイン・ノードの論理的順序は、
余分の探索努力なしに、併合アルゴリズムの副産物とし
て得ることができる。2つのドレイン・ノード間に明白
な順序がない場合は、この2つのドレイン・ノードへの
トークンの送出順序は任意である。第2ステツプとして
、アルファ・シナプスによって指定されるアルファ・ト
ップ(ソース)ノードに関連するWMEが、その後続ノ
ードに任意の順序で送出される。最適化された更新アル
ゴリズムを使用すると、実行時間性能が向上する。
−(Ho S、 Lee)他の同時係属の特許出願に詳
しく定義されている。アドレスされたベータ・シナプス
・ノードを介するネットワークの更新は、一番下のレベ
ルの左ソース・ノード(更新スヘキ延期RETE中のす
べてのドレイン・ノードのうち一番下のレベルのドレイ
ン・ノードに論理的に接続されたソース・ノード)から
ドレイン・ノード(同時係属の特許出願では再開ノード
と称している)へのトークンの送出で始まる。左ソース
・ノードから接続されたドレイン・ノードへのトークン
の一連の昇順ブツシュによって、更新プロセスの第1ス
テツプが完了する。ドレイン・ノードの論理的順序は、
余分の探索努力なしに、併合アルゴリズムの副産物とし
て得ることができる。2つのドレイン・ノード間に明白
な順序がない場合は、この2つのドレイン・ノードへの
トークンの送出順序は任意である。第2ステツプとして
、アルファ・シナプスによって指定されるアルファ・ト
ップ(ソース)ノードに関連するWMEが、その後続ノ
ードに任意の順序で送出される。最適化された更新アル
ゴリズムを使用すると、実行時間性能が向上する。
第2図は、好ましい実施例に従って、パターン突合せネ
ット、ワーク併合を行なうマシン動作を示す。マシン・
ステップ30で、周知のように、突合せパターンが構築
されていると仮定する。第4図及び第6図は、このよう
な突合せパターンの結果を示している。このような突合
せパターンは、ある例ではRETEの1つの規則を構成
するが、それだけに限定されるものではない。
ット、ワーク併合を行なうマシン動作を示す。マシン・
ステップ30で、周知のように、突合せパターンが構築
されていると仮定する。第4図及び第6図は、このよう
な突合せパターンの結果を示している。このような突合
せパターンは、ある例ではRETEの1つの規則を構成
するが、それだけに限定されるものではない。
突合せパターンからRETEネットワークを構築するた
めの周知の方法を用いて、突合せパターンからミニ・ネ
ットワークが作成される。その結果得られるミニ・ネッ
トワークは、自己併合されてもされなくてもよく、どち
らも本発明でカバーされる。自己併合されたネットワー
クとは、より高いレベルのノード(すなわちルート・ノ
ードにより近いノード)が可能ならば共用され、その結
果、共用されたこれらのノードが複数の後続ノードをも
つようなネットワークである。
めの周知の方法を用いて、突合せパターンからミニ・ネ
ットワークが作成される。その結果得られるミニ・ネッ
トワークは、自己併合されてもされなくてもよく、どち
らも本発明でカバーされる。自己併合されたネットワー
クとは、より高いレベルのノード(すなわちルート・ノ
ードにより近いノード)が可能ならば共用され、その結
果、共用されたこれらのノードが複数の後続ノードをも
つようなネットワークである。
マシン・ステップ32で、マシン・ステップ31で作成
されたミニ・ネットワークが現ネットワークまたは既存
のネットワーク10に組み合わされる。第14図及び第
15図に、併合処理の詳細を示す。併合の結果、現ネッ
トワーク10は増補されて、修正されたネットワークま
たはRETE34なり、要求時に情報を供給するために
使用される。併合ステップ32の一環として、1組のシ
ナプス・ノード33(第3図はこのようなシナプス・ノ
ードのデータ構造態様を示す)を作成することもできる
。シナプス・ノードは、同時係属の特許出願に記載され
ているように、ソース・ノードと呼ばれる一番下の併合
の相手方ノードと、延期RETE部分への入口点でもあ
る、未併合ミニ・ネットワークの一番上の部分との間の
結合点を識別する。一番下の併合された元のRETEノ
ードの後続ノード(ミニRETEが併合された先の7−
ド)としては、併合される修正済ネットワークの当該の
一番下のノードに接続された、つまりミニRETEノー
ドが併合された相手の一番下の既存ノードに接続された
、ミニRETE中のノードが含まれる。ミニRETEか
ら接続された後続ノードはどれも、作業用記憶域11中
のどのWME活動からのどのパターン突合せ情報によっ
ても更新されていない。したがって併合後に、このよう
な後続ノードと作業用記憶域11の現状況との間にデル
タまたは相違が生じる。「ソース・ノード」は更新され
た他の後続ノードを有する可能性がきわめて高いことに
留意されたい。このような他の後続ノードは、併合前に
はRETEにあったか、または作業用記憶域の現状況に
更新されていた。更新ステップ46では、生成されたば
かりのシナプス・ノード33を使用して、上記のソース
・ノードまたは併合ノードから始めて、既存のWMEデ
ータ11によってまだ更新されていない併合されたミニ
RETEの後続ノードにトークンをブツシュし、後で明
らかになるように、1つまたは一連の各ノード中の一番
下の併合ノードすべての接合されたミニRETE後続ノ
ードを、すべてに更新する。このようなシナプス・ノー
ドは、RETEの「延期」部分中でRETEノードを選
択的に更新するため、後述のゲート活動を提供するのに
も使用できる。
されたミニ・ネットワークが現ネットワークまたは既存
のネットワーク10に組み合わされる。第14図及び第
15図に、併合処理の詳細を示す。併合の結果、現ネッ
トワーク10は増補されて、修正されたネットワークま
たはRETE34なり、要求時に情報を供給するために
使用される。併合ステップ32の一環として、1組のシ
ナプス・ノード33(第3図はこのようなシナプス・ノ
ードのデータ構造態様を示す)を作成することもできる
。シナプス・ノードは、同時係属の特許出願に記載され
ているように、ソース・ノードと呼ばれる一番下の併合
の相手方ノードと、延期RETE部分への入口点でもあ
る、未併合ミニ・ネットワークの一番上の部分との間の
結合点を識別する。一番下の併合された元のRETEノ
ードの後続ノード(ミニRETEが併合された先の7−
ド)としては、併合される修正済ネットワークの当該の
一番下のノードに接続された、つまりミニRETEノー
ドが併合された相手の一番下の既存ノードに接続された
、ミニRETE中のノードが含まれる。ミニRETEか
ら接続された後続ノードはどれも、作業用記憶域11中
のどのWME活動からのどのパターン突合せ情報によっ
ても更新されていない。したがって併合後に、このよう
な後続ノードと作業用記憶域11の現状況との間にデル
タまたは相違が生じる。「ソース・ノード」は更新され
た他の後続ノードを有する可能性がきわめて高いことに
留意されたい。このような他の後続ノードは、併合前に
はRETEにあったか、または作業用記憶域の現状況に
更新されていた。更新ステップ46では、生成されたば
かりのシナプス・ノード33を使用して、上記のソース
・ノードまたは併合ノードから始めて、既存のWMEデ
ータ11によってまだ更新されていない併合されたミニ
RETEの後続ノードにトークンをブツシュし、後で明
らかになるように、1つまたは一連の各ノード中の一番
下の併合ノードすべての接合されたミニRETE後続ノ
ードを、すべてに更新する。このようなシナプス・ノー
ドは、RETEの「延期」部分中でRETEノードを選
択的に更新するため、後述のゲート活動を提供するのに
も使用できる。
RETE 10内に示す破線のデータ構造は、修正ネッ
トワーク34を部分更新する必要性を示すためのもので
ある。これらのプロセスの詳細を第4図ないし第16図
に示す。いくつかの代表的な更新が示されている。たと
えば、ミニRETE 18からのデルタT・ノード37
は、アルファ・ノード21Aにその直接後続ノードの1
つとして接続されている。接合されたノード37の出力
接続は、そのミニRETE内のノード37の以前に存在
したノードまたは後続ノード(図示せず)であり、ノー
ド37と共に、そのミニRETEから更新されたRET
Eまたはネットワーク34に「接合RETEJ部分とし
て運ばれる。ノード37は、RETE入カノード2LA
と併合された直前の先行ノードへの、RETE入カノー
ド(図示せず)をミニRETE内に有していた。したが
って、ノード37のミニRETE入カノードは、既存の
RETE入力ノード2LAに併合されて、廃棄された。
トワーク34を部分更新する必要性を示すためのもので
ある。これらのプロセスの詳細を第4図ないし第16図
に示す。いくつかの代表的な更新が示されている。たと
えば、ミニRETE 18からのデルタT・ノード37
は、アルファ・ノード21Aにその直接後続ノードの1
つとして接続されている。接合されたノード37の出力
接続は、そのミニRETE内のノード37の以前に存在
したノードまたは後続ノード(図示せず)であり、ノー
ド37と共に、そのミニRETEから更新されたRET
Eまたはネットワーク34に「接合RETEJ部分とし
て運ばれる。ノード37は、RETE入カノード2LA
と併合された直前の先行ノードへの、RETE入カノー
ド(図示せず)をミニRETE内に有していた。したが
って、ノード37のミニRETE入カノードは、既存の
RETE入力ノード2LAに併合されて、廃棄された。
ノード2LAの出力とノード37の入力の間の接続は、
後述のいわゆる「併合リンク」により、ノード37のミ
ニRETE先行ノードからノード37へのリンクの切断
は「併合切断」と呼ばれる。
後述のいわゆる「併合リンク」により、ノード37のミ
ニRETE先行ノードからノード37へのリンクの切断
は「併合切断」と呼ばれる。
アルファ部併合の他の場合では、ミニRETEは、併合
されるとRETE入カノードとなるトップ・ノード41
、中間アルファ・ノード42、アルファ配布ノード43
、ベータ・ノード44及び出力ノード(プログクシ1ン
・ノードまたはマツチ・ノードでもよい)40を含む。
されるとRETE入カノードとなるトップ・ノード41
、中間アルファ・ノード42、アルファ配布ノード43
、ベータ・ノード44及び出力ノード(プログクシ1ン
・ノードまたはマツチ・ノードでもよい)40を含む。
これらのノードのいずれも既存のRETEノードのいず
れとも併合されていない。ベータ・ノード44へのLH
8入力は、ミニRETE 1 B内のベータ・ノード4
4のLH8先行ノードと併合されたRETE 10内の
ノードに接続される。ノード40−44については、図
示したノードでは併合は見られなかった。したがって、
これらのノードはすべてRETEIOに加えられ、加え
られたノードは接合RETE部分である。
れとも併合されていない。ベータ・ノード44へのLH
8入力は、ミニRETE 1 B内のベータ・ノード4
4のLH8先行ノードと併合されたRETE 10内の
ノードに接続される。ノード40−44については、図
示したノードでは併合は見られなかった。したがって、
これらのノードはすべてRETEIOに加えられ、加え
られたノードは接合RETE部分である。
特定のアルファ・トップ・ノードでは、ミニR、。
ETEのアルファ・ノードのすべてが既存の主RETE
にうまく組み合わされていない場合、ミニRETE内の
部分的に組み合わされたアルファ部のトップ・ノードが
、アルファ・シナプス・ノードによってt旨定されたソ
ース・ノードになる。自己併合されたミニRETEネッ
トワークでは、同じアルファ・トップ・ソース・ノード
を指定する複数のアルファ・シナプス・ノードが、トッ
プ・ノード1つ当りただ1つのアルファ・シナプス・ノ
ードが作成されるように、併合される。併合が可能かど
うかテストするためにミニRETEのアルア1部を走査
する間に、アルファ配布ノードとの併合テストが成功し
た場合、ミニRETE内のアルファ配布ノードの先行ノ
ードからアルファ配布ノードに向う正方向ポインタが、
正しい突合せ結果を得るために除去される。
にうまく組み合わされていない場合、ミニRETE内の
部分的に組み合わされたアルファ部のトップ・ノードが
、アルファ・シナプス・ノードによってt旨定されたソ
ース・ノードになる。自己併合されたミニRETEネッ
トワークでは、同じアルファ・トップ・ソース・ノード
を指定する複数のアルファ・シナプス・ノードが、トッ
プ・ノード1つ当りただ1つのアルファ・シナプス・ノ
ードが作成されるように、併合される。併合が可能かど
うかテストするためにミニRETEのアルア1部を走査
する間に、アルファ配布ノードとの併合テストが成功し
た場合、ミニRETE内のアルファ配布ノードの先行ノ
ードからアルファ配布ノードに向う正方向ポインタが、
正しい突合せ結果を得るために除去される。
次に、たとえば記憶ノード38が既存RETEのベータ
部に加えられるという例を考えてみる。
部に加えられるという例を考えてみる。
ノード38の先行ノードが、元のRETE (図示せず
)内の1つのノードとうまく併合されたベータ・ノード
である、すなわちミニRETE 18内のノード38の
先行ノードが主RETE 10内の既存ベータ・ノード
に併合されたと仮定する。したがって、ベータ・ノード
38は、併合されたミニRETEの一部分の一番上のノ
ードであり、RETE 10のどの既存ベータ・ノード
とも併合されなかったベータ・ノードである。ノード3
8は、全体で接合されたRETEを構成する、ブロダク
シ日ソ・ノード(図示せず)またはマツチ・ノードのい
ずれかで終わる後続ノードのネットワークを有すること
がある。主RETE内のノードとの併合リンクを有する
ミニRETE内のノードの直接先行ノードは、「最終併
合ノード」と呼ばれ、ミニRETE内の最終併合ノード
の後続ノードはすべて主RETEに併合できないことを
意味する。
)内の1つのノードとうまく併合されたベータ・ノード
である、すなわちミニRETE 18内のノード38の
先行ノードが主RETE 10内の既存ベータ・ノード
に併合されたと仮定する。したがって、ベータ・ノード
38は、併合されたミニRETEの一部分の一番上のノ
ードであり、RETE 10のどの既存ベータ・ノード
とも併合されなかったベータ・ノードである。ノード3
8は、全体で接合されたRETEを構成する、ブロダク
シ日ソ・ノード(図示せず)またはマツチ・ノードのい
ずれかで終わる後続ノードのネットワークを有すること
がある。主RETE内のノードとの併合リンクを有する
ミニRETE内のノードの直接先行ノードは、「最終併
合ノード」と呼ばれ、ミニRETE内の最終併合ノード
の後続ノードはすべて主RETEに併合できないことを
意味する。
たとえば、ミニRETE 18内の7−ド38の直接先
行ノードは、最終併合ノードである。ミニRETE内の
記憶ノードが既存RETEのどれかと併合されている場
合、後述するように、いわゆる「ベータ・シナプス・ノ
ード・トリプル」がRETEIOの適切な更新を保証す
るために生成される。ベータ・シナプス・ノード・トリ
プルの各ノードは、第3図のシナプス・ノード50とし
ての構造を持つ。いわゆる「併合プロセス」で、ミニR
ETEが検査されて、元のRETE内と同等なノードを
含むミニRETEの順序づけられた1組の併合可能ノー
ドが確立される。このシーケンスは、併合プロセスによ
って作成される後述のシナプス・ノードの順序と配置に
影響を及ぼすので、重要である。ミニRETE内のノー
ドは、併合テストのため、あるノードの先行ノードを走
査して決定された順序で選択される。2人カノード(た
とえば、結合ノード)の場合、左側の先行ノードが右側
の先行ノードより先に走査される。トップ・ノードに達
すると走査は停止する。
行ノードは、最終併合ノードである。ミニRETE内の
記憶ノードが既存RETEのどれかと併合されている場
合、後述するように、いわゆる「ベータ・シナプス・ノ
ード・トリプル」がRETEIOの適切な更新を保証す
るために生成される。ベータ・シナプス・ノード・トリ
プルの各ノードは、第3図のシナプス・ノード50とし
ての構造を持つ。いわゆる「併合プロセス」で、ミニR
ETEが検査されて、元のRETE内と同等なノードを
含むミニRETEの順序づけられた1組の併合可能ノー
ドが確立される。このシーケンスは、併合プロセスによ
って作成される後述のシナプス・ノードの順序と配置に
影響を及ぼすので、重要である。ミニRETE内のノー
ドは、併合テストのため、あるノードの先行ノードを走
査して決定された順序で選択される。2人カノード(た
とえば、結合ノード)の場合、左側の先行ノードが右側
の先行ノードより先に走査される。トップ・ノードに達
すると走査は停止する。
走査で見つかったミニRETE内のトップ・ノードは、
既存の主RETE )ツブ・ノードと併合されているか
どうかテストされる。ノードは、同じパターン・テスト
機能を果たす場合、互いに併合させることができる。同
じパターン・テスト機能を果たすかどうか調べるための
ノードの比較は周知のアルゴリズムであり、現在、新し
いパターンの構築時に、それらのパターンのためにRE
TEを併合する目的で0PS5中で実施されている。
既存の主RETE )ツブ・ノードと併合されているか
どうかテストされる。ノードは、同じパターン・テスト
機能を果たす場合、互いに併合させることができる。同
じパターン・テスト機能を果たすかどうか調べるための
ノードの比較は周知のアルゴリズムであり、現在、新し
いパターンの構築時に、それらのパターンのためにRE
TEを併合する目的で0PS5中で実施されている。
上述の分析と走査の目的は、トップ・ノードから出発し
て、ミ、=RETEの下底ノードへと、併合がもはや不
可能になる点を探すことである。トップ・ノードが併合
可能な場合、その後続ノードがテストされる。すべての
7−ドが併合されるか、または併合不能なノードが見つ
かるまでそれを続ける。ノードの併合が発生した場合、
元のRETE内とミニRETE内のすべての先行ノード
も併合される。ノードの併合は、先行ノードによっての
み決定され、後続ノードは所与のノードの併合に何の影
響も及ぼさない。ベータ・シナプス・ノード・トリプル
は3つのノード、つます右ソース・ノード、左ソース・
ノード及びドレイン・ノードから成る。ベータ・シナプ
ス・ノード・トリプルの右及び左ソース・ノードは、そ
れぞれ主RETE内の併合ノードを指し、一方ドレイン
・ノードは、ミニRETE内のノードを指す。併合切断
活動が発生する前は、ドレイン・ノードはミニRETE
内の最終併合ノードの直接後続ノードである。
て、ミ、=RETEの下底ノードへと、併合がもはや不
可能になる点を探すことである。トップ・ノードが併合
可能な場合、その後続ノードがテストされる。すべての
7−ドが併合されるか、または併合不能なノードが見つ
かるまでそれを続ける。ノードの併合が発生した場合、
元のRETE内とミニRETE内のすべての先行ノード
も併合される。ノードの併合は、先行ノードによっての
み決定され、後続ノードは所与のノードの併合に何の影
響も及ぼさない。ベータ・シナプス・ノード・トリプル
は3つのノード、つます右ソース・ノード、左ソース・
ノード及びドレイン・ノードから成る。ベータ・シナプ
ス・ノード・トリプルの右及び左ソース・ノードは、そ
れぞれ主RETE内の併合ノードを指し、一方ドレイン
・ノードは、ミニRETE内のノードを指す。併合切断
活動が発生する前は、ドレイン・ノードはミニRETE
内の最終併合ノードの直接後続ノードである。
最終併合ミニRETEノードの先行ノード、及び最終併
合ミニRETEノード自体はすべて併合されている。つ
まり、このような先行ミニRETEノードは、結果とし
て得られる併合されたRETEに組み込まれず、すでに
主RETE内にある既存のRETE構造が同じ効果のた
めに再利用される。主RETEの併合ノードの直接先行
ノードは、このノードの併合によって変更されない、ミ
ニRETEが主RETEに永久的に併合される/Nll
ターンを表す場合、併合される先の元のノードは、新し
い直接後続ノード、つまりミニRETE最終併合ノード
の直接後続ノードであるドレイン・ノードを受は取る。
合ミニRETEノード自体はすべて併合されている。つ
まり、このような先行ミニRETEノードは、結果とし
て得られる併合されたRETEに組み込まれず、すでに
主RETE内にある既存のRETE構造が同じ効果のた
めに再利用される。主RETEの併合ノードの直接先行
ノードは、このノードの併合によって変更されない、ミ
ニRETEが主RETEに永久的に併合される/Nll
ターンを表す場合、併合される先の元のノードは、新し
い直接後続ノード、つまりミニRETE最終併合ノード
の直接後続ノードであるドレイン・ノードを受は取る。
すなわち、この直接後続ノードは、このとき延期または
接合されたRETE部分のトップ・ノードであるドレイ
ン・ノードになっている。
接合されたRETE部分のトップ・ノードであるドレイ
ン・ノードになっている。
これは、併合より後まで維持され元のRETEソース・
ノード(併合ノードとも呼ばれる)に接続されるために
分析される論理経路中のミニRETEの最高レベルのノ
ードである。
ノード(併合ノードとも呼ばれる)に接続されるために
分析される論理経路中のミニRETEの最高レベルのノ
ードである。
併合されたミ=RETEが、将来突合せが要求されたと
き要求時突合せ動作のため再現可能な要求時突合せパタ
ーンから構築されている場合、シナプス・ノードは永久
に記憶される。要求時突合せパターン接合が、新たに指
定されたドレイン・ノードを、主RETEノードの後続
ノードとして主RETEに永久にリンクすることはない
。この選択的論理接続は、要求時ネットワークに関連す
るパターン突合せ活動が、要求時データ変更以外のデー
タ変更が行なわれるときに処理されないようにする。
き要求時突合せ動作のため再現可能な要求時突合せパタ
ーンから構築されている場合、シナプス・ノードは永久
に記憶される。要求時突合せパターン接合が、新たに指
定されたドレイン・ノードを、主RETEノードの後続
ノードとして主RETEに永久にリンクすることはない
。この選択的論理接続は、要求時ネットワークに関連す
るパターン突合せ活動が、要求時データ変更以外のデー
タ変更が行なわれるときに処理されないようにする。
再現可能要求時ミニRETEパターンでは、シナプス・
ノードを含む特別リンクが、延期部分の突合せパターン
が(再現可能要求時突合せパターンを含む)他のどのパ
ターン断片によってももはや使用されないときにはいつ
でも、延期部分を除外する計算を可能にする。このシナ
プス接続はこのような望ましくない突合せパターンの簡
単な削除を可能にする。新しい規則LH8(規則LH8
をLH3H3入力同しないこと)及び再現不能な要求時
パターンを表すミニRETEパターンの場合、シナプス
・ノードは、RETEの新たに追加または接合された部
分である延期RETE部分を更新するために1度使用さ
れた後に、廃棄される。
ノードを含む特別リンクが、延期部分の突合せパターン
が(再現可能要求時突合せパターンを含む)他のどのパ
ターン断片によってももはや使用されないときにはいつ
でも、延期部分を除外する計算を可能にする。このシナ
プス接続はこのような望ましくない突合せパターンの簡
単な削除を可能にする。新しい規則LH8(規則LH8
をLH3H3入力同しないこと)及び再現不能な要求時
パターンを表すミニRETEパターンの場合、シナプス
・ノードは、RETEの新たに追加または接合された部
分である延期RETE部分を更新するために1度使用さ
れた後に、廃棄される。
というのは、RETEの新たに追加または接合された部
分の初期「ブライミング」が完了すると、そのようなシ
ナプス・ノードをさらに維持する必要はないからである
。
分の初期「ブライミング」が完了すると、そのようなシ
ナプス・ノードをさらに維持する必要はないからである
。
第3図は、本発明の説明に使用されるデータ構造を示す
。RETEまたは他の形式のパターン突合せネットワー
クの実際の実施例では、当技術分野で周知のように、さ
らに多くのデータ構造が使用されることを理解されたい
。ベータ・シナプス・ノード50は、(接続シナプス・
ノードが使用されていないときの延期部分である)接合
されたRETEの境界を識別する。シナプス・ノードは
、後で明らかになるように、元のまたは主RETEを、
要求時更新の実施及びその他の目的のための「ゲート」
として、接合されたRETEに選択的に接続する。各ベ
ータ・シナプス・ノード50は3つのポインタを有する
。第1フイールドRPRED51は右先行ノードを指す
ポインタを宵し、第2フイールドLPRED52は左先
行ノードを指すポインタを有し、フィールドDRAIN
53はドレイン・ノードを指すポインタを有する。
。RETEまたは他の形式のパターン突合せネットワー
クの実際の実施例では、当技術分野で周知のように、さ
らに多くのデータ構造が使用されることを理解されたい
。ベータ・シナプス・ノード50は、(接続シナプス・
ノードが使用されていないときの延期部分である)接合
されたRETEの境界を識別する。シナプス・ノードは
、後で明らかになるように、元のまたは主RETEを、
要求時更新の実施及びその他の目的のための「ゲート」
として、接合されたRETEに選択的に接続する。各ベ
ータ・シナプス・ノード50は3つのポインタを有する
。第1フイールドRPRED51は右先行ノードを指す
ポインタを宵し、第2フイールドLPRED52は左先
行ノードを指すポインタを有し、フィールドDRAIN
53はドレイン・ノードを指すポインタを有する。
フィールド51または52(ただし両方ではない)は、
その側のドレイン・ノードの先行ノードが主RETE内
にないことを指示するゼロでもよい。
その側のドレイン・ノードの先行ノードが主RETE内
にないことを指示するゼロでもよい。
先行ノードがあるかもしれないが、「ゼロ」フィールド
51または52に対するそのような先行ノードは、ミニ
RETE内にある。このような先行ノードは主RETE
ノードと併合することができないので、主RETE内に
残る。各アルファ・シナプス・ノードは、ベータ・シナ
プス・ノードとは異ナリ、アルファ・トップ・ノードを
指す単一のポインタを有する。したがって、アルファ・
シナプス・ノードはドレイン・ノードのみを指す。
51または52に対するそのような先行ノードは、ミニ
RETE内にある。このような先行ノードは主RETE
ノードと併合することができないので、主RETE内に
残る。各アルファ・シナプス・ノードは、ベータ・シナ
プス・ノードとは異ナリ、アルファ・トップ・ノードを
指す単一のポインタを有する。したがって、アルファ・
シナプス・ノードはドレイン・ノードのみを指す。
ベータ・シナプス・ノード・フィールド53によって指
されるドレイン・ノードは、主RETEノードに併合さ
れない、すなわち主RETEノードに併合することがで
きないミニRETE経路中の最高のノードである、ミニ
RETEのベータ・ノードを識別し、したがってこのド
レイン・ノードは接合された主RETE内に残る。ベー
タ・シナプス・ノードによって指されるドレイン・ノー
ドは、それが結合ノードであるとき、2つのノード入力
、LH3H3入力H8入力を持つ。主RETEノードに
併合されなかったドレイン・ノードのすべての後続ノー
ドは、接合されたRETE内になければならない。すな
わち延期RETE部分のメンバー・ノードとなる。
されるドレイン・ノードは、主RETEノードに併合さ
れない、すなわち主RETEノードに併合することがで
きないミニRETE経路中の最高のノードである、ミニ
RETEのベータ・ノードを識別し、したがってこのド
レイン・ノードは接合された主RETE内に残る。ベー
タ・シナプス・ノードによって指されるドレイン・ノー
ドは、それが結合ノードであるとき、2つのノード入力
、LH3H3入力H8入力を持つ。主RETEノードに
併合されなかったドレイン・ノードのすべての後続ノー
ドは、接合されたRETE内になければならない。すな
わち延期RETE部分のメンバー・ノードとなる。
ミニRETEが既存RETEに永久的に追加される新し
い規則を表す場合は、主RETEノードに併合できない
ノード列中の一番上のミニRETEノードが、元のRE
TEの併合ノードの追加の直接後続ノードとなる。すな
わち、このような併合ノードは、ミニRETEノードの
最終併合ノードが併合される先の主RETEノードであ
る。この実施例では、各アルファ・シナプス・ノードは
、作成されたミニRETE内のトップ・メートを指す。
い規則を表す場合は、主RETEノードに併合できない
ノード列中の一番上のミニRETEノードが、元のRE
TEの併合ノードの追加の直接後続ノードとなる。すな
わち、このような併合ノードは、ミニRETEノードの
最終併合ノードが併合される先の主RETEノードであ
る。この実施例では、各アルファ・シナプス・ノードは
、作成されたミニRETE内のトップ・メートを指す。
主RETEのトップ・ノードは複数の直接後続ノードを
宵することができるので、ミニRETEトップΦノード
へのアルファ・シナプス−ノード点ができると、主RE
TE内の既に初期設定されたRETEへのトークンの伝
播を防止しながら、トークンを正しくミニRETE部分
に伝播させる方法がもたらされる。このようなアルファ
・シナプス・ノードは、修正されたRETE内の最終併
合アルファ・ノードにトークンをパスするために、ミニ
RETEの(恐らくは自己併合された)トップ・ノード
を指す。アルファ・シナプス・ノードがすべて、アドレ
ス可能な連係リスト中にあり、またベータ・シナプス・
ノードがすべて別のアドレス可能な連係リスト中にある
ことが好ましい。
宵することができるので、ミニRETEトップΦノード
へのアルファ・シナプス−ノード点ができると、主RE
TE内の既に初期設定されたRETEへのトークンの伝
播を防止しながら、トークンを正しくミニRETE部分
に伝播させる方法がもたらされる。このようなアルファ
・シナプス・ノードは、修正されたRETE内の最終併
合アルファ・ノードにトークンをパスするために、ミニ
RETEの(恐らくは自己併合された)トップ・ノード
を指す。アルファ・シナプス・ノードがすべて、アドレ
ス可能な連係リスト中にあり、またベータ・シナプス・
ノードがすべて別のアドレス可能な連係リスト中にある
ことが好ましい。
各併合は、そのアルファ及びベータ・シナプス・ノード
用に別々のアドレス可能連係リストを有することができ
、またはすべてのアルファ及びベータ・シナプス・ノー
ド用に1つのリストを設け、シナプス・ノードによって
指示される種々の論理接続に対してリスト中でオフセッ
トを指示することもできる。更新ステップの後に、規則
RHSパターンから構築されたミニRETEなど、その
ソースが再現可能な要求時パターン突合せであったミニ
RETEの場合を除き、シナプス・ノードはすべて廃棄
される。繰返し動作で使用される要求時突合せパターン
の場合には、作成された1組のシナプス・ノードが、後
で開始される更新動作のために記憶される。
用に別々のアドレス可能連係リストを有することができ
、またはすべてのアルファ及びベータ・シナプス・ノー
ド用に1つのリストを設け、シナプス・ノードによって
指示される種々の論理接続に対してリスト中でオフセッ
トを指示することもできる。更新ステップの後に、規則
RHSパターンから構築されたミニRETEなど、その
ソースが再現可能な要求時パターン突合せであったミニ
RETEの場合を除き、シナプス・ノードはすべて廃棄
される。繰返し動作で使用される要求時突合せパターン
の場合には、作成された1組のシナプス・ノードが、後
で開始される更新動作のために記憶される。
新たに永久的に追加された規則パターンを表すミニRE
TE1または(1回パターン突合せ要求など)再現性の
必要がない要求時パターン突合せ用に作成されたシナプ
ス・ノードは、1度だけ使用され、更新が完了すると廃
棄される。主RETEに併合された他のミニRETEは
、その主RETEの永久部分となることができ、つまり
その主RETEに包含される(この結果得られる延期さ
れた部分を識別するシナプス・ノードは廃棄され、併合
されたミニRETEはその元の主RETEの先行ノード
すべてを指すポイントを有する)。すなわち、併合及び
延期部分の最初の更新の完了後には、指定されたソース
・ノード及びドレイン・ノードは存在しない。
TE1または(1回パターン突合せ要求など)再現性の
必要がない要求時パターン突合せ用に作成されたシナプ
ス・ノードは、1度だけ使用され、更新が完了すると廃
棄される。主RETEに併合された他のミニRETEは
、その主RETEの永久部分となることができ、つまり
その主RETEに包含される(この結果得られる延期さ
れた部分を識別するシナプス・ノードは廃棄され、併合
されたミニRETEはその元の主RETEの先行ノード
すべてを指すポイントを有する)。すなわち、併合及び
延期部分の最初の更新の完了後には、指定されたソース
・ノード及びドレイン・ノードは存在しない。
アルファ部ノード構造58(ノード21Cなど)は、デ
ータ構造をRETEアルファ・ノードまたはトップ・ノ
ードとして識別するタイプ・フィールド60を含む。ア
ルファ・ノードのPPREDフィールド61は、その唯
一の直接先行ノードを指すアドレス・ポインタを記憶し
、一方トツブまたは入力アルファ・ノード・フィールド
61は、このトップ・ノードに関連する入力WMEの識
別に適したRETEまたは他のトップ情報のクラスの識
別を記憶する。PP0Mフィールド62は、アルファ・
ノードに関連する固有のプログラム部分を指すアドレス
・ポインタを記憶する(このフィールドは空白でもよい
)。DVECフィールド63は、すべての直接後続ノー
ドを指す1 tailのポインタで、ある(しかし通常
、アルファ・ノードはアルファ配布ノードを含むこさが
ある)。PTESTフィールド64は、実施すべきテス
ト用のポインタを記憶する(通常トップ・ノードではテ
ストは実施されない)。ベータ・ノード・データ構造6
El (RETE 10のベータ・ノード25A以下、
ならびにアルファ配布ノード24A以下)は、データ構
造をベータ・ノードまたはアルファ・ノードとして識別
するタイプ・フィールド67を含む。PPGMRフィー
ルド68及びPPGMLフィールド69は、それぞれR
H8及びLH8項目または入力を用いて実行すべきプロ
グラミングを指す。フィールドPRP70及びPRP7
1は、それぞれ右及び左先行ノードを指すアドレス・ポ
インタを記憶する。右または左先行ノードがない場合、
当該のフィールドは空白(NILと称する)である。P
RPフィールド70がNILのときは、PPGMRフィ
ールド68もNILである。フィールド69と71につ
いても同じことが言える。PRSフィールド72は、右
後続ノードがある場合、そのすべてを識別するデータ構
造を指すポインタを含む。右後続ノードがない場合は、
このフィールドはNILである。PR8Sフィールド7
3は、そのノードに関連するすべての非−時シナプス・
ノードを識別するデータ構造を指すポインタを含む。こ
の場合、そのノードは要求時ドレイン・ノードの右先行
ノードであるという関連がある。PMEMフィールド7
4は、今説明しているベータまたはアルファ配布ノード
の関連する結果記憶域を指すアドレス・ポインタを記憶
する。VARフィールド75は、このノードに関連し、
このノードを走査するときRETEプログラムによって
実行される、パターン突合せテストを表すデータ構造を
t旨すアドレス・ポインタを含む。PLSフィールド7
6は、次の1組の左直接後続ノードを指すアドレス・ポ
インタを記憶する。PR872またはPLS7E!でい
ずれかで識別された後続ノードが多数存在することがあ
る。PLSSフィールド77は、このノードに関連する
すべての非−時シナプス・ノードを識別するデータ構造
を指すアドレス・ポインタを含む。この場合、そのノー
ドは要求時ドレイン・ノードの左先行ノードであるとい
う関連がある。66のPR3S及びPLSSノードを除
き、これらの構造は周知のRETEアルゴリズムで使用
される一般的なものである。アルファ・ノードは記憶域
または結果記憶ノードではなく、アルファ配布ノード、
ベータ結合ノード及びボトム・ノードは記憶域または結
果記憶ノードであり、そしてシナプス・ノードは、ドレ
イン・ノードまたはソース・ノードとして指定される他
のノードを指すアドレスのみを提供することを想起され
たい。
ータ構造をRETEアルファ・ノードまたはトップ・ノ
ードとして識別するタイプ・フィールド60を含む。ア
ルファ・ノードのPPREDフィールド61は、その唯
一の直接先行ノードを指すアドレス・ポインタを記憶し
、一方トツブまたは入力アルファ・ノード・フィールド
61は、このトップ・ノードに関連する入力WMEの識
別に適したRETEまたは他のトップ情報のクラスの識
別を記憶する。PP0Mフィールド62は、アルファ・
ノードに関連する固有のプログラム部分を指すアドレス
・ポインタを記憶する(このフィールドは空白でもよい
)。DVECフィールド63は、すべての直接後続ノー
ドを指す1 tailのポインタで、ある(しかし通常
、アルファ・ノードはアルファ配布ノードを含むこさが
ある)。PTESTフィールド64は、実施すべきテス
ト用のポインタを記憶する(通常トップ・ノードではテ
ストは実施されない)。ベータ・ノード・データ構造6
El (RETE 10のベータ・ノード25A以下、
ならびにアルファ配布ノード24A以下)は、データ構
造をベータ・ノードまたはアルファ・ノードとして識別
するタイプ・フィールド67を含む。PPGMRフィー
ルド68及びPPGMLフィールド69は、それぞれR
H8及びLH8項目または入力を用いて実行すべきプロ
グラミングを指す。フィールドPRP70及びPRP7
1は、それぞれ右及び左先行ノードを指すアドレス・ポ
インタを記憶する。右または左先行ノードがない場合、
当該のフィールドは空白(NILと称する)である。P
RPフィールド70がNILのときは、PPGMRフィ
ールド68もNILである。フィールド69と71につ
いても同じことが言える。PRSフィールド72は、右
後続ノードがある場合、そのすべてを識別するデータ構
造を指すポインタを含む。右後続ノードがない場合は、
このフィールドはNILである。PR8Sフィールド7
3は、そのノードに関連するすべての非−時シナプス・
ノードを識別するデータ構造を指すポインタを含む。こ
の場合、そのノードは要求時ドレイン・ノードの右先行
ノードであるという関連がある。PMEMフィールド7
4は、今説明しているベータまたはアルファ配布ノード
の関連する結果記憶域を指すアドレス・ポインタを記憶
する。VARフィールド75は、このノードに関連し、
このノードを走査するときRETEプログラムによって
実行される、パターン突合せテストを表すデータ構造を
t旨すアドレス・ポインタを含む。PLSフィールド7
6は、次の1組の左直接後続ノードを指すアドレス・ポ
インタを記憶する。PR872またはPLS7E!でい
ずれかで識別された後続ノードが多数存在することがあ
る。PLSSフィールド77は、このノードに関連する
すべての非−時シナプス・ノードを識別するデータ構造
を指すアドレス・ポインタを含む。この場合、そのノー
ドは要求時ドレイン・ノードの左先行ノードであるとい
う関連がある。66のPR3S及びPLSSノードを除
き、これらの構造は周知のRETEアルゴリズムで使用
される一般的なものである。アルファ・ノードは記憶域
または結果記憶ノードではなく、アルファ配布ノード、
ベータ結合ノード及びボトム・ノードは記憶域または結
果記憶ノードであり、そしてシナプス・ノードは、ドレ
イン・ノードまたはソース・ノードとして指定される他
のノードを指すアドレスのみを提供することを想起され
たい。
第4図及び第5図は、規則をコンパイルしてRETEに
入れることに関して使用される既知のRETE併合機能
を示す。第4図は4つのコンパイルされた規則w1x1
y、zを、それぞれボトム・ノード90−93として示
す。このようなボトム・ノードは、プロダクション・ノ
ードでよい。ノード94.9B−98,100−102
は、タイプA1B、C,Dのアルファ配布ノードであり
、これらはパターン・テストに合格したWMEを記憶す
る。この場合AのすべてのWMEは同一のアルファ・テ
ストに合格し、BのすべてのWMEは同一であるが別の
アルファ・テストに合格し、以下同様である。ベータ結
合ノード95.99.103は、規則Xはベータ結合ノ
ードをもたない当該の規則のベータ部を構成し、アルフ
ァ・ノードは話を簡単にするために省略しである。規則
W、X。
入れることに関して使用される既知のRETE併合機能
を示す。第4図は4つのコンパイルされた規則w1x1
y、zを、それぞれボトム・ノード90−93として示
す。このようなボトム・ノードは、プロダクション・ノ
ードでよい。ノード94.9B−98,100−102
は、タイプA1B、C,Dのアルファ配布ノードであり
、これらはパターン・テストに合格したWMEを記憶す
る。この場合AのすべてのWMEは同一のアルファ・テ
ストに合格し、BのすべてのWMEは同一であるが別の
アルファ・テストに合格し、以下同様である。ベータ結
合ノード95.99.103は、規則Xはベータ結合ノ
ードをもたない当該の規則のベータ部を構成し、アルフ
ァ・ノードは話を簡単にするために省略しである。規則
W、X。
YlZを表す個別のミニRETEから併合されたRET
Eを作成するため、すべての同一ノードが1つの論理削
減ステップとして組み合わされる。
Eを作成するため、すべての同一ノードが1つの論理削
減ステップとして組み合わされる。
したがって2つのBノード96と97は、組み合わされ
て第5図のノード96になり、後続ノード95と99は
このとき共通の先行ノード896(第5図のみ)を有す
る。同様に第4図の3つのCノード98.100.10
1は、組み合わされて、3つの後続ノード91.99.
103を持つ単一のCノード100(第5図のみ)にな
る。ノードA94及びD102はそのままに保たれる。
て第5図のノード96になり、後続ノード95と99は
このとき共通の先行ノード896(第5図のみ)を有す
る。同様に第4図の3つのCノード98.100.10
1は、組み合わされて、3つの後続ノード91.99.
103を持つ単一のCノード100(第5図のみ)にな
る。ノードA94及びD102はそのままに保たれる。
第5図は、第4図に示した規則の併合されたRETEを
表す。第5図に示す併合されたRETEは、周知のよう
に、トップ・ルート・ノードからのトークンをブツシュ
することによって更新することができる。LH8入力は
、第4図及び第5図では、記号の左側から入る矢印で表
され、RH8入力は、記号の右側から入る矢印で表され
ている。トップ入力は、RETE 10のトップ・ノー
ド21A以下である(第1図)。
表す。第5図に示す併合されたRETEは、周知のよう
に、トップ・ルート・ノードからのトークンをブツシュ
することによって更新することができる。LH8入力は
、第4図及び第5図では、記号の左側から入る矢印で表
され、RH8入力は、記号の右側から入る矢印で表され
ている。トップ入力は、RETE 10のトップ・ノー
ド21A以下である(第1図)。
本発明によれば、追加の規則を既存RETEに接合する
ことができ、接合部分はシナプス・ノード・ポインタを
使って更新することができる。このようなシナプス・ノ
ードを修正されたRETEと共に使ってミニRETEの
ソースとは関係なく併合によって作成された延期RET
E部分を更新する(修正されたRETEはミニRETE
を既存のRETEに接合または接続して作成されている
)。
ことができ、接合部分はシナプス・ノード・ポインタを
使って更新することができる。このようなシナプス・ノ
ードを修正されたRETEと共に使ってミニRETEの
ソースとは関係なく併合によって作成された延期RET
E部分を更新する(修正されたRETEはミニRETE
を既存のRETEに接合または接続して作成されている
)。
ここに例示した実施例では、ミニRETEは2つの方式
のうちの1つで併合させることができる。
のうちの1つで併合させることができる。
新しい規則を表すミニRETEでは、併合論理がミニR
ETEの未併合の付加された部分を「プライミングした
」後、WMEが作成される前に付加部分が存在していた
かのように、続いて起こるWMEの変更が(従来技術の
RETEアルゴリズムを利用して)付加部分に正確に影
響を及ぼすように併合が行なわれる。従来技術は、付加
された未併合部分が既存のWMEによって「ブライミン
グされる」ことができるという、ノードの追加によるこ
の上うなRETEとパターン突合せネットワークの動的
修正を、提供していない。
ETEの未併合の付加された部分を「プライミングした
」後、WMEが作成される前に付加部分が存在していた
かのように、続いて起こるWMEの変更が(従来技術の
RETEアルゴリズムを利用して)付加部分に正確に影
響を及ぼすように併合が行なわれる。従来技術は、付加
された未併合部分が既存のWMEによって「ブライミン
グされる」ことができるという、ノードの追加によるこ
の上うなRETEとパターン突合せネットワークの動的
修正を、提供していない。
要求時パターン突合せ要求を表すミニRETEは、上述
の方法によるようには永久的に接続されていない。とい
うのは、WMEが変更されるときにパターンの未併合部
分を連続的に更新するのではなく、要求に応じてのみそ
のパターン突合せ結果を計算することが望ましいためで
ある。この種の併合プロセスの後、(RETEの延期部
分を構成する)未併合の追加部分は、WMEデータ変更
の際に発生する通常のRETEノード更新プロセスに関
与することを妨げられる。シナプス・ノードは延期RE
TE部分のトップ・ノードを指し、これらの追加ノード
の選択的アドレッシングを可能にする。適切なシナプス
・ノードがプログラミング(図示せず)によってアクセ
スされるときのみ、この種のミニRETEの延期部分が
パターン突合せ動作で使用される。シナプス・ノードを
介するこのようなアクセスは、この種の延期ノードのユ
ーザ要求更新と呼ばれる。このようなユーザ要求動作が
発生しないときは、延期RETEノードは、主RETE
の後続ノードとして正常に接続しないことによって絶縁
され、そのような追加の延期部分を更新しないことによ
って、より速いパターン突合せを可能にする。
の方法によるようには永久的に接続されていない。とい
うのは、WMEが変更されるときにパターンの未併合部
分を連続的に更新するのではなく、要求に応じてのみそ
のパターン突合せ結果を計算することが望ましいためで
ある。この種の併合プロセスの後、(RETEの延期部
分を構成する)未併合の追加部分は、WMEデータ変更
の際に発生する通常のRETEノード更新プロセスに関
与することを妨げられる。シナプス・ノードは延期RE
TE部分のトップ・ノードを指し、これらの追加ノード
の選択的アドレッシングを可能にする。適切なシナプス
・ノードがプログラミング(図示せず)によってアクセ
スされるときのみ、この種のミニRETEの延期部分が
パターン突合せ動作で使用される。シナプス・ノードを
介するこのようなアクセスは、この種の延期ノードのユ
ーザ要求更新と呼ばれる。このようなユーザ要求動作が
発生しないときは、延期RETEノードは、主RETE
の後続ノードとして正常に接続しないことによって絶縁
され、そのような追加の延期部分を更新しないことによ
って、より速いパターン突合せを可能にする。
パターンが1回しか使用されない(繰り返さない)要求
時パターンから生じるミニRETEでは、1組のシナプ
ス・ノードを作成するプロセスは、他の場合とまったく
同じである。しかしながら、トップ・レベルの突合せパ
ターンから作成されるミニRETEの併合された部分は
、主RETE内にとどまる必要がない。パターン突合せ
動作が終了すると、他に必要がなければ、併合のいかな
る部分も削除することができる(このような削除は、規
則が削除されるときに行なわれることがある)。
時パターンから生じるミニRETEでは、1組のシナプ
ス・ノードを作成するプロセスは、他の場合とまったく
同じである。しかしながら、トップ・レベルの突合せパ
ターンから作成されるミニRETEの併合された部分は
、主RETE内にとどまる必要がない。パターン突合せ
動作が終了すると、他に必要がなければ、併合のいかな
る部分も削除することができる(このような削除は、規
則が削除されるときに行なわれることがある)。
このようなミニRETEの突合せ出力が得られ、シナプ
ス・ノードを介する接続が除去できる。また、必要な記
憶項目を参照するには、シナプス・ノードのアドレス・
ポインタを持つことで十分である。1回の一時的併合で
ある再使用なしのこの種の要求パターンの実際の用途は
、情報を実際に変更することなしにRETE 10から
情報を得ることである。このようなアクセスは、RET
Eに記憶された、突合せパターンによって識別可能な情
報の情報検索動作である。ノード併合のためのアルファ
及びベータ・ノード互換性要件は広範囲である。ノード
は同じ形式であってはならないのみならず、2つの候補
ノード中で記述または定義されたいかなるテストも同じ
テストを持たなければならない。同形式(アルファ、ベ
ータまたはアルファ配布)の2つのRETE候補ノード
を併合するための一般規則は、それらの当該の先行ノー
ドがすべて併合され、2つの候補ノード自体が併合され
ていることである。2つの入力ベータ・ノードの場合、
先行ノード併合要件がLH8及びRH8入力に拡張され
る。
ス・ノードを介する接続が除去できる。また、必要な記
憶項目を参照するには、シナプス・ノードのアドレス・
ポインタを持つことで十分である。1回の一時的併合で
ある再使用なしのこの種の要求パターンの実際の用途は
、情報を実際に変更することなしにRETE 10から
情報を得ることである。このようなアクセスは、RET
Eに記憶された、突合せパターンによって識別可能な情
報の情報検索動作である。ノード併合のためのアルファ
及びベータ・ノード互換性要件は広範囲である。ノード
は同じ形式であってはならないのみならず、2つの候補
ノード中で記述または定義されたいかなるテストも同じ
テストを持たなければならない。同形式(アルファ、ベ
ータまたはアルファ配布)の2つのRETE候補ノード
を併合するための一般規則は、それらの当該の先行ノー
ドがすべて併合され、2つの候補ノード自体が併合され
ていることである。2つの入力ベータ・ノードの場合、
先行ノード併合要件がLH8及びRH8入力に拡張され
る。
ミニRETEの主RETEとの併合を決定するために最
初に行なわれる反復的走査及び分析では、T(併合テス
ト合格または併合成功)とNIL(併合テスト不合格ま
たは併合不成功)の2つの併合マークのみが、併合テス
トの結果を識別するために使用される。分析されるミニ
RETEは、元のRETEノードと併合されていてもよ
いが、ミニRETEの最終併合ノードでなくてもよい。
初に行なわれる反復的走査及び分析では、T(併合テス
ト合格または併合成功)とNIL(併合テスト不合格ま
たは併合不成功)の2つの併合マークのみが、併合テス
トの結果を識別するために使用される。分析されるミニ
RETEは、元のRETEノードと併合されていてもよ
いが、ミニRETEの最終併合ノードでなくてもよい。
すなわち、一番下のうまく併合されたミニRETEノー
ドでなくてもよい。
ドでなくてもよい。
RETE併合の好ましい実施例では、まずミニRETE
は、重複するデータ構造を除去するために自己併合され
る。この自己併合は、1組の規則からのRETEの元の
コンパイルと同様である。
は、重複するデータ構造を除去するために自己併合され
る。この自己併合は、1組の規則からのRETEの元の
コンパイルと同様である。
第6図及び第7図に、自己併合プロセスを簡略化した形
で示す。第6図に示したミニRETEは、単一の出力ノ
ード、すなわちボトム・ノードP121を含んでいる。
で示す。第6図に示したミニRETEは、単一の出力ノ
ード、すなわちボトム・ノードP121を含んでいる。
ミニRETEのトップ・ノードは、同一の2つのAノー
ド122.124及びノードB123を含む。この図の
一番上のノードは、アルファ配布ノードである。このミ
ニRETEのベータ部は、図示された論理接続を有する
2つのベータ結合ノード125及び126から成る。
ド122.124及びノードB123を含む。この図の
一番上のノードは、アルファ配布ノードである。このミ
ニRETEのベータ部は、図示された論理接続を有する
2つのベータ結合ノード125及び126から成る。
このようなミニRETEは、規則のパターン仕様または
要求時パターン突合せ動作(再現可能または不能)から
構築することができる。このような構築されたミニRE
TEには、第6図に示すようにノードが共用されない。
要求時パターン突合せ動作(再現可能または不能)から
構築することができる。このような構築されたミニRE
TEには、第6図に示すようにノードが共用されない。
このようなミニRETE内の各ノードは、併合されたR
ETE内の多くの直接後続ノードとは違って、1つの後
続ノードしかもたない。自己併合によって重複ノードが
なくなり、RETE併合処理が簡単になる。
ETE内の多くの直接後続ノードとは違って、1つの後
続ノードしかもたない。自己併合によって重複ノードが
なくなり、RETE併合処理が簡単になる。
第7図は、自己併合によって得られる第6図のミニRE
TEの構造を示す。ここに例示した自己併合ではトップ
Aノード124がなくなっている。
TEの構造を示す。ここに例示した自己併合ではトップ
Aノード124がなくなっている。
結合ノード126へのRH8入力は、Aノード124か
ら残っているAノード122へ移される。
ら残っているAノード122へ移される。
このような再接続は、2つのノードのポインタを変える
ことによって行なわれる。結合ノード126では、その
PRPフィールド70(第3図)が、ノードA124で
はなくノードA122を指すように変更される。結合ノ
ード126のアドレスがAノード122のPRS72
(第3図)に加えられ、Aノード124は削除される。
ことによって行なわれる。結合ノード126では、その
PRPフィールド70(第3図)が、ノードA124で
はなくノードA122を指すように変更される。結合ノ
ード126のアドレスがAノード122のPRS72
(第3図)に加えられ、Aノード124は削除される。
この動作で、このミニRETEの簡単な自己併合が完成
する。
する。
実際の実施例では、ミニRETEはもっと複雑な構造を
とることを理解されたい。自己併合は周知のパターン突
合せプロセスである。ミニRETEが入カバターンで更
新されていないので、シナプス・ノードを作る必要はな
い。従来技術による自己併合でもシナプス・ノードは作
成されなかった。
とることを理解されたい。自己併合は周知のパターン突
合せプロセスである。ミニRETEが入カバターンで更
新されていないので、シナプス・ノードを作る必要はな
い。従来技術による自己併合でもシナプス・ノードは作
成されなかった。
第8図及び第9図には、ミニRETEの既存のまたは主
RETEへの併合及び単一アルファ・シナプス・ノード
の作成を簡単な形で示す。主RETEは、RETEのア
ルファ部にあると想定した1人力ノードとして部分的に
示されている。併合されるミニRETEは、永久的に接
合される新しい規則からのものであると想定する。主R
ETEの一番上の併合可能なノードに130は、1つの
人力ノードと、複数の直接後続L1M、Nノード131
−133を有する。Mノード132は、上記のRETE
併合に含まれる出力ノード140を有する。他のノード
L131とN133の後続ノードは話を簡単にするため
に省略する。ノード131と132の間の省略符号は、
追加の直接後続ノードがノードに130に接続されてい
ることを示すものである。主RETEと併合されるミニ
RETEは、主RETEの7−ドに130と併合されて
いるトップ入力ノードに135を有する。ノードに13
5の直接後続メートであるミニRETEノードM136
は、直接後続ノードR137を有する。
RETEへの併合及び単一アルファ・シナプス・ノード
の作成を簡単な形で示す。主RETEは、RETEのア
ルファ部にあると想定した1人力ノードとして部分的に
示されている。併合されるミニRETEは、永久的に接
合される新しい規則からのものであると想定する。主R
ETEの一番上の併合可能なノードに130は、1つの
人力ノードと、複数の直接後続L1M、Nノード131
−133を有する。Mノード132は、上記のRETE
併合に含まれる出力ノード140を有する。他のノード
L131とN133の後続ノードは話を簡単にするため
に省略する。ノード131と132の間の省略符号は、
追加の直接後続ノードがノードに130に接続されてい
ることを示すものである。主RETEと併合されるミニ
RETEは、主RETEの7−ドに130と併合されて
いるトップ入力ノードに135を有する。ノードに13
5の直接後続メートであるミニRETEノードM136
は、直接後続ノードR137を有する。
ミニRETEの図示された3つの7−ド部分135−1
37は、2つのノード135及び136を有し、これら
は主RETEノードに130及びM2B5との併合を示
す。2つのノードに135及びM2B5は併合処理によ
って削除され、一方ミニRETEのノードR137とそ
の後続ノードは、接合されて主RETEの一部となる。
37は、2つのノード135及び136を有し、これら
は主RETEノードに130及びM2B5との併合を示
す。2つのノードに135及びM2B5は併合処理によ
って削除され、一方ミニRETEのノードR137とそ
の後続ノードは、接合されて主RETEの一部となる。
第9図は、ミニRETE 135−137が元の主RE
TEに併合された後の修正された主RETEを示す。第
8図の図との違いは、−容土の併合不能なノードR13
7が主RETEの併合ノードR137に再接続されてい
ることだけである。この場合、ノードM136は最終的
に併合されたノードである。この再接続の結果、ノード
R137と併合ノード132の間に併合リンクが確立さ
れる。
TEに併合された後の修正された主RETEを示す。第
8図の図との違いは、−容土の併合不能なノードR13
7が主RETEの併合ノードR137に再接続されてい
ることだけである。この場合、ノードM136は最終的
に併合されたノードである。この再接続の結果、ノード
R137と併合ノード132の間に併合リンクが確立さ
れる。
その後は、最終併合ノードM136から上向きに到達で
きるトップ・ノードが、後述のようにアルファ・シナプ
ス・ノードとして認識される。併合リンク141は、ノ
ードM132及びR137のポインタの変更によって行
なわれる。この併合には1つの入力アルファ・ノードが
含まれるので、ノードR137のPPREDフィールド
81(第3図)はノードM132を指すように変更され
、ノードR137のアドレスがノードM132のDVE
Cフィールド63(第3図)に加えられる。
きるトップ・ノードが、後述のようにアルファ・シナプ
ス・ノードとして認識される。併合リンク141は、ノ
ードM132及びR137のポインタの変更によって行
なわれる。この併合には1つの入力アルファ・ノードが
含まれるので、ノードR137のPPREDフィールド
81(第3図)はノードM132を指すように変更され
、ノードR137のアドレスがノードM132のDVE
Cフィールド63(第3図)に加えられる。
作成されたアルファ・シナプス・ノードは最終併合ノー
ドM136から上向きに到達可能なトップ・ノートをt
旨tシングル・ポインタであり、このノードをミニRE
TEの一番上のまたはトップ・ノードとして識別する。
ドM136から上向きに到達可能なトップ・ノートをt
旨tシングル・ポインタであり、このノードをミニRE
TEの一番上のまたはトップ・ノードとして識別する。
このとき(ノードR137の後続アルファ配布ノードや
結合ノードなど、図示せず)記憶ノードは、パターン情
報で更新されていないことに留意されたい。第9図の修
正された主RETEの今付加されたばかりの部分の初期
設定を完了するために、後述の適当な更新手順をRET
E併合の完了時に使用する。
結合ノードなど、図示せず)記憶ノードは、パターン情
報で更新されていないことに留意されたい。第9図の修
正された主RETEの今付加されたばかりの部分の初期
設定を完了するために、後述の適当な更新手順をRET
E併合の完了時に使用する。
第10図は、その結果2つのシナプス・ノードが作成さ
れる、ミニRETEの主RETEへの併合を示す。この
図はまた、いつシナプス・ノードを作成すべきかを決定
する際に、併合完了後に接合されたRETEの正確な更
新を維持しながら、シナプス・ノードの数を最少にし、
要求時パターン突合せを制御するための「到達可能性」
原理を示している。第1と第2ノードの間の到達可能性
とは、第1ノードが第2ノードの先行ノードまたは後続
ノードのいずれかであり、すなわちネットワークの確立
された論理的経路をたどることによって論理的に第2ノ
ードに到達することができるという意味である。再びア
ルファ・ノードが示されており、同じ手順と原理がアル
ファ配布ノードとベータ・ノードを併合するのにも適用
される。はるかに大きな主RETEの2つのノード14
7及び151だけが示されている。主RETEのトップ
・ノード8147はRETE入力ノードであり、その直
接後続ノードの1つとしてアルファ・ノードv151を
有する。併合すべきミニRETEは、図では3つのRE
TE入カノード148−150を有する(このミニRE
TEは図では自己併合されていない)。RETE入カノ
ード5148は、どの主RETEノードとも併合されな
い直接後続ノード152Y1及びどの主RETEノード
とも併合されないその直接後続ノードX153を存する
。RETE入カノード148はRETE入カノード51
47と併合され、その結果、併合切断154が生じてR
ETE入カノード5148が7−ドY152から切断さ
れる。ノードY152の後には、ノードY152から、
このとき併合ノードとなったRETE入カノード514
7への併合リンク155が続く。第1アルフア・シナプ
ス・ノード157は、アルファ・ノード148から上方
の到達可能なトップ・ノードをt旨す。
れる、ミニRETEの主RETEへの併合を示す。この
図はまた、いつシナプス・ノードを作成すべきかを決定
する際に、併合完了後に接合されたRETEの正確な更
新を維持しながら、シナプス・ノードの数を最少にし、
要求時パターン突合せを制御するための「到達可能性」
原理を示している。第1と第2ノードの間の到達可能性
とは、第1ノードが第2ノードの先行ノードまたは後続
ノードのいずれかであり、すなわちネットワークの確立
された論理的経路をたどることによって論理的に第2ノ
ードに到達することができるという意味である。再びア
ルファ・ノードが示されており、同じ手順と原理がアル
ファ配布ノードとベータ・ノードを併合するのにも適用
される。はるかに大きな主RETEの2つのノード14
7及び151だけが示されている。主RETEのトップ
・ノード8147はRETE入力ノードであり、その直
接後続ノードの1つとしてアルファ・ノードv151を
有する。併合すべきミニRETEは、図では3つのRE
TE入カノード148−150を有する(このミニRE
TEは図では自己併合されていない)。RETE入カノ
ード5148は、どの主RETEノードとも併合されな
い直接後続ノード152Y1及びどの主RETEノード
とも併合されないその直接後続ノードX153を存する
。RETE入カノード148はRETE入カノード51
47と併合され、その結果、併合切断154が生じてR
ETE入カノード5148が7−ドY152から切断さ
れる。ノードY152の後には、ノードY152から、
このとき併合ノードとなったRETE入カノード514
7への併合リンク155が続く。第1アルフア・シナプ
ス・ノード157は、アルファ・ノード148から上方
の到達可能なトップ・ノードをt旨す。
ミニRETEノード5149及びY159は、ノード5
147及びY152と併合される。この併合によって併
合切断161が生じて、ノードG160のPPRED6
1が削除され、併合リンク162が加えられる(ノード
GのPPRED61がノードY152を指すように変更
され、DvEC63にG160が加えられる)。この併
合リンクは、ノードG160 (このノードはどの主R
ETEノードとも併合されない)をノードY152に論
理的に接続する。
147及びY152と併合される。この併合によって併
合切断161が生じて、ノードG160のPPRED6
1が削除され、併合リンク162が加えられる(ノード
GのPPRED61がノードY152を指すように変更
され、DvEC63にG160が加えられる)。この併
合リンクは、ノードG160 (このノードはどの主R
ETEノードとも併合されない)をノードY152に論
理的に接続する。
ノードSのためのアルファ・シナプス・ノードが(ノー
ド5157が併合されたときに)すでに作成されており
、そのアルファ・シナプス・ノードのトップ・ノード(
ノード5157)からブツシュされたトークンが両アル
ファ・セグメントY152−X153及びY152−G
160を初期設定するので、ノード5149のためのア
ルファ・シナプス・ノードは実際は複製であり、したが
ってこの併合のためのアルファーシナプス・ノードの集
合に加えられることはない。
ド5157が併合されたときに)すでに作成されており
、そのアルファ・シナプス・ノードのトップ・ノード(
ノード5157)からブツシュされたトークンが両アル
ファ・セグメントY152−X153及びY152−G
160を初期設定するので、ノード5149のためのア
ルファ・シナプス・ノードは実際は複製であり、したが
ってこの併合のためのアルファーシナプス・ノードの集
合に加えられることはない。
言い換えれば、シナプス・ノード157からノードに到
達可能なため、削除されたノード5149及びY159
のためのシナプス・ノードは作成されない。到達可能性
の原理は、あるRETEから別のRETEへの接合ノー
ドが現シナプス・ノードの1つから到達可能である場合
、前のシナプス・ノードの活動化が接合されたRETE
で更新される必要のあるすべての接合ノードに到達する
ので、追加のシナプス・ノードは作成されないというも
のである。破線で示したボックス163は、シナプス・
ノード157からボックス163内のすべてのノードに
到達可能なことを示している。ノードG180への後続
ノードは示されていないが、記憶ノード及び非記憶ノー
ドを含むことができ、ちょうどノードX153の後続ノ
ードがボトム・ノード(図示せず)で終わるのと同じよ
うに、異なる複数のボトム・ノード(図示せず)で終わ
ることができる。RETE 10中で経路を分岐させる
ことによって、単一のボトム・ノードが、ノードX15
3及びG160からパターン突合せ結果を受は取ること
ができる。第11図は、この点に関する本発明のある併
合制御を示す。
達可能なため、削除されたノード5149及びY159
のためのシナプス・ノードは作成されない。到達可能性
の原理は、あるRETEから別のRETEへの接合ノー
ドが現シナプス・ノードの1つから到達可能である場合
、前のシナプス・ノードの活動化が接合されたRETE
で更新される必要のあるすべての接合ノードに到達する
ので、追加のシナプス・ノードは作成されないというも
のである。破線で示したボックス163は、シナプス・
ノード157からボックス163内のすべてのノードに
到達可能なことを示している。ノードG180への後続
ノードは示されていないが、記憶ノード及び非記憶ノー
ドを含むことができ、ちょうどノードX153の後続ノ
ードがボトム・ノード(図示せず)で終わるのと同じよ
うに、異なる複数のボトム・ノード(図示せず)で終わ
ることができる。RETE 10中で経路を分岐させる
ことによって、単一のボトム・ノードが、ノードX15
3及びG160からパターン突合せ結果を受は取ること
ができる。第11図は、この点に関する本発明のある併
合制御を示す。
破線で示したボックス168で示すように、第1の併合
不能ノードW165及びその後続ノードニ到達してそれ
らを識別するために、ノードw165が主RETEに接
合された後に、第2のアルファ・シナプス・ノード16
9が作成される。ノードW165は、この併合で第2の
接合されたRETEとなるミニRETEの後続ノード・
リストの上部ノードである。トップ・ノードまたはRE
TE人カノード150は、トップ・ノードまたはRET
E入力147ノードに併合されて、併合ノード147及
びノードW165から併合切断166及び併合リンク1
63を作成する。シナプス・ノード157からノードW
165への論理経路は存在せず、したがって、到達可能
性の原理から新しいシナプス・ノード169が必要とな
る。アルファ・シナプス・ノード169は、主RETE
の一部分となる接合されたRETEのトップ・ノードで
あるノードW165のみを指す。上述のRETEの接合
及びアルファ・シナプス・ノードの作成により、パター
ン突合せ結果の重複や欠落が防止される。
不能ノードW165及びその後続ノードニ到達してそれ
らを識別するために、ノードw165が主RETEに接
合された後に、第2のアルファ・シナプス・ノード16
9が作成される。ノードW165は、この併合で第2の
接合されたRETEとなるミニRETEの後続ノード・
リストの上部ノードである。トップ・ノードまたはRE
TE人カノード150は、トップ・ノードまたはRET
E入力147ノードに併合されて、併合ノード147及
びノードW165から併合切断166及び併合リンク1
63を作成する。シナプス・ノード157からノードW
165への論理経路は存在せず、したがって、到達可能
性の原理から新しいシナプス・ノード169が必要とな
る。アルファ・シナプス・ノード169は、主RETE
の一部分となる接合されたRETEのトップ・ノードで
あるノードW165のみを指す。上述のRETEの接合
及びアルファ・シナプス・ノードの作成により、パター
ン突合せ結果の重複や欠落が防止される。
ノード5149及びY159のための第2シナプス・ノ
ードが作成された場合、追加シナプス・ノードが活動化
されると、トークンが2回更新、作成され、併合りンク
161を介して送出され、その結果、パターン突合せが
重複される。到達可能性の原理を使用すると、この望ま
ない重複とその結果としての望ましくないパターン突合
せ結果が防止される。図に示した実施例では、各併合プ
ロセスはそれ自体のシナプス・ノードの集合を作成する
。つまり、到達可能性の原理が各併合に他の併合とは無
関係に適用される。アルファ・シナプス・ノードの場合
について説明した到達可能性の原理は、ベータ・シナプ
ス・ノードの作成にも例外なく同様に適用できる。
ードが作成された場合、追加シナプス・ノードが活動化
されると、トークンが2回更新、作成され、併合りンク
161を介して送出され、その結果、パターン突合せが
重複される。到達可能性の原理を使用すると、この望ま
ない重複とその結果としての望ましくないパターン突合
せ結果が防止される。図に示した実施例では、各併合プ
ロセスはそれ自体のシナプス・ノードの集合を作成する
。つまり、到達可能性の原理が各併合に他の併合とは無
関係に適用される。アルファ・シナプス・ノードの場合
について説明した到達可能性の原理は、ベータ・シナプ
ス・ノードの作成にも例外なく同様に適用できる。
つまり、ドレイン・ノード候補(主RETEノードと併
合できず、最終併合可能ノードの後続ノードである、ミ
ニRETEのベータ部にあるミニRETEノード)が、
現アルファまたはベータ・シナプスで指定されたドレイ
ン・ノードから到達可能である場合、それはドレイン・
ノードとしてベータ・シナプス・ノードのリストに加え
られない。
合できず、最終併合可能ノードの後続ノードである、ミ
ニRETEのベータ部にあるミニRETEノード)が、
現アルファまたはベータ・シナプスで指定されたドレイ
ン・ノードから到達可能である場合、それはドレイン・
ノードとしてベータ・シナプス・ノードのリストに加え
られない。
第11図は、要求時併合に必要なより複雑なRETE併
合を示す。第11図に示す接合のモードは、第10図に
示した規則パターン併合のための接合モードとは異なる
。第10図の新しい主RETEでは、作成された併合リ
ンクは、接合されたRETEのドレイン・ノードから元
の主RETEの併合ノードを指し、またその逆に向う正
方向ポインタ及び逆方向ポインタを含む。この両方向併
合リンキングによって、接合されたRETEが完全に元
のRETEに組み込まれて、接合されたRETEはすべ
てのRETE動作に関与するようになる。すなわち、次
のWMEデータ変更は、接合光の部分を含めて、通常の
方式で修正されたRETEの全体を通してブツシュされ
る。これに対して、第11図は、要求時に生成されたパ
ターン突合せミニRETEを用いた部分併合を示す。第
10図と第11図の主な相違は、接合されたRETEを
主RETEにリンクする際に生じる。第11図に示すR
ETE内でのリンキングは、直接先行併合ノードへのソ
ースまたは上方指示リンクに限られている。つまり接合
された部分への接続はシナプス・ノードを通じて行なわ
れる。これらのシナプス・ノードは、ドレインまたはダ
ウン・リンキングを完成するために、プログラム・ユー
ザの要求時に選択的にアクセスされることができる。
合を示す。第11図に示す接合のモードは、第10図に
示した規則パターン併合のための接合モードとは異なる
。第10図の新しい主RETEでは、作成された併合リ
ンクは、接合されたRETEのドレイン・ノードから元
の主RETEの併合ノードを指し、またその逆に向う正
方向ポインタ及び逆方向ポインタを含む。この両方向併
合リンキングによって、接合されたRETEが完全に元
のRETEに組み込まれて、接合されたRETEはすべ
てのRETE動作に関与するようになる。すなわち、次
のWMEデータ変更は、接合光の部分を含めて、通常の
方式で修正されたRETEの全体を通してブツシュされ
る。これに対して、第11図は、要求時に生成されたパ
ターン突合せミニRETEを用いた部分併合を示す。第
10図と第11図の主な相違は、接合されたRETEを
主RETEにリンクする際に生じる。第11図に示すR
ETE内でのリンキングは、直接先行併合ノードへのソ
ースまたは上方指示リンクに限られている。つまり接合
された部分への接続はシナプス・ノードを通じて行なわ
れる。これらのシナプス・ノードは、ドレインまたはダ
ウン・リンキングを完成するために、プログラム・ユー
ザの要求時に選択的にアクセスされることができる。
後述の更新手順などの適切な更新手順を用いて予期され
ないパターン突合せ結果が防止される。第11図では、
既存の主RETEは、それぞれAlB及びC(図示せず
)をそのトップ・ノードとする、3つのトップ・ノード
またはアルファiL[ノードA175、B178、C1
77、及び出力ノードまたはボトム・ノードP178を
含む。既存の主RETEに併合すべきミニRETEは、
アルファ配布ノードC179、A180、D181及び
出力突合せノードまたはボトム・ノード182を有する
。主RETEの図に示した部分は、図のように接続され
たANDノード184と185を含む。
ないパターン突合せ結果が防止される。第11図では、
既存の主RETEは、それぞれAlB及びC(図示せず
)をそのトップ・ノードとする、3つのトップ・ノード
またはアルファiL[ノードA175、B178、C1
77、及び出力ノードまたはボトム・ノードP178を
含む。既存の主RETEに併合すべきミニRETEは、
アルファ配布ノードC179、A180、D181及び
出力突合せノードまたはボトム・ノード182を有する
。主RETEの図に示した部分は、図のように接続され
たANDノード184と185を含む。
ミニRETEはANDノード186と187を有する。
アルファ配布ノードA180とC179だけは、主RE
TEの図に示した部分のどのノードとも併合される。ノ
ードC179はC177に併合される。併合切断195
及びANDノード186からノードC177への併合リ
ンク196(逆方向ポインタのみ)を参照のこと。ノー
ドA180はまたノードA175と共に主RETEに併
合される。しかしながら、ミニRETEは要求時突合せ
パターンから導かれるため、第10図に関連して説明し
たような完全併合は行なわれない。それが完全併合でな
いため、リンク196は一方向ソースまたはアップ・リ
ンクとなる。ベータ・ノード186は、ノードC177
を指すように変更されたフィールドPLP71と、ノー
ドA175を指すように変更されたフィールドPRP7
0を有する。接合されたRETEの更新中、ベータ・シ
ナプス・ノードにソース・ノードとして記録された2つ
のノード(C177及びA175)は、LHSソース・
ノード及びRHSソース・ノードとして働く。すなわち
、ベータ・シナプス・ノードは、ドレイン・ノード18
6を前述のソース・ノードと関連づける。非再現性要求
時結合では、ノードA175でもノードC177でもポ
インタは変更されない。再現性要求時結合では、一部の
ベータ・シナプス・ノードがノード175及びノード1
76をソース・ノードとして指定することが、ノード1
75及び176のPR8Sフィールド73及びPLSS
フィールドに記録され、適切な論理によって、もはや使
われないRETE部分が削除できるようになる(たとえ
ば、一部のベータ・シナプス・ノードがあるノードをソ
ース・ノードとして使用する限り、このソース・ノード
は削除を妨げられることがある)。ノード181.18
2.186.187からなる接合されたRETEを更新
するため、ベータ・シナプス・ノードは活動化されると
、RETE内に要求時動作を起こさせる。ノード181
.182.186.187の要求時突合せパターンに対
応するミニRETEg分が、このパターンのためのシナ
プス・ノード・リストを用いてアクセスされる。後で同
じ突合せパターンについて要求時突合せ計算が反復され
る場合には、アルファ及びベータ・シナプス・ノードの
計算をキャッシュに記憶して、要求時プログラミングに
よって再使用することもでき、ノードをその都度再計算
することもできる。
TEの図に示した部分のどのノードとも併合される。ノ
ードC179はC177に併合される。併合切断195
及びANDノード186からノードC177への併合リ
ンク196(逆方向ポインタのみ)を参照のこと。ノー
ドA180はまたノードA175と共に主RETEに併
合される。しかしながら、ミニRETEは要求時突合せ
パターンから導かれるため、第10図に関連して説明し
たような完全併合は行なわれない。それが完全併合でな
いため、リンク196は一方向ソースまたはアップ・リ
ンクとなる。ベータ・ノード186は、ノードC177
を指すように変更されたフィールドPLP71と、ノー
ドA175を指すように変更されたフィールドPRP7
0を有する。接合されたRETEの更新中、ベータ・シ
ナプス・ノードにソース・ノードとして記録された2つ
のノード(C177及びA175)は、LHSソース・
ノード及びRHSソース・ノードとして働く。すなわち
、ベータ・シナプス・ノードは、ドレイン・ノード18
6を前述のソース・ノードと関連づける。非再現性要求
時結合では、ノードA175でもノードC177でもポ
インタは変更されない。再現性要求時結合では、一部の
ベータ・シナプス・ノードがノード175及びノード1
76をソース・ノードとして指定することが、ノード1
75及び176のPR8Sフィールド73及びPLSS
フィールドに記録され、適切な論理によって、もはや使
われないRETE部分が削除できるようになる(たとえ
ば、一部のベータ・シナプス・ノードがあるノードをソ
ース・ノードとして使用する限り、このソース・ノード
は削除を妨げられることがある)。ノード181.18
2.186.187からなる接合されたRETEを更新
するため、ベータ・シナプス・ノードは活動化されると
、RETE内に要求時動作を起こさせる。ノード181
.182.186.187の要求時突合せパターンに対
応するミニRETEg分が、このパターンのためのシナ
プス・ノード・リストを用いてアクセスされる。後で同
じ突合せパターンについて要求時突合せ計算が反復され
る場合には、アルファ及びベータ・シナプス・ノードの
計算をキャッシュに記憶して、要求時プログラミングに
よって再使用することもでき、ノードをその都度再計算
することもできる。
第12図と第13図のマシン動作図は、LH8と称する
併合、反復使用される要求時併合、及び反復使用なしの
要求時併合の、3種のパターン突合せネットワーク併合
を可能にするパターン突合せネットワーク併合プロセス
を示す。第12図は、併合動作中に併合が行なわれるか
どうかについてのミニRETE中の各ノードの最初の検
査を示す。
併合、反復使用される要求時併合、及び反復使用なしの
要求時併合の、3種のパターン突合せネットワーク併合
を可能にするパターン突合せネットワーク併合プロセス
を示す。第12図は、併合動作中に併合が行なわれるか
どうかについてのミニRETE中の各ノードの最初の検
査を示す。
この図は、第2図の併合ステップ32を図に示した実施
例で実施されるものとして詳しく示したものである。こ
の説明では、ミニRETEはすでに自己併合されたもの
と想定している。自己併合は当技術分野では周知の用語
で、単に、冗長なノードと結合がミニRETEから除去
されていることを意味する。併合プロセスのステップは
、矢印200で示すように通常通り開始される。まず、
マシン・ステップ201で、検査すべきミニRETEノ
ードが、取り出されてコンピュータの処理記憶部分(図
示せず)に入れられる(取り出されたノードは、検査さ
れる「現」ノードである)。
例で実施されるものとして詳しく示したものである。こ
の説明では、ミニRETEはすでに自己併合されたもの
と想定している。自己併合は当技術分野では周知の用語
で、単に、冗長なノードと結合がミニRETEから除去
されていることを意味する。併合プロセスのステップは
、矢印200で示すように通常通り開始される。まず、
マシン・ステップ201で、検査すべきミニRETEノ
ードが、取り出されてコンピュータの処理記憶部分(図
示せず)に入れられる(取り出されたノードは、検査さ
れる「現」ノードである)。
併合プロセスは、ボトム・ノードからミニRETEを登
行することによって始まる。「登行」という用語は、プ
ログラムが、一番下のノードから始めて次々に論理的に
より高いノード、すなわちミニRETE中の先行ノード
へと7−ドを走査することを意味する。マシン・ステッ
プ201で、(プロダクション・ノードやマツチ・ノー
ドなど)ミニRETEノードのボトム・ノードが取り出
される。ミニRETEの登行はトップ・ノードに達する
まで続く。トップ・ノードに達すると、既存RETEま
たは主RETE内の既存ノードと併合される一番下のミ
ニRETEノードを見つけるため、ミニRETEのトッ
プ・ノードから始まるミニRETEの走査が、下方に向
かって行なわれる。
行することによって始まる。「登行」という用語は、プ
ログラムが、一番下のノードから始めて次々に論理的に
より高いノード、すなわちミニRETE中の先行ノード
へと7−ドを走査することを意味する。マシン・ステッ
プ201で、(プロダクション・ノードやマツチ・ノー
ドなど)ミニRETEノードのボトム・ノードが取り出
される。ミニRETEの登行はトップ・ノードに達する
まで続く。トップ・ノードに達すると、既存RETEま
たは主RETE内の既存ノードと併合される一番下のミ
ニRETEノードを見つけるため、ミニRETEのトッ
プ・ノードから始まるミニRETEの走査が、下方に向
かって行なわれる。
併合テストは、(1)併合テストが必要でなくなるか、
または(2)(マシン・ステップ211及び212で)
ミニRETEのボトム・ノードに出会うまで続く。
または(2)(マシン・ステップ211及び212で)
ミニRETEのボトム・ノードに出会うまで続く。
走査されるミニRETEノードが2入力ノードである場
合、ノードのLH8先行ノードが最初に検査される。マ
シン・ステップ202で、直接LH8先行ノードが存在
するか否かを確かめるために、ノード・タイプ(たとえ
ば、フィールド・タイプ80または67)が検査される
。ベータ・ノードがLH8先行ノードを有する(ステッ
プ202でイエス)場合、マシン・ステップ203で、
PLP71に記憶されたアドレス・ポインタを用いてそ
の先行ノード・データ構造が得られる。1入力ノードの
場合、ステップ204及び205(ステップ205は先
行ノードを取り出す)で、トップ(クラス)・ノードに
出会うまで登行プロセスが続く。この登行の間、後のス
テップ210で登行光のノードを見つけるこ七ができる
ように、登行光のノードが、スタックまたは類似のデー
タ(14造中にブツシュされる。1入力ノードの入力は
RH8入力(先行)と呼ばれることに留意されたい。
合、ノードのLH8先行ノードが最初に検査される。マ
シン・ステップ202で、直接LH8先行ノードが存在
するか否かを確かめるために、ノード・タイプ(たとえ
ば、フィールド・タイプ80または67)が検査される
。ベータ・ノードがLH8先行ノードを有する(ステッ
プ202でイエス)場合、マシン・ステップ203で、
PLP71に記憶されたアドレス・ポインタを用いてそ
の先行ノード・データ構造が得られる。1入力ノードの
場合、ステップ204及び205(ステップ205は先
行ノードを取り出す)で、トップ(クラス)・ノードに
出会うまで登行プロセスが続く。この登行の間、後のス
テップ210で登行光のノードを見つけるこ七ができる
ように、登行光のノードが、スタックまたは類似のデー
タ(14造中にブツシュされる。1入力ノードの入力は
RH8入力(先行)と呼ばれることに留意されたい。
メートがRH8入力のみを有する場合、マシーン・ステ
ップ204で、RH8先行ノードがトップ・ノードであ
るかどうかを調べるためにテストが行なわれる。ノード
がトップ・ノードであるかどうかは、そのタイプ・フィ
ールド(第3図)を読み取ることによって決定される。
ップ204で、RH8先行ノードがトップ・ノードであ
るかどうかを調べるためにテストが行なわれる。ノード
がトップ・ノードであるかどうかは、そのタイプ・フィ
ールド(第3図)を読み取ることによって決定される。
好ましい実施例では、トップ・ノードはアルファ・ノー
ドと同じデータ構造58を有する。タイプ・フィールド
60は入力(クラス・ノードを含む)ノードを指示し、
PPREDフィールド61はアドレス・ポインタの代り
にクラス名または識別を記憶するというのがその違いで
ある。現在ノードがトップ・ノードでない場合、トップ
・ノードに達するまで、ステップ205を用いて登行プ
ロセスが繰り返される。
ドと同じデータ構造58を有する。タイプ・フィールド
60は入力(クラス・ノードを含む)ノードを指示し、
PPREDフィールド61はアドレス・ポインタの代り
にクラス名または識別を記憶するというのがその違いで
ある。現在ノードがトップ・ノードでない場合、トップ
・ノードに達するまで、ステップ205を用いて登行プ
ロセスが繰り返される。
一方、ノードがトップ・ノードである場合は、ステップ
206で、同じクラスの既存の主RETE中のトップ・
ノードを識別するための試みが行なわれる。
206で、同じクラスの既存の主RETE中のトップ・
ノードを識別するための試みが行なわれる。
ノード併合は、RETEノードを比較するための周知の
アルゴリズムを用いて決定される。Tの場合に併合が成
功したことを示すフラグが生成される(そうでない場合
はNIL)。おそらく多くの後続ノードのうちで、その
ノードを通じて現ノードが走査される場合、そのノード
の後続ノードは以前の後続ノード・と呼ばれる。その先
行ノードの併合状態を示すフラグがその以前の後続ノー
ドに渡される。マシン・ステップ206で、主RETE
のトップ・ノード2LA以下が、ミニRETEと併合で
きるかどうか走査される。走査中の一連のノード比較を
累積的に表すマシン・ステップ206で、既存の主RE
TE中で併合可能なトップ・ノードを見つける試みが失
敗した場合、ミニRETEノードとどの主RETEノー
ドの間でも併合は見つからなかったことになる。したが
って、マシン・ステップ207では、ミニRETEトッ
プ・ノードが、第1図のノード41などの新しい入力ノ
ードとして既存のRETEに加えられる。さらに、ノー
ド41を指すアルファ・シナプス・ノードが生成され、
この併合に関するアルファ・シナプス・ノードのリスト
に加えられる。これは、重複シナプス・ノードの生成を
防ぐための前記の到達可能性の制限を受ける。同時に、
併合検査が停止したことを知らせるため、フラグNIL
が、以前の後続ノードに渡される。既存のRETE内で
併合可能なトップ・ノードを見つけるのに成功した場合
、最終併合ノードを見つけるためにさらに併合テストが
必要であることを知らせるフラグTがその以前の後続ノ
ードに渡される。
アルゴリズムを用いて決定される。Tの場合に併合が成
功したことを示すフラグが生成される(そうでない場合
はNIL)。おそらく多くの後続ノードのうちで、その
ノードを通じて現ノードが走査される場合、そのノード
の後続ノードは以前の後続ノード・と呼ばれる。その先
行ノードの併合状態を示すフラグがその以前の後続ノー
ドに渡される。マシン・ステップ206で、主RETE
のトップ・ノード2LA以下が、ミニRETEと併合で
きるかどうか走査される。走査中の一連のノード比較を
累積的に表すマシン・ステップ206で、既存の主RE
TE中で併合可能なトップ・ノードを見つける試みが失
敗した場合、ミニRETEノードとどの主RETEノー
ドの間でも併合は見つからなかったことになる。したが
って、マシン・ステップ207では、ミニRETEトッ
プ・ノードが、第1図のノード41などの新しい入力ノ
ードとして既存のRETEに加えられる。さらに、ノー
ド41を指すアルファ・シナプス・ノードが生成され、
この併合に関するアルファ・シナプス・ノードのリスト
に加えられる。これは、重複シナプス・ノードの生成を
防ぐための前記の到達可能性の制限を受ける。同時に、
併合検査が停止したことを知らせるため、フラグNIL
が、以前の後続ノードに渡される。既存のRETE内で
併合可能なトップ・ノードを見つけるのに成功した場合
、最終併合ノードを見つけるためにさらに併合テストが
必要であることを知らせるフラグTがその以前の後続ノ
ードに渡される。
ノードの併合が可能かどうか調べるための各テストが、
マシン・ステップ210で、現ノードの後続ノードから
開始される。ミニRETEのベータ部を走査する際、ま
ず各ミニRETEノードのLHS入力が分析され、次い
で各ミニRETEノードのRH8入力がマシン・ステッ
プ202及び214と同様に分析される。LH8及びR
H8入力の両方が(第13図のマシン・ステップ231
で)主RETEノードと併合される場合、ステップ21
6で、検査されるミニRETEノードが主RETEと併
合されているかどうかテストされる。
マシン・ステップ210で、現ノードの後続ノードから
開始される。ミニRETEのベータ部を走査する際、ま
ず各ミニRETEノードのLHS入力が分析され、次い
で各ミニRETEノードのRH8入力がマシン・ステッ
プ202及び214と同様に分析される。LH8及びR
H8入力の両方が(第13図のマシン・ステップ231
で)主RETEノードと併合される場合、ステップ21
6で、検査されるミニRETEノードが主RETEと併
合されているかどうかテストされる。
ミニRETEノードが主RETEノードに併合されてい
る場合、現ノードより上に位置するミニRETE内のす
べての先行ノードが適切な主RETEノードと併合され
ることを暗示している。併合されているかどうか検査さ
れるミニRETEノードに対する主RETEまたは既存
RETE候補ノードという用語(ミニRETEのトップ
・ノード以外)は、ミニRETE内の検査されるノード
の対応する直接先行ノードと併合されている、直接先行
ノードの後続ノードである主RETEを意味する。
る場合、現ノードより上に位置するミニRETE内のす
べての先行ノードが適切な主RETEノードと併合され
ることを暗示している。併合されているかどうか検査さ
れるミニRETEノードに対する主RETEまたは既存
RETE候補ノードという用語(ミニRETEのトップ
・ノード以外)は、ミニRETE内の検査されるノード
の対応する直接先行ノードと併合されている、直接先行
ノードの後続ノードである主RETEを意味する。
ステップ214で、検査されるノードの先行ノードであ
るさらに多くのミニRETEノードを、主RETEノー
ドと併合されているかどうか検査すべきかどうかを決定
する。YESの場合、ステップ215を含む論理経路を
たどり、そこで、現在検査されているミニRETEノー
ドより1ステツプ上の(ミニRETEのボトム・ノード
からさらに離れている)ミニRETEノードについてス
テラ7’202−213を繰り返すために、別のノード
が取り出される。今説明した繰返しは、上記の2つの終
了条件の1つが溝足されるまで反復される。
るさらに多くのミニRETEノードを、主RETEノー
ドと併合されているかどうか検査すべきかどうかを決定
する。YESの場合、ステップ215を含む論理経路を
たどり、そこで、現在検査されているミニRETEノー
ドより1ステツプ上の(ミニRETEのボトム・ノード
からさらに離れている)ミニRETEノードについてス
テラ7’202−213を繰り返すために、別のノード
が取り出される。今説明した繰返しは、上記の2つの終
了条件の1つが溝足されるまで反復される。
マシン・ステップ216で、検査されたミニRETEノ
ードが主RETEノード候補ノードと併合されているか
どうかがテストされる。併合アルゴリズムは、あるノー
ドのすべての先行ノードが最初にうまく併合されない限
りそのノードが併合されないようにする。
ードが主RETEノード候補ノードと併合されているか
どうかがテストされる。併合アルゴリズムは、あるノー
ドのすべての先行ノードが最初にうまく併合されない限
りそのノードが併合されないようにする。
併合テストからの併合マークの値が、前に定義したその
以前の後続ノードに伝播される。マシン・ステップ21
7でノード併合が見つからない場合は、ステップ209
で併合マークがNILに設定される。ステップ209に
通じる経路219は便宜上2つの部分に分けて示されて
いる。ステップ217で併合マークがTに等しい場合(
YES条件)、ステップ208以下が繰り返される。
以前の後続ノードに伝播される。マシン・ステップ21
7でノード併合が見つからない場合は、ステップ209
で併合マークがNILに設定される。ステップ209に
通じる経路219は便宜上2つの部分に分けて示されて
いる。ステップ217で併合マークがTに等しい場合(
YES条件)、ステップ208以下が繰り返される。
併合テストからのシナプス・ノードの生成を詳しく示し
たマシン動作図を第13図に示す。第13図はまた、そ
のようなミニRETEノードを既存の主RETEノード
と併合することが可能かどうかをテストするために1人
カノード及び2人カノードを扱い、次いで併合が見つか
ったときはいつでもそれらのノードを併合する際に使用
されるマシン・ステップの詳細も示す。経路216には
、併合と指示された各ステップなど、前記のマシン動作
図の様々な所から入ることが可能である。第12図と第
13図は、マシン・ステップ208.209.244.
248などに、併合テストの結果をTまたはNILのい
ずれかで表した併合マークを示す。併合マークTは、ミ
ニRETE内の主RETEノードとのノード併合が可能
であることを意味し、それがNILであれば併合テスト
の失敗を表す。したがって、併合マークがNILの場合
、ミニRETEのボトム・ノードへの下向きのノード走
査を行なう間に、併合テストはもはや必要でない。
たマシン動作図を第13図に示す。第13図はまた、そ
のようなミニRETEノードを既存の主RETEノード
と併合することが可能かどうかをテストするために1人
カノード及び2人カノードを扱い、次いで併合が見つか
ったときはいつでもそれらのノードを併合する際に使用
されるマシン・ステップの詳細も示す。経路216には
、併合と指示された各ステップなど、前記のマシン動作
図の様々な所から入ることが可能である。第12図と第
13図は、マシン・ステップ208.209.244.
248などに、併合テストの結果をTまたはNILのい
ずれかで表した併合マークを示す。併合マークTは、ミ
ニRETE内の主RETEノードとのノード併合が可能
であることを意味し、それがNILであれば併合テスト
の失敗を表す。したがって、併合マークがNILの場合
、ミニRETEのボトム・ノードへの下向きのノード走
査を行なう間に、併合テストはもはや必要でない。
第13図のマシン・ステップ230で、ミニRETEノ
ードがそのタイプによって1人カノードまたは2人カノ
ードに分類される。ノードが1人カノードである場合、
そのRH8先行ノードが併合マークとしてTを渡すたび
に、ノード併合がテストされる(ステップ238)。そ
うである場合、その現ミニRETEノードが主RETE
ノードと関連してテストされ、それらが併合できるかど
うか検査される。マシン・ステップ240で、併合テス
トが2つのノードが併合可能である(No”と記した出
口に相当する)ことを示した場合には、ミニRETEノ
ードはまだ完全には併合されていない可能性があり、し
たがって併合テストの結果Tを以前の後続ノードに送る
ことによって、さらに併合テストが行なわれる(ステッ
プ243)。
ードがそのタイプによって1人カノードまたは2人カノ
ードに分類される。ノードが1人カノードである場合、
そのRH8先行ノードが併合マークとしてTを渡すたび
に、ノード併合がテストされる(ステップ238)。そ
うである場合、その現ミニRETEノードが主RETE
ノードと関連してテストされ、それらが併合できるかど
うか検査される。マシン・ステップ240で、併合テス
トが2つのノードが併合可能である(No”と記した出
口に相当する)ことを示した場合には、ミニRETEノ
ードはまだ完全には併合されていない可能性があり、し
たがって併合テストの結果Tを以前の後続ノードに送る
ことによって、さらに併合テストが行なわれる(ステッ
プ243)。
この時点で、併合テストに合格したノードのタイプがア
ルファ配布ノードである場合、ミニRETE内の先行ノ
ードからこのノードへの正方向ポインタが正しい突合せ
結果が得られるように削除される。一方、それらのノー
ドが併合不能である(240で”YES″と記した出口
に相当する)場合には、先行ミニRETEノードは、ボ
トム・ノードまたは出力ノードへ向かうミニRETEの
この部分に対するノード鎖中の最後併合可能ノードであ
り、最終併合ミニRETEノードと呼ばれる。この時点
で、予め存在する主RETEノードと、主RETEノー
ドとうまく併合されなかったミニRETHの非共用部分
との間の接続点を記録するためのシナプス・ノードが作
成される。マシン・ステップ241で、先行ノードが関
連する結果メモリ情報を持っているかどうかがテストに
よって決定される。これは、たとえば、主RETE中の
先行ノードがアルファ配布ノードであるときに起こる。
ルファ配布ノードである場合、ミニRETE内の先行ノ
ードからこのノードへの正方向ポインタが正しい突合せ
結果が得られるように削除される。一方、それらのノー
ドが併合不能である(240で”YES″と記した出口
に相当する)場合には、先行ミニRETEノードは、ボ
トム・ノードまたは出力ノードへ向かうミニRETEの
この部分に対するノード鎖中の最後併合可能ノードであ
り、最終併合ミニRETEノードと呼ばれる。この時点
で、予め存在する主RETEノードと、主RETEノー
ドとうまく併合されなかったミニRETHの非共用部分
との間の接続点を記録するためのシナプス・ノードが作
成される。マシン・ステップ241で、先行ノードが関
連する結果メモリ情報を持っているかどうかがテストに
よって決定される。これは、たとえば、主RETE中の
先行ノードがアルファ配布ノードであるときに起こる。
関連する結果メモリを持っていない場合には、ステップ
242で、アルファ・シナプス・ノードが作成される。
242で、アルファ・シナプス・ノードが作成される。
関連する結果メモリを持っている場合には、ベータ・シ
ナプス・ノードが作成される。
ナプス・ノードが作成される。
2人カノードは、マシン・ステップ231でLHS及び
RH8先行ノードの両方が併合マークTを渡す場合にの
み、併合テストを受けることができる。2人カノードの
併合テストは、1人カノードの場合と同じである。1人
カノードでは、テスト中のミニRETEノードが主RE
TEノードと併合可能である場合、併合が見つかる。
RH8先行ノードの両方が併合マークTを渡す場合にの
み、併合テストを受けることができる。2人カノードの
併合テストは、1人カノードの場合と同じである。1人
カノードでは、テスト中のミニRETEノードが主RE
TEノードと併合可能である場合、併合が見つかる。
2人カノードの場合には、ノード併合と同様に別の条件
も満足すべきである。この条件とは、テスト中のノード
とミニRETE内のそのLHS及びRH8先行ノードと
の関係が、主RETE中のそれらに相当するノードと矛
盾しないというものである。マシン・ステップ235で
、このような併合テストが実行される。併合テストが成
功した場合、マシン・ステップ236及び244に示す
ように、最大の共用を実現するために、さらに後続の併
合テストが必要である。一方、併合テストが失敗した場
合、前記のようにRETE併合が起こり、1組のベータ
・シナプス・ノードと共に(必要に応じて)併合リンク
が作成される。ミニRETE中の2人カノードでは、2
つの先行ノードから渡された併合マークがマシン・ステ
ップ232及び243におけるようにT及びNILであ
る場合、Tフラグを渡すミニRETE先行ノードは最終
的に併合可能である。したがって、1組のベータ・シナ
プス・ノードと共に併合リンクもマシン・ステップ23
7で作成される。
も満足すべきである。この条件とは、テスト中のノード
とミニRETE内のそのLHS及びRH8先行ノードと
の関係が、主RETE中のそれらに相当するノードと矛
盾しないというものである。マシン・ステップ235で
、このような併合テストが実行される。併合テストが成
功した場合、マシン・ステップ236及び244に示す
ように、最大の共用を実現するために、さらに後続の併
合テストが必要である。一方、併合テストが失敗した場
合、前記のようにRETE併合が起こり、1組のベータ
・シナプス・ノードと共に(必要に応じて)併合リンク
が作成される。ミニRETE中の2人カノードでは、2
つの先行ノードから渡された併合マークがマシン・ステ
ップ232及び243におけるようにT及びNILであ
る場合、Tフラグを渡すミニRETE先行ノードは最終
的に併合可能である。したがって、1組のベータ・シナ
プス・ノードと共に併合リンクもマシン・ステップ23
7で作成される。
ミニRETEノードが最終併合可能であると確認される
と、前記の併合切断及び併合リンクが作成される。同時
に、シノプス・ノードが作成される可能性がある。しか
しながら、誤った突合せ結果が得られないようにするた
めに、シナプス・ノードを作成する前に、マシン・ステ
ップ237及び242で、いくつかのテスト(図示せず
)が必要である。新しいアルファ・シナプス・ノードは
、それが既存のアルファ・シナプス・ノードの1つと同
じでない限り、作成される。同様に、ミニRETEが既
存のアルファまたはベータ・シナプス・ノードへの後続
ノードである場合、それは主RETEノードに併合され
るが、ベータ・シナプス・ノードは作成されない。そう
でない場合は、併合リンクとシナプス・ノードが作成さ
れる。併合プロセスの目的の1つは、正しい1組のシナ
プス・ノードを得ることであることを想起されたい。
と、前記の併合切断及び併合リンクが作成される。同時
に、シノプス・ノードが作成される可能性がある。しか
しながら、誤った突合せ結果が得られないようにするた
めに、シナプス・ノードを作成する前に、マシン・ステ
ップ237及び242で、いくつかのテスト(図示せず
)が必要である。新しいアルファ・シナプス・ノードは
、それが既存のアルファ・シナプス・ノードの1つと同
じでない限り、作成される。同様に、ミニRETEが既
存のアルファまたはベータ・シナプス・ノードへの後続
ノードである場合、それは主RETEノードに併合され
るが、ベータ・シナプス・ノードは作成されない。そう
でない場合は、併合リンクとシナプス・ノードが作成さ
れる。併合プロセスの目的の1つは、正しい1組のシナ
プス・ノードを得ることであることを想起されたい。
「正しい1組」という用語は、オーバーラツプする後続
ノードも、ミニRETEから追加または接合された後続
ノードも持たない最小数のシナプス・ノードが作成され
ることを意味する。
ノードも、ミニRETEから追加または接合された後続
ノードも持たない最小数のシナプス・ノードが作成され
ることを意味する。
要求主導型パターン突合せの最終段階は、接合されたR
ETEの更新である。規則LH8突合せパターンや要求
時非反復使用パターンの更新とは異なり、突合せ、要求
時突合せ反復使用の更新は、最初の更新を除き、トーク
ン・ブツシュ動作の開始前に、要求時接合RETEの7
−ド中のすべてのメモリをクリアする事前処理を必要と
する。
ETEの更新である。規則LH8突合せパターンや要求
時非反復使用パターンの更新とは異なり、突合せ、要求
時突合せ反復使用の更新は、最初の更新を除き、トーク
ン・ブツシュ動作の開始前に、要求時接合RETEの7
−ド中のすべてのメモリをクリアする事前処理を必要と
する。
(これは1つの実施例にすぎず、他の実施例では、たと
えばシナプス・ノードにトークン変更を蓄積し、それら
の変更を要求時RETEの非共用部分にブツシュするこ
とに留意されたい。)要求時パターンのための接合RE
TEは、その後、セーブされたシナプス・ノードを用い
て更新される。接合されたRETEの更新は、前記の関
連特許出願明細書にさらに詳しく記載されているように
、汎用RETE更新原理を用いて実現することができる
。汎用更新アルゴリズムを適用する際、ベータ・ソース
・ノードからのトークン(またはアルファ・シナプス・
ノードからのWME)の送出順序は重要ではない。
えばシナプス・ノードにトークン変更を蓄積し、それら
の変更を要求時RETEの非共用部分にブツシュするこ
とに留意されたい。)要求時パターンのための接合RE
TEは、その後、セーブされたシナプス・ノードを用い
て更新される。接合されたRETEの更新は、前記の関
連特許出願明細書にさらに詳しく記載されているように
、汎用RETE更新原理を用いて実現することができる
。汎用更新アルゴリズムを適用する際、ベータ・ソース
・ノードからのトークン(またはアルファ・シナプス・
ノードからのWME)の送出順序は重要ではない。
前記の関連特許出願明細書に記載された汎用更新法に代
わる方法として、シナプス・ノードによって表される特
別な場合を利用する代替更新アルゴリズムを使用しても
よい。この最適化された更新アルゴリズムの手順は、従
来の汎用更新アルゴリズムと比べて時間及びスペースの
点でより効率的である。
わる方法として、シナプス・ノードによって表される特
別な場合を利用する代替更新アルゴリズムを使用しても
よい。この最適化された更新アルゴリズムの手順は、従
来の汎用更新アルゴリズムと比べて時間及びスペースの
点でより効率的である。
最適化されたアルゴリズムは、一般の場合に比べて次の
ような制約によって使用可能になる。まず、ソース・ノ
ードは「更新」トークンのみを含み、「最終仕上げ」
トークンを持たない。更新トークンとは、メモリ・ノー
ドによって受は取られたが、まだ受取り側メモリ・ノー
ドの後続ノードにブツシュまたは伝播されていないノー
ドである。
ような制約によって使用可能になる。まず、ソース・ノ
ードは「更新」トークンのみを含み、「最終仕上げ」
トークンを持たない。更新トークンとは、メモリ・ノー
ドによって受は取られたが、まだ受取り側メモリ・ノー
ドの後続ノードにブツシュまたは伝播されていないノー
ドである。
最終仕上げトークンとは、メモリ・ノードによって受は
取られ、少なくとも1つの後続(直接後続ノードでも、
介在する後続ノードを伴う遠隔後続ノードでもよい)メ
モリ・ノードを含む後続ノードにブツシュされたノード
である。次に、実施される操作は追加であり、修正や除
去(削除)ではない。最適化されたアルゴリズムは、2
つの段階、すなわちベータ更新段階とその後のアルファ
更新段階で、延期RETE部分を更新する。
取られ、少なくとも1つの後続(直接後続ノードでも、
介在する後続ノードを伴う遠隔後続ノードでもよい)メ
モリ・ノードを含む後続ノードにブツシュされたノード
である。次に、実施される操作は追加であり、修正や除
去(削除)ではない。最適化されたアルゴリズムは、2
つの段階、すなわちベータ更新段階とその後のアルファ
更新段階で、延期RETE部分を更新する。
ベータ更新では、右ソース・ノードに記憶されたすべて
のトークンがドレイン・ノードに送出されない。すなわ
ち前記の関連特許出願明細書に記載されているように、
「シャドウ」されない。そして、各トークンごとに個別
に行なわれる汎用更新アルゴリズムの最初の2ステツプ
が削除される。
のトークンがドレイン・ノードに送出されない。すなわ
ち前記の関連特許出願明細書に記載されているように、
「シャドウ」されない。そして、各トークンごとに個別
に行なわれる汎用更新アルゴリズムの最初の2ステツプ
が削除される。
接合されたRETEの更新は、トークン送出処理の特定
の順序を用い、ドレイン・ノードのいわゆる「昇順」走
査を使って、汎用更新アルゴリズムの最終ステップを実
行することによって行なわれる。トークン送出順序は、
前記の関連特許出願明細書に詳しく記載されているよう
に、ドレイン・ノード中の到達可能性によって決定され
る。あるドレイン・ノードが別のドレイン・ノードから
下向きで到達可能な場合は、前者のドレイン・ノードが
最初に処理される。ミニRETEの併合中に作成された
ドレイン・ノードの順序は、その昇順と同じである。し
たがって、併合を決定するための処理の副次効果として
、余分の走査なしで、ドレイン・ノードの順序づけが得
られる。昇順の更新では、互いに到達可能なノードのサ
ブセ−/ )中のより低い(ボトムまたは出力ノードに
最も近い)ドレイン・ノードが、より高いノードより先
に処理される。いくつかのドレイン・メートの間に到達
可能性の関係がない場合には、これらのドレイン・ノー
ドの処理順序は任意である。ドレイン・ノードが最適化
された更新アルゴリズムのそのステップで処理されると
き、(LH8入力に)接続されたソース・ノードは、そ
の関連する結果メモリ中にあるすべてのトークンを、A
DDトークンとしてドレイン・ノードに送出する。ベー
タ更新の後、何らかのアルファ・シナプス・ノードが併
合プロセス中に作成された場合、アルファ・シナプス・
ノードによって指されるアルファ・トップ・ノードに対
応するWMEが、アルファ・シナプス・ノードに関連す
るアルファ・トップ・ノードに送られ、それによってそ
のトップ・ノードに接続されたすべての後続ノードに任
意の順序で送られる。
の順序を用い、ドレイン・ノードのいわゆる「昇順」走
査を使って、汎用更新アルゴリズムの最終ステップを実
行することによって行なわれる。トークン送出順序は、
前記の関連特許出願明細書に詳しく記載されているよう
に、ドレイン・ノード中の到達可能性によって決定され
る。あるドレイン・ノードが別のドレイン・ノードから
下向きで到達可能な場合は、前者のドレイン・ノードが
最初に処理される。ミニRETEの併合中に作成された
ドレイン・ノードの順序は、その昇順と同じである。し
たがって、併合を決定するための処理の副次効果として
、余分の走査なしで、ドレイン・ノードの順序づけが得
られる。昇順の更新では、互いに到達可能なノードのサ
ブセ−/ )中のより低い(ボトムまたは出力ノードに
最も近い)ドレイン・ノードが、より高いノードより先
に処理される。いくつかのドレイン・メートの間に到達
可能性の関係がない場合には、これらのドレイン・ノー
ドの処理順序は任意である。ドレイン・ノードが最適化
された更新アルゴリズムのそのステップで処理されると
き、(LH8入力に)接続されたソース・ノードは、そ
の関連する結果メモリ中にあるすべてのトークンを、A
DDトークンとしてドレイン・ノードに送出する。ベー
タ更新の後、何らかのアルファ・シナプス・ノードが併
合プロセス中に作成された場合、アルファ・シナプス・
ノードによって指されるアルファ・トップ・ノードに対
応するWMEが、アルファ・シナプス・ノードに関連す
るアルファ・トップ・ノードに送られ、それによってそ
のトップ・ノードに接続されたすべての後続ノードに任
意の順序で送られる。
各個別ノードでの更新は、従来技術の場合と同様である
。
。
第1図は、本発明によるパターン突合せネットワーク併
合を示す、付属データ構造を伴うRETEの概略図であ
る。 第2図は、第1図に示したネットワークの併合プロセス
で実施されるステップを示す簡略化した流れ図である。 第3図は、第2図に示した併合プロセスと共に使用され
る簡略化した1組の制御データ構造の構成図である。 第4図及び第5図は、従来技術で実施されたパターン突
合せ規則ネットワークのRETEへの併合を示す図であ
る。 第8図及び第7図は、ミニRETEネットワークの自己
併合を示す図である。 第8図及び第9図は、本発明のネットワーク併合切断ス
テップ及びリンク・ステップを示す図である。 第10図は、第1図に示したパターン突合せネットワー
ク用に作成、されたシナプス・ノードの到達可能性特性
を示す図である。 第11図は、第1図に示したRETEのための、RH8
併合プロセスのベータ・シナプス・ツートノ結果と追加
のノード・ポインタを示す図である。 第12図及び第13図は、様々なタイプのRETE併合
を実施するために使用可能なマシン動作を簡略形で示す
マシン動作図である。 10・・・・RETEl 11・・・・作業用記憶域、
16・・・・データ域、18・・・・ミニRETE、2
0・・・・ルート・ノード、21・・・・RETE入カ
ノード、22・・・・アルファ・ノード、24・・・・
アルファ配布ノード、25・・・・ベータ・ノード、2
6・・・・出力ノード。 出願人 インターナショナル・ビジネス・マシーンズ
・コーポレーション 復代理人 弁理士 澤 1) 俊 夫lセ5−5 FI5.7 1セ5−4 fセ5−5
合を示す、付属データ構造を伴うRETEの概略図であ
る。 第2図は、第1図に示したネットワークの併合プロセス
で実施されるステップを示す簡略化した流れ図である。 第3図は、第2図に示した併合プロセスと共に使用され
る簡略化した1組の制御データ構造の構成図である。 第4図及び第5図は、従来技術で実施されたパターン突
合せ規則ネットワークのRETEへの併合を示す図であ
る。 第8図及び第7図は、ミニRETEネットワークの自己
併合を示す図である。 第8図及び第9図は、本発明のネットワーク併合切断ス
テップ及びリンク・ステップを示す図である。 第10図は、第1図に示したパターン突合せネットワー
ク用に作成、されたシナプス・ノードの到達可能性特性
を示す図である。 第11図は、第1図に示したRETEのための、RH8
併合プロセスのベータ・シナプス・ツートノ結果と追加
のノード・ポインタを示す図である。 第12図及び第13図は、様々なタイプのRETE併合
を実施するために使用可能なマシン動作を簡略形で示す
マシン動作図である。 10・・・・RETEl 11・・・・作業用記憶域、
16・・・・データ域、18・・・・ミニRETE、2
0・・・・ルート・ノード、21・・・・RETE入カ
ノード、22・・・・アルファ・ノード、24・・・・
アルファ配布ノード、25・・・・ベータ・ノード、2
6・・・・出力ノード。 出願人 インターナショナル・ビジネス・マシーンズ
・コーポレーション 復代理人 弁理士 澤 1) 俊 夫lセ5−5 FI5.7 1セ5−4 fセ5−5
Claims (1)
- 【特許請求の範囲】 複数のパターン突合せノードからなるパターン突合せネ
ットワークを、ネットワークを通って入力側から出力側
に延びる複数の規則定義論理経路に配列するステップと
、 前記ノードのいくつかを前記論理経路への入力ノードと
して指定し、他のいくつかの前記ノードを前記経路の前
記出力側の出力ノードとして指定して、前記論理経路を
通って前記入力側から論理的により低い出力側に至る、
パターン突合せ動作の論理流れが生じるようにネットワ
ークを配列するステップと、 複数の前記パターン突合せノードから各々なる複数のパ
ターン突合せモジュールを前記パターン突合せネットワ
ークにおいて確立し、かつ論理的に結合し、各々の前記
パターン突合せモジュールが前記パターン突合せネット
ワーク内の他の前記パターン突合せモジュールの前記パ
ターン突合せノードのあらかじめ定められたものとパタ
ーン突合せ情報項目の授受を行ない、当該パターン突合
せモジュール外のパターン突合せノードとパターン突合
せ情報を共有するステップと、 各モジュールの外側の前記ネットワーク内で、ノードの
1つを各モジュールのソース・ノードとして指定するス
テップと、 それぞれ指定されたソース・ノード及び前記のモジュー
ルを指すポインタを作成して維持するステップと、 前記の各ポインタを用いて包括されたモジュールにアク
セスすることを含めて、所定の前記モジュールが所与の
パターン突合せ動作に包括され、またはそこから除外さ
れるように、パターン突合せネットワークを動作させる
ステップとをコンピュータで実行することを特徴とする
パターン突合せネットワーク操作方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/272,097 US4956791A (en) | 1988-11-14 | 1988-11-14 | Merging pattern-matching networks including retes |
| US272097 | 1988-11-14 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH02224127A true JPH02224127A (ja) | 1990-09-06 |
| JPH0778739B2 JPH0778739B2 (ja) | 1995-08-23 |
Family
ID=23038395
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1294076A Expired - Lifetime JPH0778739B2 (ja) | 1988-11-14 | 1989-11-14 | パターン突合せネットワークの併合方法 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US4956791A (ja) |
| EP (1) | EP0369700A3 (ja) |
| JP (1) | JPH0778739B2 (ja) |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2536567B2 (ja) * | 1987-12-17 | 1996-09-18 | 株式会社日立製作所 | 双方向推論の高速処理方式 |
| WO1990007151A1 (fr) * | 1988-12-14 | 1990-06-28 | Sony Corporation | Systeme de gestion de donnees |
| US5241652A (en) * | 1989-06-08 | 1993-08-31 | Digital Equipment Corporation | System for performing rule partitioning in a rete network |
| JPH03286337A (ja) * | 1990-04-03 | 1991-12-17 | Hitachi Ltd | 条件判定の処理構造最適化による推論の高速化方式 |
| US5159662A (en) * | 1990-04-27 | 1992-10-27 | Ibm Corporation | System and method for building a computer-based rete pattern matching network |
| US5179633A (en) * | 1990-06-29 | 1993-01-12 | Digital Equipment Corporation | Method and apparatus for efficiently implementing read-type procedural attachments in rete-like pattern matching environment |
| JP3043439B2 (ja) * | 1990-12-28 | 2000-05-22 | 富士通株式会社 | データ処理装置におけるネットワーク記憶方法 |
| JPH06131312A (ja) * | 1992-01-23 | 1994-05-13 | Hitachi Ltd | 並行処理方法およびシステム |
| US5265193A (en) * | 1992-04-30 | 1993-11-23 | International Business Machines Corporation | Efficiently organizing objects in a rete pattern matching network |
| US6851105B1 (en) * | 1999-10-05 | 2005-02-01 | Borland Software Corporation | Method and system for generating, applying, and defining a pattern |
| US8307339B2 (en) * | 2004-03-15 | 2012-11-06 | Ramco Systems Limited | Software reuse in model based software systems |
| US8589454B2 (en) * | 2011-01-17 | 2013-11-19 | International Business Machines Corporation | Computer data file merging based on file metadata |
| US11379744B1 (en) * | 2017-07-13 | 2022-07-05 | NortonLifeLock Inc. | Optimizing networks of decision nodes |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| FR2570182B1 (fr) * | 1984-09-13 | 1988-04-15 | Framatome Sa | Methode de validation de la valeur d'un parametre |
| US4837735A (en) * | 1987-06-09 | 1989-06-06 | Martin Marietta Energy Systems, Inc. | Parallel machine architecture for production rule systems |
| US4849905A (en) * | 1987-10-28 | 1989-07-18 | International Business Machines Corporation | Method for optimized RETE pattern matching in pattern-directed, rule-based artificial intelligence production systems |
-
1988
- 1988-11-14 US US07/272,097 patent/US4956791A/en not_active Expired - Fee Related
-
1989
- 1989-11-10 EP EP19890311674 patent/EP0369700A3/en not_active Withdrawn
- 1989-11-14 JP JP1294076A patent/JPH0778739B2/ja not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| EP0369700A3 (en) | 1992-09-02 |
| JPH0778739B2 (ja) | 1995-08-23 |
| EP0369700A2 (en) | 1990-05-23 |
| US4956791A (en) | 1990-09-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Van der Aalst | Inheritance of interorganizational workflows: How to agree to disagree without loosing control? | |
| JPH02224127A (ja) | パターン突合せネットワークの併合方法 | |
| Petcu et al. | ODPOP: An algorithm for open/distributed constraint optimization | |
| US8346697B2 (en) | Direct construction of finite state machines | |
| JP3149332B2 (ja) | データ通信ネットワークおよびそのノードの管理方法 | |
| US5210837A (en) | Methods and apparatus for transforming machine language program control into high-level language constructs by manipulating graphical program representations | |
| Golden et al. | Representing sensing actions: The middle ground revisited | |
| EP0314650B1 (en) | Method for optimized rete pattern matching in pattern-directed, rule-based artificial intelligence production systems | |
| Van Hentenryck et al. | Incremental search in constraint logic programming | |
| US4951225A (en) | Updating pattern-matching networks | |
| US5263127A (en) | Method for fast rule execution of expert systems | |
| Segovia-Aguas et al. | Hierarchical finite state controllers for generalized planning | |
| US5179632A (en) | Fast method for a bidirectional inference | |
| US11182137B2 (en) | Techniques for approximate neighbor selection in tree models for computing co-occurrence | |
| Vitolins et al. | Semantics of UML 2.0 activity diagram for business modeling by means of virtual machine | |
| Jayawant et al. | Minimum spanning trees | |
| Bagai et al. | Automatic theorem generation in plane geometry | |
| CN117971424B (zh) | 一种依赖关系感知的软件仓库编译调度方法、系统和介质 | |
| Dennis et al. | Using a generalisation critic to find bisimulations for coinductive proofs | |
| Stabler | System description languages | |
| Quesada | Solving constrained graph problems using reachability constraints based on transitive closure and dominators | |
| Rittgen | From Process Model to Electronic Business Process. | |
| Folkegård et al. | Dynamic code generation for realtime shaders | |
| Dubravin et al. | Formal and conceptual definitions of the hybrid model of distributed computings in networks | |
| Léveillé | Generating Plans for Belief-Desire-Intention (BDI) Agents Using Alternating-Time Temporal Logic (ATL) |