JPH0778739B2 - パターン突合せネットワークの併合方法 - Google Patents

パターン突合せネットワークの併合方法

Info

Publication number
JPH0778739B2
JPH0778739B2 JP1294076A JP29407689A JPH0778739B2 JP H0778739 B2 JPH0778739 B2 JP H0778739B2 JP 1294076 A JP1294076 A JP 1294076A JP 29407689 A JP29407689 A JP 29407689A JP H0778739 B2 JPH0778739 B2 JP H0778739B2
Authority
JP
Japan
Prior art keywords
node
rete
nodes
mini
synapse
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
JP1294076A
Other languages
English (en)
Other versions
JPH02224127A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH02224127A publication Critical patent/JPH02224127A/ja
Publication of JPH0778739B2 publication Critical patent/JPH0778739B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06N5/047Pattern 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)

Description

【発明の詳細な説明】 A.産業上の利用分野 本発明はパターン突合せネットワークに関し、詳細には
そのようなネットワークと、モジュール式に変更可能な
ネットワークを含む合成ネットワークとを向き合わせる
方法、及びパターン突合せネットワークの所定の部分を
要求に応じて更新する方法に関するものである。
B.従来の技術 フォージー(Forgy)によって表示されたRETEなどの、
いわゆる人工知能またはパターン突合せプログラミング
が、最近の数年間に開発され使用されてきた。RETEアル
ゴリズムは、1組また数組の突合せ規則を使用する、い
くるかのパターン突合せ手法の1つである。これらのプ
ログラムは周知のものである。これについては、たとえ
ばARTIFICIAL INTELLIGENCE、Vo1.19(1982年)、pp.17
−37に所載のチャールズ・L・フォージーの論文(RET
E:多数パターン/多数オブジェクト・パターン突合せ問
題用の高速アルゴリズム(RETE:A Fast Algorithm for
the Many Pattern/Many Object Pattern Match Poble
m)」の記載を参照されたい。当技術分野における他の
公知例は、マーシャル・ショア(Marshall Schor)の他
の論文「RETEパターン突合せにおける進歩(Advances i
n RETE Pattern Matching)」、PROCEEDINGS of 1986 A
MERICAN ASSOCIATION for ARTIFICIAL INTELLIGENCE CO
NFERENCE、1986年、pp.226−232に出ている。RETEネッ
トワーク及び知能プログラミングについての周知の情報
は、当業者が本発明を理解するために必要なもの以外は
ここでは繰り返さない。フォージーが述べているよう
に、RETEとして定義される、より大きくより複雑な性能
と機能性を高めるネットワークが重要性を増してきてい
る。性能を高めるのみならずパターン突合せネットワー
クの機能性をも高めることが望まれる。
周知のように、このようなパターン突合せプログラミン
グは多数のデータ構造で実行される。作業用記憶素子
(WME)は入力データ構造である。新しいWME、変更され
たWME、または除去されたWMEはどれも「トークン」(ま
たはデルタ)をもたらす。トークンとはある関連データ
操作と共に1つまたは複数WMEからなるデータ構造であ
る。RETEの現在の情報内容はWMEの追加、変更または削
除を反映しないので、ネットワークを通じてトークンを
伝搬させることによって、入力の現状情報能を反映する
ように、RETEを更新する必要がある。トークンがRETEを
通じてプッシュ(処理)され、RETE内でパターンと突き
合わされる各回がパターン突合せ動作となる。
フォージーによって教示されるように、RETEはアルファ
部とベータ部からなる。変更トークンRETEを通じて処理
されたとき、新しいWMEまたは変更されたWMEの情報内容
は、または削除されたWMEによる情報変更が、「ルート
・ノード」を経てネットワークに使用可能になった後、
まずアルファ後部を通過する。ルート・ノードはRETEの
入口点であるネットワークのデータ域である。1組の
「トップ」ノードが、ルート・ノードに接続されてい
る。トップ・ノードは次々に後続ノードに接続され、最
終的にはプロダクション(推論)ノードまたはマッチ・
ノードと呼ばれる多数の終端ノードまたはボトム・ノー
ドに達する各ノード・データは、入ってくるトークンに
対する突合せテストを含むことができる。当技術分野で
周知のように、ノードのいくつかはテーブル中に走査す
べき記憶項目をする。これらのノードは「記憶ノード」
と呼ばれる独立のノードとして実施することができ、ま
たテーブルを突合せ動作を表すノードに直接関連づける
こともできる。特定ノード用の関連する記憶テーブル
を、ノードの「結果記憶域」と呼ぶことにする。結果記
憶テーブルは、ベータ・ノード及び後述のアルファ配布
ノードと関連づけられる。
記憶項目用のテーブルは、ネットワーク内のその点まで
の部分を突合せ結果を表す値(数値、テキストなど)を
含む。これらの値はその後の突合せ動作で「結合」ノー
ドへの入力の1つとして使用できる。テーブルへのアク
セスは通常のプログラミング手順に従って行ない、また
突合せ動作は通常のプログラミング行なわれる比較であ
ることを理解されたい。
RETEのアルファ部は、結果記憶域、すなわち部分パター
ン突合せ結果が記憶されるテーブルを持たないが、これ
に対してベータ部はそのようなテーブルを含む。アルフ
ァ部とベータ部の間にアルファ配布ノードと呼ばれるノ
ードがあるが、このアルファ配布ノードは、すべて、ア
ルファ部で生成されたパターン突合せの部的な結果を記
憶する結果記憶域を有する。これらのアルファ配布ノー
ドから、トークンはベータ部にプッシュされる。「プッ
シュされる」という言葉は、プログラムがプッシュされ
るトークンの情報内容を使って、後続ノードでパターン
突合せ動作を実行するすることを意味する。
RETEで使用されるノードには、入力接続数からいって、
1入力ノードと2入力ノードの2種がある。すべてのア
ルファ・ノードは、(後述のプロダクション・ノードま
たはマッチ・ノードと同様に)アルファ配布ノードと同
じく1入力を有する。このような1入力を「RHS入力」
または単に「入力」と呼ぶことにする。これに対してほ
とんどのベータ・ノードは、プロダクション・ノード、
マッチ・ノードまたは他の特殊目的ノードを除き、2つ
の入力、すなわち左側(LHS)と右側(RHS)の入力を有
する。この2つの入力は、結合テスト(テストが行なわ
れないこともある)に合格した(各側からの入力からな
る)トークンの対が結合されて、結合ノードの関連する
結果記憶テーブルを更新するために使用される新しい融
合したトークンとなるので、「結合ノード」と呼ばれ
る。
RETEアルゴリズムは、WMEの追加、修正または削除を表
す変更トークンで始まる。次いで、アルゴリズムを実行
するプログラムは、変更トークンの内容を必要に応じて
当該アルファ・ノードの突合せ情報項目と突き合わせす
るために複数のアルファ・ノードを走査する。すなわ
ち、各アルファ・ノードは、トークンで表されるWMEの
種々の態様をテストし、トークンをアルファ・ノードの
様々な後続ノードパするか、またはそこでブロックする
(パスしない)。この動作は、従来技術で周知のよう
に、アルファ・ノード部の下底に達するまで継続する。
この時点で、アルファ・ノードのテストが成功したと想
定すると、最初の結果記憶域(アルファ配布ノード)は
トークンを受け取り、WME操作(追加、修正、削除)の
種類に応じてその記憶域を更新することができる。一
方、トークンのテストが不合格の(一致しなかった)場
合には、トークンのパスがアルファ部の下底にまで達し
ないことがある。トークンをパスするには、周知のよう
に複数の論理経過が必要となることがある。このパター
ン突合せ動作に続いて、RETEのベータ部がRETE動作を継
続する。
原型ベータ結合ノードの1入力に達するトークンでは、
そのノードは、トークン内容と、結合ノードの反対側の
入力にソース・ノードとして論理的に接続されている先
行ノードにある結果記憶域に含まれる1組の部分突合せ
とトークンとの間のパターン突合せ機能を指定する。次
いで、プログラムは、結合ノードで定義されるように、
トークンと結果記憶域の間でテストを行なう。この結果
記憶域は「反対側記憶域」と呼ばれる。
RETEは、1組のパターン突合せ規則からコンパイルされ
る。各規則はRETEを通るルート・ノードから出力ノード
までの論理経路を定義する。
規則で定義されたRETEを通る通路は、一般にかなり複雑
になっている。したがって現在の所、RETEは、一度コン
パイルされると、結果記憶テーブルの更新を除いては、
比較的静的な構造となる。RETE及び他のパターン突合せ
ネットワークをよりフレキシブルで更新可能なものにす
ることが望ましい。
一般に前述のRETEは、併合されるRETEが、可能ならば併
合の相手方RETEとノードを共用し、一方新しいRETEの併
合不能で従って共用されない部分は、併合の相手方RETE
内の既存の結果記憶域からの部分突合せ情報で正しく初
期設定されるように、新しいRETE部分を正しく併合する
能力を示さない。新しいパターン突合せネットワーク全
体を再コンパイルし次いで更新することなしに、要求主
導型の動的変更ができるように、パターン突合せネット
ワークの機能性を高めることが望まれる。
ダン・スケールズ(Dan Scales)の論文「SOAR/OPS5プ
ロダクション・システム用の効率のよい突合せアルゴリ
ズム(Efficient Matching Algoriothms for the SOAR/
WPS5 Production System)」、スタンフォード大学コン
ピュータ科学部技術報告書(Stanford University Tech
nical Report of the Department of Computer Scienc
e)、1986年の報告によれば、従来のOPS5/RETEは、前述
のように効率を高められた。この教示は、要求主導型の
またはモジュール式に更新可能なパターン突合せネット
ワークを教示も示唆もしていない。
C.発明の要旨 本発明の目的は、パターン突合せネットワークにおいて
要求主導型パターン突合せを実現することである。
本発明の他の目的は、入力パターン突合せデータ構造と
既存パターン突合せネットワークの効率的で拘束の併合
を実現することである。
2つのパターン突合せネットワークを併合すると、既存
のネットワークに、新たに加えられた構造(ここではノ
ードと呼ぶ)のいくつかを併合し、新たに加えられたが
併合不能なすべてのノードを接続することによって、加
えられるデータ構造の数が最小限になる。修正されたネ
ットワークを更新すると、パターン突合せ結果の重複も
欠落もない、正しい結果が生成される。
本発明の他の目的は、突合せパターンの出所に応じて各
種の併合モードを提供することである。突合せパターン
の出所は、規則の条件部分(一般に「規則のLHS部分」
と呼ばれる)でも、活動部分の作業からくる要求時パタ
ーン突合せ構造でもよい。修正されたネットワークの更
新によって、パターン突合せ結果の重複も欠落もない、
正しい結果が作成される。
本発明の他の目的は、突合せパターンの出所に応じた各
種の併合モードを提供することである。突合せパターン
の出所は、規則の条件部分(一般に「規則LHS部分」と
呼ばれる)でも、規則の活動部分または任意の手順プロ
グラミング・コードから来る要求時パターン突合せ構造
でも、トップ・レベル、すなわちあるユーザによって入
力された再使用の可能性のない要求時パターンでもよ
い。
併合のスパン(持続時間)は「永久的」でも「一時的」
でもよい。既存のRETEと永久モードで組み合わされた新
しいRETE(ミニRETEと呼ぶことにする)は、その結果得
られる併合ネットワークの不可分の部分となる。一方、
既存RETEに一時モードで接合されたミニRETEは、要求時
にのみ使用可能である。これらのRETEの未併合部分は、
併合の相手方RETEと永久的には接続されない。一時的併
合では、併合されたRETEの再使用の可能性に応じて、シ
ナプス・ノードが保管されることも保管されないことも
ある。たとえば、トップ・レベルのパターン突合せ要求
は、保管されないシナプス・ノードを生成し、一方規則
の活動部分にある要求時パターンは保管される。
D.実施例 添付の各図面をさらに詳しく参照するが、各図で、同じ
参照番号は、同じ部品及び構造上の特徴を示す。後述及
び前述のプログラミング・ステップを実施するための周
知のプログラミング言語は、“Common LISP"である。
これについては、ガイ・L.スティール・ジュニア(Guy
L.Steele,Jr.)、「COMMON LISP」、Digital Press、1
984年、(QA76.73.L23573 1984 ISBN 0−9 32376−41−
X)を参照のこと。既知のRETEアルゴリズムは、プラウ
ンストーン(Brownstone)、「OPS5によるエキスパート
・システムのプログラミング(PROGRAMMING EXPERT SYS
TEMS IN OPS5)」、Addison−Wesley Publishing Compa
ny、1985年、pp.228−239に記載されている。従来のパ
ターン突合せシステムならびにその好ましい実施例は、
ディジタル・コンピュータ(図示せず)を使用し、パタ
ーン突合せネットワークの骨格を構成するデータ構造
が、ディジタル・コンピュータの記憶域部分に記憶され
るものである。すべての図は、本発明が理解できるよう
に、記憶された構造の一部を詳細に示している。
第1図では、RETE10が作業用記憶域11に対する変更によ
って(周知のようにプログラムの実行を介して)論理的
に駆動される(作業用記憶域11は、RETEシステムの制御
データ及び入力データ要素を記憶するためのディジタル
・コンピュータのプログラム指定部分である)。制御デ
ータ及び入力データは、作業用記憶要素(WME)と呼ば
れ、矢印13で示すように作業用記憶域11に受け取られ
る。WMEは、作業用記憶域11に追加し、そこから削除
し、またはその中で変更することができる。このような
追加、削除、または変更の結果、作業用記憶域11の内容
が、RETE10の現状況とは異なるようになる。RETE10は後
述する記憶ノードに部分パターン突合せ結果を記憶する
ことを銘記されたい。作業用記憶域11とRETE10の間のこ
の相違またはデルタは、当技術分野で周知のように、
「トークン」によって表される。トークンは1つのWME
に対する1回の変更(追加、更新、または修正)を表
す。トークンは、矢印15で示すように、プログラム制御
によって作業用記憶域11からRETE10のルート・ノード20
に転送される。トークンが・ノード20に入ると、周知の
RETEプログラム(図示せず)がトップRETE入力ノード
(第3図に示すアルファ部データ構造)21A−21Cを走査
する。実際の実施例では、このようなRETE入力ノードが
多数存在することもある。トークンがRETEノードのいず
れかに関連するパターン突合せテストに合格すると、パ
ターン突合せ動作はそのRETEノードからRETEを下方に進
む。たとえば、ノード21Bでの突合せの結果、次にノー
ド22Bでパターン突合せ動作が行なわれ、アルファ・ノ
ード21A−21C及び22A−22Cは、前述のフォージーによっ
て教示されたRETEのアルファ部を表す。このようなアル
ファ部では、単一のRETE入力ノードから、スペース23で
図式的に示したアルファ・ノードのいくつかの階層また
は層が走査される。アルファ部の論理的下底は、1組の
アルファ配布ノード24A−24Dから構成される。図示され
た実施例で部分パターン突合せ結果を記憶しないアルフ
ァ・ノードは、周知のようにパターン突合せ動作を実行
する。アルファ・ノードでパターン突合せテストに合格
したトークンは、RETEのアルファ部の下限でそれぞれ終
端するアルファ配布ノードに記憶される。
アルファ配布ノード24A−24Dは、RETE内で結果記憶域を
有する一番上の(論理的にルート・ノード20に最も近
い)ノードである。これらのノードは、後述するように
ベータ・シナプス・ソース・ノードとして指定すること
ができる。
ベータ・ノードと呼ばれる、論理的にアルファ配布ノー
ドの下にあるノードのすべてが、RETEのベータ部を構成
する。多くのベータ・ノードは、2つの入力を有する結
合ノードである。各結合ノードは、ベータ結合ノード25
Dについて図示してあるように、LHS入力とPHS入力を有
する。他のベータ・ノード25A−25Cも、図示した各ベー
タ・ノードの横の当該の省略水平線で示すように、同様
の入力を有する。変更トークンはLHS入力とRHS入力のい
ずれかを通って、結合ノードにパスすることができる。
パスされたトークンは、結合ノード中で指定された述語
テストを用い、反対側記憶域(反対側の入力(すなわち
PHSまたはLHS)に接続された先行ノードの記憶記憶域)
からの複数の引数値と比較される、1組の引数値を構成
する。すべてのテストに合格した場合、トークンは適切
な後続ノードにパスされる。
RETE10の下限または下底境界は、いわゆるプロダクショ
ン・ノードを含む出力ノード26A−26Dから成る。これら
の出力ノードを除き、RETE内のすべてのノードは、後続
ノード(現ノードの走査の後に続くパターン突合せ動作
でRETEプロラムによって走査されるノード)を持つこと
ができる。先行ノードとは、所与のノードの走査より前
に走査されるノードである。アルファ・ノードは、その
当該のアルファ配布ノードの先行ノードである。ベータ
・ノードは、アルファ配布ノード及びアルファ・ノード
の後続ノードである。ベータ・ノードは、他のベータ・
ノードの先行ノードとなることができる。パターン突合
せテストで使用されるデータ、実際のデータ構造及びテ
スト定義は、すべてデータ域または記憶域16に記憶され
る。RETEのデータ内容は、データ域16に、適切なデータ
構造を指すポインタを含む。
本発明の1態様によれば、1つまたは複数のミニRETEま
たはミニ・ネットワーク18が、既存RETE、元のRETE、ま
たは種RETEと呼ばれるRETE10に併合または接合される。
後述する一点鎖線構造は、そのような併合、及び好まし
い実施例の併合プロセスの要求時パターン突合せ(後で
説明する)を簡略して示したものである。ミニRETEは、
規則から構築されたRETEなど、様々なパターンに対応す
る独立に構築されたRETEネットワークである。
本発明の1態様によれば、「シナプス・ノード」と呼ば
れる1組の特殊ノードが、併合動作がRETE構造を変更し
た後にRETEの「延期」部分を更新する目的で生成され
る。このような延期部分は、既存のRETE(主RETEとも称
する)に接合されたノード、(後で明らかになるよう
に)選択的に更新されたノードなどである。RETEの更新
は「ソース・ノード」と呼ばれる1組のノードまでさか
のぼる。RETEの延期部分の最初のノードは「ドレイン・
ノード」と呼ばれる。シナプス・ノードは、指定された
ソース・ノードとドレイン・ノードの間の結合を識別す
る。RETEの延期部分にあるドレイン・ノードの後続ノー
ドは、RETEに新たに接合または付加され、まだRETEの現
在状況に更新されてはいない。このようなシナプス・ノ
ードは、RETEの延期部分に対するソース更新点(2つの
入力結合ノードの例では複数の点)を指定する。
結果記憶域中のデータ・テーブルは、ベータ結合ノード
に記憶されたテスト定義に従って、ベータ結合ノード中
でトークン内容とパターン突合せ比較を行なうための、
引数値(数値、テキストなど、実際には任意の構造)を
含む。テーブルへのアクセスは通常のプログラミング手
順に従い、突合せ動作は通常のプログラミングで実施さ
れる比較であることを理解されたい。
ベータ部では、各結合ノードは2つの入力、すなわち左
側(LHS)入力と右側(RHS)入力を持つ。結合ノードの
出力は、入力トークンと、反対側結果記憶トークンの間
のパターン突合せの成功を表するトークンから成る。
本発明の1態様によれば、2種類のシナプス・ノード、
すなわち「アルファ・シナプス・ノード」と「ベータ・
シナプス・ノード」が構築される。これらのシナプス・
ノードは、すでに計算されて既存のRETE内に存在する部
分突合せ情報が共用されるように、既存RETEに新しいRE
TEが接続される、方式と場所を識別する働きをする。こ
れらのシナプス・ノードは、RETEの延期部分を更新する
ための使用され、併合動作によってRETE構成が更新され
ている。
このような延期部分は、既存のRETEに接合されたノー
ド、(後で明らかになるように)選択的に更新されたノ
ードなどであある。ベータ・シナプス・ノードは1組の
RETEノードを識別する。すなわち、各ベータ・シナプス
・ノードは、1つのまた2つの「ソース」ノードを「ド
レイン」ノードと関連づける。ソース・ノードは併合の
相手方RETE内のノードであり、ドレイン・ノードは既存
RETEと組み合わされる新しいRETE中のノードである。ア
ルファ・シナプス・ノードは、後述のように、ミニRETE
のトップ・ノードを、その「ソース」が特定のトップ・
ノードに関連するWMEであるドレイン・ノードとして識
別する。
RETEの更新は、このようなシナプス・ノード中で識別さ
れたソース・ノードまでさかのぼり、RETEの延期部分に
ある後続ノードは(RETE内の新たに接合または追加され
たノードを含めて)、RETEの現状況に更新されてはいな
い。ソース・ノードはRETEの延期部分に対するソース更
新点となる。
併合プロセスが完了すると、接合されたパターン突合せ
ネットワークは、併合中に作成された1組のシナプス・
ノード(ソース・ノードをドレイン・ノードに接続する
ノード)を使って更新される。更新アルゴリズムには2
種類ある。1つは送出の順序づけを必要としないもので
あり、もう1つは順序づけを必要とするが、最適化され
た性能を有するものである。第1の更新アルゴリズム
は、ソース・ノードが「停止」ノードとなり、ドレイン
・ノードが「再開」ノードとなるという、関連特許出願
である特願平1−294075号に記載されているような、汎
用更新アルゴリズムである。延期RETEのベータ部にある
ソース・ノードとその後続ノードは、ベータ・シナプス
・ノードのリストによって識別される。第2の更新アル
ゴリズムは、トークン送出順序を指定することを必要と
するが、空間と時間の効率がよい高い。この更新アルゴ
リズムによって、実行プログラムは、まず後で定義する
「左ソース・ノード」(ベータ・シナプス・ノードの一
部)に記憶されているトークンを、汎用更新アルゴリズ
ムにおけるシャドウイングと右後続ノードへの送出を呼
び越して、昇順でドレイン・ノードに送る。ノードから
のトークンの昇順送出は、ホー・S・リー(Ho S.Lee)
他の関連特許出願である特願平1−294075号に詳しく定
義されている。アドレスされたベータ・シナプス・ノー
ドを介するネットワークの更新は、一番下のレベルの左
ソース・ノード(更新すべき延期RETE中のすべてのドレ
イン・ノードのうち一番下のレベルのドレイン・ノード
に論理的に接続されたソース・ノード)からドレイン・
ノード(上記の関連の特許出願では再開ノードと称して
いる)へのトークンの送出で始まる。左ソース・ノード
から接続されたドレイン・ノードへのトークンの一連の
昇順プッシュによって、更新プロセスの第1ステップが
完了する。ドレイン・ノードの論理的順序は、余分の探
索努力なしに、併合アルゴリズムの副産物として得るこ
とができる。2つのドレイン・ノード間に明白な順序が
ない場合は、この2つのドレイン・ノードへのトークン
の送出順序は任意である。第2ステップとして、アルフ
ァ・シナプスによって指定されるアルファ・トップ(ソ
ース)ノードに関連するWMEが、その後続ノードに任意
の順序で送出される。最適化された更新アルゴリズムを
使用すると、実行時間性能が向上する。
第2図は、好ましい実施例に従って、パターン突合せネ
ットワーク併合を行なうマシン動作を示す。マシン・ス
テップ30で、周知のように、突合せパターンが構築され
ていると仮定する。第4図及び第5図は、このような周
知の突合せパターンの結果を示している。このような突
合せパターンは、ある例ではRETEの1つの規則を構成す
るが、それだけに限定されるものではない。
突合せパターンからRETEネットワークを構築するための
周知方法を用いて、突合せパターンからミニ・ネットワ
ークが作成される。この結果得られるミニ・ネットワー
クは、自己併合されてもされなくてもよく、どちらも本
発明でカバーされる。自己併合されたネットワークと
は、より高いレベルのノード(すなわちルート・ノード
により近いノード)が可能ならば共用され、その結果、
共用されたこれらのノードが複数の後続ノードをもつよ
うなネットワークである(第6図及び第7図)。
マシン・ステップ32で、マシン・ステップ31で作成され
たミニ・ネットワークが現ネットワークまたは既存のネ
ットワーク10に組み合わされる。第12図及び第13図に、
併合処理の詳細を示す。併合の結果、現ネットワーク10
は増補されて、修正されたネットワークまたはRETE34な
り、要求時に情報を供給するために使用される。併合ス
テップ32の一環として、1組のシナプス・ノード33(第
3図はこのようなシナプス・ノードのデータ構成態様を
示す)を作成することもできる。シナプス・ノードは、
上述の関連特許出願に記載されているように、ソース・
ノードと呼ばれる一番下の併合の相手方ノードと、延期
RETE部分への入口点でもある。未併合ミニ・ネットワー
クの一番上の部分との間の結合点を識別する。一番下の
併合された元のRETEノードの後続ノード(ミニRETEが併
合された先のノード)としては、併合される修正済ネッ
トワークの当該の一番下のノードに接続された、つまり
ミニRETEニードが併合された相手の一番下の既存ノード
に接続された、ミニRETE中のノードが含まれる。ミニRE
TEから接続された後続ノードはどれも、作業用記憶域11
中のどのWME活動からのどのパターン突合せ情報によっ
ても更新されていない。したがって併合後に、このよう
な後続ノードと作業用記憶域11の現状況との間にデルタ
または相違が生じる。「ソース・ノード」は更新された
他の後続ノードを有する可能性がきわめて高いことに留
意されたい。このような他の後続ノードは、併合前には
RETEにあったか、または作業用記憶域の現状況に更新さ
れていた。更新ステップ46では、生成されたばかりのシ
ナプス・ノード33を使用して、上記のソース・ノードま
たは併合ノードから始めて、既存のWMEデータ11によっ
てまた更新されていない併合されたミニRETEの後続ノー
ドにトークンをプッシュし、後で明らかになるように、
1つまたは一連の各ノード中の一番下の併合ノードすべ
ての接合されたミニ・RETE後続ノードを、すべてに更新
する。このようなシナプス・ノードは、RETEの「延期」
部分中でRETEノードを選択的に更新するため、後述のゲ
ート活動を提供するのにも使用できる。
RETE10内に示す破線のデータ構造は、修正ネットワーク
34を部分更新する必要性を示すためのものである。これ
らのプロセスの詳細を第4図ないし第11図に示す。いく
つかの代表的な更新が示されている。たとえば、ミニRE
TE18からのアルファ・ノード37は、アルファ・ノード21
Aにその直接後続ノードの1つとして接続されている。
接合されたノード37の出力接続は、そのミニRETE内のノ
ード37の以前に存在したノードまたは後続ノード(図示
せず)であり、ノード37と共に、そのミニRETEから更新
されたRETEまたはネットワーク34に「接合RETE」部分と
して運ばれる。ノード37は、RETE入力ノード21Aと併合
された直前の先行ノードへの、RETE入力ノード(図示せ
ず)をミニRETE内に有していた。したがって、ノード37
のミニRETEノードは、既存のRETE入力ノード21Aに併合
されて、廃棄された。ノード21Aの出力とノード37の入
力の間の接続は、後述のいわゆる「併合リンク」によ
り、ノード37のミニRETE先行ノードからノード37へのリ
ンクの切断は「併合切断」と呼ばれる。
アルファ部併合の他の場合では、ミニRETEは、併合され
るとRETE入力ノードとなるトップ・ノード41、中間アル
ファ・ノード42、アルファ配布ノード43、ベータ・ノー
ド44及び出力ノード(プロダクション・ノードまたはマ
ッチ・ノードでもよい)40を含む。これらのノードのい
ずれも既存のRETEノードのいずれとも併合されていな
い。ベータ・ノード44へのLHS入力は、ミニRETE18内の
ベータ・ノード44のLHS先行ノードと併合されたRETE10
内のノードに接続される。ノード40−44については、図
示したノードでは併合は見られなかった。したがって、
これらのノードはすべてRETE10に加えられ、加えられた
ノードは接合RETE部分である。
特定のアルファ・トップノードでは、ミニRETEのアルフ
ァ・ノードのすべてが既存の主RETEにうまく組み合わさ
れていない場合、ミニRETE内の部分的に組み合わされた
アルファ部のトップ・ノードが、アルファ・シナプス・
ノードによって指定されたソース・ノードになる。自己
併合されたミニRETEネットワークでは、同じ、アルファ
・トップ・ソース・ノードを指定する複数のアルファ・
シナプス・ノードが、トップ・ノード1つ当りただ1つ
のアルファ・シナプス・ノードが作成されるように、併
合される。併合が可能かどうかテストするためにミニRE
TEのアルファ部を操作する間に、アルファ配布ノードと
の併合テストが成功した場合、ミニRETE内のアルファ配
布ノードの先行ノードからアルファ配布ノードに向う正
方向ポインタが、正しい突合せ結果を得るために除去さ
れる。
次に、たとえば記憶ノード38が既存RETEのベータ部に加
えられるという例を考えてみる。ノード38の先行ノード
が、元のRETE(図示せず)内の1つのノードとうまく併
合されたベータ・ノードである、すなわちミニRETE18内
のノード38の先行ノードが主RETE10内の既存ベータ・ノ
ード併合されたと仮定する。したがって、ベータ・ノー
ド38は、併合されたミニRETEの一部分の一番上のノード
であり、RETE10のどの既存ベータ・ノードとも併合され
なかったベータ・ノードである。ノード38は、全体で接
合されたRETEを構成する、プロダクション・ノード(図
示せず)またはマッチ・ノードのいずれかで終わる後続
ノードのネットワークを有することがある。主RETE内の
ノードとの併合リンクを有するミニRETE内のノードの直
接先行ノードは、「最終併合ノード」と呼ばれ、ミニRE
TE内の最終併合ノードの後続ノードはすべて主RETEに併
合できないことを意味する。たとえば、ミニRETE18内の
ノード38の直接先行ノードは、最終併合ノードである。
ミニRETEの記憶ノードが既存RETEのどれかと併合されて
いる場合、後述するように、いわゆる「ベータ・シナプ
ス・ノード・トリプル」がRETE10の適切な更新を保証す
るために生成される。ベータ・シナプス・ノード・トリ
プルの各ノードは、第3図のシナプス・ノード50として
の構造を持つ。いわゆる「併合プロセス」で、ミニRETE
が検査されて、元のRETE内と同等なノードを含むミニRE
TEの順序づけられた1組の併合可能ノードが確立され
る。このシーケンスは、併合プロセスによって作成され
る後述のシナプス・ノードの順序と配置に影響を及ぼす
ので、重要である。ミニRETE内のノードは、併合テスト
のため、あるノードの先行ノードを走査して決定された
順序で選択される。2入力ノード(たとえば、結合ノー
ド)の場合、左側の先行ノードが右側の先行ノードより
先に走査される。トップ・ノードに達すると走査は停止
する。
走査で見つかったミニRETE内のトップ・ノードは、既存
の主RETEトップ・ノードと併合されているかどうかテス
トされる。ノードは、同じパターン・テスト機能を果た
す場合、互いに併合させることができる。同じパターン
・テスト機能を果たすかどうか調べるためのノードの比
較は周知のアルゴリズムであり、現在、新しいパターン
の構築時に、それらのパターンのためにRETEを併合する
目的でOPS5中で実施されている。上述の分析と走査の目
的は、トップ・ノードから出発して、ミニRETEの下底ノ
ードへと、併合がもはや不可能になる点を探すことであ
る。トップ・ノードが併合可能な場合、その後続ノード
がテストされる。すべてのノードが併合されるか、また
は併合不能なノードが見つかるまでそれを続ける。ノー
ドの併合が発生した場合、元のRETE内とミニRETE内のす
べての先行ノードも併合される。ノードの併合は、先行
ノードによってのみ決定され、後続ノードは所与のノー
ドの併合に何の影響も及ぼさない。ベータ・シナプス・
ノード・トリプルは3はつのノード、つまり右ソース・
ノード、左ソース・ノード及びドレイン・ノードから成
る。ベータ・シナプス・ノード・トリプルの右及び左ソ
ース・ノードは、それぞれ主RETE内の併合ノードを指
し、一方ドレイン・ノードは、ミニRETE内のノードを指
す。併合切断活動が発生する前は、ドレイン・ノードは
ミニRETE内の最終併合ノードの直接後続ノードである。
最終併合ミニRETEノードの先行ノード、及び最終併合ミ
ニRETEノード自体はすべて併合されている。つまり、こ
のような先行ミニRETEノードは、結果として得られる併
合されたRETEに組み込まれず、すでに主RETE内にある既
存のRETE構造が同じ効果のために再利用される。主RETE
の併合ノードの直接先行ノードは、このノードの併合に
よって変更されない。ミニRETEが主RETEに永久的に併合
されるパターンを表す場合、併合される先の元のノード
は、新しい直接後続ノード、つまりミニRETE最終併合ノ
ードの直接後続ノードであるドレイン・ノードを受け
る。すなわち、この直接後続ノードは、このとき延期ま
たは接合されたRETE部分のトップ・ノードであるドレイ
ン・ノードになっている。これは、併合より後まで維持
され元のRETEソース・ノード(併合ノードとも呼ばれ
る)に接続されるために分析される論理経路中のミニRE
TEの最高レベルのノードである。
併合されたミニRETEが、将来突合せが要求されたとき要
求時突合せ動作のため再現可能な要求時突合せパターン
から構築されている場合、シナプス・ノードは永久に記
憶される。要求時突合せパターン接合が、新たに指定さ
れたドレイン・ノードを、主RETEノードの後続ノードと
して主RETEに永久にリンクすることはない。この選択的
論理接続は、要求時ネットワークに関連するパターン突
合せ活動が、要求時データ変更以外のデータ変更が行な
われるときに処理されないようにする。
再現可能要求時ミニRETEパターンでは、シナプス・ノー
ドを含む特別リングが、延期部分の突合せパターンが
(再現可能要求突起合せパターンを含む)他のどのパタ
ーン断片によってももはや使用されないときにはいつで
も、延期部分を除外する計算を可能にする。このシナプ
ス接続はこのような望ましくない突合せパターンの簡単
な削除を可能にする。新しい規則LHS(規則LHSをLHS入
力と混同しないこと)及び再現不能な要求時パターンを
表すミニRETEパターンの場合、シナプス・ノードは、RE
TEの新たに追加または接合された部分である延期RETE部
分を更新するために一度使用された後に、廃棄される。
というのは、RETEの新たに追加または接合された部分の
初期「プライミング」が完了すると、そのようなシナプ
ス・ノードをさらに維持する必要はないからである。
第3図は、本発明の説明に使用されるデータ構造を示
す。RETEまたは他の形式のパターン突合せネットワーク
の実際の実施例では、当技術分野で周知のように、さら
に多くのデータ構造が使用されることを理解されたい。
ベータ・シナプス・ノード50は、(接続シナプス・ノー
ドが使用されていないときの延期部分である)接合され
たRETEの境界を識別する。シナプス・ノードは、後で有
らかになるように、元のまたは主RETEを、要求時更新の
実施及びその他の目的のための「ゲート」として、接合
さたRETEに選択的に接続する。各ペータ・シナプス・ノ
ード50は3つのポインタを有する。第1フィールドRPRE
D51は右先行ノードを指すポインタを有し、第2フィー
ルドLPRED52は左先行ノードを指すポインタを有し、フ
ィールドDRAIN53はドレイン・ノードを指すポインタを
有する。
フィールド51または52(ただし両方ではない)は、その
側のドレイン・ノードの先行ノードが主RETE内にないこ
とを指示するゼロでもよい。先行ノードがあるかもしれ
ないが、「ゼロ」フィールド51または52に対するそのよ
うな先行ノードは、ミニRETE内にある。このような先行
ノードは主RETEノードと併合することができないので、
主RETE内に残る。各アルファ・シナプス・ノードは、ベ
ータ・シナプス・ノードとは異なり、アルファ・トップ
・ノードを指す単一のポインタを有する。したがって、
アルファ・シナプス・ノードはドレイン・ノードのみを
指す。
ベータ・シナプス・ノード・フィールド53によって指さ
れるドレイン・ノードは、主RETEノードに併合されな
い、すなわち主RETEノードに併合することができないミ
ニRETE経路中の最高のノードである、ミニRETEのベータ
・ノードを識別し、したがってこのドレイン・ノードは
接合された主RETE内に残る。ベータ・シナプス・ノード
によって指されるドレンイン・ノードは、それが結合ノ
ードであるとき、2つのノード入力、LHS入力とRHS入力
を持つ。主RETEノードに併合されなかったドレイン・ノ
ードのすべての後続ノードは、接合されたRETE内になけ
ればならない。すなわち延期RETE部分のメンバー・ノー
ドとなる。
ミニRETEが既存RETEに永久的に追加される新しい規則を
表す場合は、主REEノードに併合できないノード列中の
一番上のミニRETEノードが、元のRETEの併合ノードの追
加の直接後続ノードとなる。すなわち、このような併合
ノードは、ミニRETEノードの最終併合ノードが併合され
る先の主RETEノードである。この実施例では、各アルフ
ァ・シナプス・ノードは、作成されたミニRETE内のトッ
プ・ノードを指す。主RETEのトップ・ノードは複数の直
接後続ノードを有することができるので、ミニRETEトッ
プ・ノードへのアルファ・シナプス・ノード点ができる
と、主RETE内の既に初期設定されたRETEへのトークンの
伝播を防止しながら、トークンを正しくミニRETE部分に
伝播させる方法がもたらされる。このようなアルファ・
シナプス・ノードは、修正されたRETE内の最終併合アル
ファ・ノードにトークンをパスするために、ミニRETEの
(恐らくは自己併合された)トップ・ノードを指す。ア
ルファ・シナプス・ノードがすべて、アドレス可能な連
係リスト中にあり、またベータ・シナプス・ノードがす
べての別のアドレス可能な連係リスト中にあることが好
ましい。各併合は、そのアルファ及びベータ・シナプス
・ノード用に別々のドレス可能連係リストを有すること
ができ、またはすべてのアルファ及びベータ・シナプス
・ノード用に1つのリストを設け、シナプス・ノードに
よって指示される種々の論理接続に対してリスト中でオ
フセットを指示することもできる。更新ステップの後
に、規則RHSパターンから構築されたミニRETEなど、そ
のソースが再現可能な要求時パターン突合せであったミ
ニRETEの場合を除き、シナプス、ノードはすべて廃棄さ
れる。繰返し動作で使用される要求時突合せパターンの
場合には、作成された1組のシナプス・ノードが、後で
開始される更新動作のために記憶される。
新たに永久的に追加された規則パターンを表すミニRET
E、または(1回パターン突合せ要求など)再現性の必
要がない要求時パターン突合せ用に作成されたシナプス
・ノードは、1度だけ使用され、更新が完了すると廃棄
される。主RETEに併合された他のミニRETEは、その主RE
TEの永久部分となることができ、つまりその主RETEに包
含される(この結果得られる延期された部分を識別する
シナプス・ノードは廃棄され、併合されたミニRETEはそ
の元の主RETEの先行ノードすべてを指すポイントを有す
る)。すなわち、係合及び延期部分の最初の更新の完了
後には、指定されたソース・ノード及びドレイン・ノー
ドは存在しない。
アルファ部ノード構造58(ノード21Cなど)は、データ
構造をRETEアルファ・ノードまたはトップ・ノードとし
て識別するタイプ・フィールド60を含む。アルファ・ノ
ードのPPREDフィールド61は、その唯一の直接先行ノー
ドを指すアドレス・ポインタを記憶し、一方トップまた
は入力アルファ・ノード・フィールド61は、このトップ
・ノードに関連する入力WMEの識別に適したRETEまたは
他のトップ情報のクラスの識別を記憶する。PPGMフィー
ルド62は、アルファ・ノードに関連する固有のプログラ
ム部分を指すアドレス・ポインタを記憶する(このフィ
ールドは空白でもよい)。DVECフィールド63は、すべて
の直接後続ノードを指す1組のポインタである(しかし
通常、アルファ・ノードはアルファ配布ノードを含むこ
とがある)。PTESTフィールド64は、実施すべきテスト
用のポインタを記憶する(通常トップ・ノードではテス
トは実施されない)。ベータ・ノード・データ構造66
(RETE10のベータ・ノード25A以下、ならびにアルファ
配布ノード24A以下)は、データ構造ベータ・ノードま
たはアルファ・ノードとして識別するタイプ・フィール
ド67を含む。PPGMRフィールド68及びPPGMLフィールド69
は、それぞれRHS及びLHS項目または入力を用いて実行す
べきプログラミングを指す。フィールドPRP70及びPRP71
は、それぞれ右及び左先行ノードを指すアドレス・ポイ
ンタを記憶する。右または左先行ノードがない場合、当
該のフィールドは空白(NILと称する)である。PRPフィ
ールド70がNILのときは、PPGMRフィールド68もNILであ
る。フィールド69と71についても同じことが言える。PR
Sフィールド72は、右後続ノードがある場合、そのすべ
てを識別するデータ構造を指すポインタを含む。右後続
ノードがない場合は、このフィールドはNILである。PRS
Sフィールド73は、そのノードに関連するすべての非一
時シナプス・ノードを識別するデータ構造を指すポイン
タを含む。この場合、そのノードは要求時ドレイン・ノ
ードの右先行ノードであるという関連がある。PMEMフィ
ールド74は、今説明しているベータまたはアルファ配布
ノードの関連する結果記憶域を指しアドレス・ポインタ
を記憶する。VARフィールド75を、このノードに関連
し、このノードを走査するときRETEプログラムによって
実行される、パターン突合せテストを表すデータ構造を
指すアドレス・ポインタを含む。PLSフィールド76は、
次の1組の左直接後続ノードを指すアドレス・ポインタ
を記憶する。PRS72またはPLS76でいずれかで識別された
後続ノードが多数存在することがある。PLSSフィールド
77は、このノードに関連するすべての非一時シナプス・
ノードを識別するデータ構造を指すアドレス・ポインタ
を含む。この場合、そのノードは要求時ドレイン・ノー
ドの左先行ノードであるという関連がある。66のPRSS及
びPLSSノードを除き、これらの構造は周知のRETEアルゴ
リズムで使用される一般的なものである。アルファ・ノ
ードは記憶域または結果記憶ノードではなく、アルファ
配布ノード、ベータ結合ノード及びボトム・ノードは記
憶域または結果記憶ノードであり、そしてシナプス・ノ
ードは、ドレイン・ノードまたはソース・ノードとして
指定される他のノードを指すアドレスのみを提供するこ
とを想起されたい。
第4図及び第5図は、規則をコンパイルしてRETEに入れ
ることに関して使用される既知のRETE併合機能を示す。
第4図は4つのコンパイルされた規則W、X、Y、Z
を、それぞれボトム・ノード90−93として示す。このよ
うなボトム・ノードは、プロダクション・ノードでよ
い。ノード94、96−98、100−102は、タイプA、B、
C、Dのアルファ配布ノードであり、これらはパターン
・テストに合格したWMEを記憶する。この場合Aのすべ
てのWMEは同一のアルファ・テストに合格し、Bのすべ
てのWMEは同一であるが別のアルファ・テストに合格
し、以下同様である。ベータ結合ノード95、99、103
は、それぞれの規則のベータ部を構成し、規則Xだけが
ベータ結合ノードをもたない。アルファ・ノードは話を
簡単にするために省略してある。規則W、X、Y、Zを
表す個別のミニRETEから併合されたRETEを作成するた
め、すべての同一ノードが1つの論理削減ステップとし
て組み合わされる。したがって2つのBノード96と97
は、組み合わされて第5図のノード96になり、後続ノー
ド95と99はこのとき共通の先行ノードB96(第5図の
み)を有する。同様に第4図の3つのCノード98、10
0、101は、組み合わされて、3つの後続ノード91、99、
103を持つ単一のCノード100(第5図のみ)になる。ノ
ードA94及びD102はそのままに保たれる。第5図は、第
4図に示した規則の併合されたRETEを表す。第5図に示
す併合されたRETEは、周知のように、トップ・ルート・
ノードからのトークンをプッシュすることによって更新
することができる。LHS入力は、第4図及び第5図で
は、記号の左側から入る矢印で表され、RHS入力は、記
号の右側から入る矢印で表されている。トップ入力は、
RETE10のトップ・ノード21A以下である(第1図)。
本発明によれば、追加の規則を既存RETEに接合すること
ができ、接合部分はシナプス・ノード・ポインタを使っ
て更新することができる。このようなシナプス・ノード
を修正されたRETEと共に使ってミニRETEのソースとは関
係なく併合によって作成された延期RETE部分を更新する
(修正されたRETEはミニRETEを既存のRETEに接合または
接続して作成されている)。
ここに例示した実施例では、ミニRETEは2つの方式のう
ちの1つで併合させることができる。新しい規則を表す
ミニRETEでは、併合論理がミニRETEの未併合の付加され
た部分を「プライミングした」後、WMEが作成される前
に付加部分が存在していたかのように、続いて起こるWM
Eの変更が(従来技術のRETEアルゴリズムを利用して)
付加部分に正確に影響を及ぼすように併合が行なわれ
る。従来技術は、付加された未併合部分が既存のWMEに
よって「プライミングされる」ことができるという、ノ
ードの追加によるこのようなRETEとパターン突合せネッ
トワークの動的修正を、提供していない。
要求時パターン突合せ要求を表すミニRETEは、上述の方
法によるようには永久的に接続されていない。というの
は、WMEが変更されるときにパターンの未併合部分を連
続的に更新するのではなく、要求に応じてのみそのパタ
ーン突合せ結果を計算することが望ましいためである。
この種の併合プロセスの後、(RETEの延期部分を構成す
る)未併合の追加部分は、WMEデータ変更の際に発生す
る通常のRETEノード更新プロセスに関与することを妨げ
られる。シナプス・ノードは延期RETE部分のトップ・ノ
ードを指し、これらの追加ノードの選択的アドレッシン
グを可能にする。適切なシナプス・ノードがプログラミ
ング(図示せず)によってアクセスされるときのみ、そ
の種のミニRETEの延期部分がパターン突合せ動作で使用
される。シナプス・ノードを介するこのようなアクセス
は、この種の延期ノードのユーザ要求更新と呼ばれる。
このようなユーザ要求動作が発生しないときは、延期RE
TEノードは、主RETEの後続ノードとして正常に接続しな
いことによって絶縁され、そのような追加の延期部分を
更新しないことによって、より速いパターン突合せを可
能にする。
パターンが1回しか使用されない(繰り返さない)要求
時パターンから生じるミニRETEでは、1組のシナプス・
ノードを作成するプロセスは、他の場合とまったく同じ
である。しかしながら、トップ・レベルの突合せパター
ンから作成されるミニRETEの併合された部分は、主RETE
内にとどまる必要がない。パターン突合せ動作が終了す
ると、他に必要がなければ、併合のいかなる部分も削除
することができる(このような削除は、規則が削除され
るときに行なわれることがある)。このようなミニRETE
の突合せ出力が得られ、シナプス・ノードを介する接続
が除去できる。また、必要な記憶項目を参照するには、
シナプス・ノードのアドレス・ポインタを持つことで十
分である。1回の一時的併合である再使用なしのこの種
の要求パターンの実際の用途は、情報を実際に変更する
ことなしにRETE10から情報を得ることである。このよう
なアクセスは、RETEに記憶された、突合せパターンによ
って識別可能な情報の情報検索動作である。ノード併合
のためのアルファ及びベータ・ノード互換性要件は広範
囲である。ノードは同じ形式であってはならないのみな
らず、2つの候補ノード中で記述または定義されたいか
なるテストも同じテストを持たなければならない。同形
式(アルファ、ベータまたはアルファ配布)の2つのRE
TE候補ノードを併合するための一般規則は、それらの当
該の先行ノードがすべて併合され、2つの候補ノード自
体が併合されていることである。2つの入力ベータ・ノ
ードの場合、先行ノード併合要件がLHS及びRHS入力に拡
張される。
ミニRETEの主RETEとの併合を決定するために最初に行な
われる反復的走査及び分析では、T(併合テスト合格ま
たは併合成功)とNIL(併合テスト不合格または併合不
成功)の2つの併合マークのみが、併合テストの結果を
識別するために使用される。分析されるミニRETEは、元
のRETEノードと併合されていてもよいが、ミニRETEの最
終併合ノードでなくてもよい。すなわち、一番下のうま
く併合されたミニRETEノードでなくてもよい。
RETE併合の好ましい実施例では、まずミニRETEは、重複
するデータ構造を除去するために自己併合される。この
自己併合は、1組の規則からのRETEの元のコンパイルと
同様である。第6図及び第7図に、自己併合プロセスを
簡略化した形で示す。第6図に示したミニRETEは、単一
の出力ノード、すなわちボトム・ノードP121を含んでい
る。ミニRETEのトップ・ノードは、同一の2つのAノー
ド122、124及びノードB123を含む。この図の一番上のノ
ードは、アルファ配布ノードである。このミニRETEのベ
ータ部は、図示された論理接続を有する2つのベータ接
合ノード125及び126から成る。このようなミニRETEは、
規則のパターン仕様または要求時パターン突合せ動作
(再現可能または不能)から構築することができる。こ
のような構築されたミニRETEには、第6図に示すように
ノードが共用されない。このようなミニRETE内の各ノー
ドは、併合されたRETE内の多くの直接後続ノードとは違
って、1つの後続ノードしかもたない。自己併合によっ
て重複ノードがなくなり、RETE併合処理が簡単になる。
第7図は、自己併合によって得られる第6図のミニRETE
の構造を示す。ここに例示した自己併合ではトップAノ
ード124がなくなっている。結合ノード126へのRHS入力
は、Aノード124から残っているAノード122へ移され
る。このような再接続は、2つのノードのポインタを変
えることによって行なわれる。結合ノード126では、そ
のPRPフィールド70(第3図)が、ノードA124ではなく
ノードA122を指すように変更される。結合ノード126の
アドレスがAノード122のPRS72(第3図)に加えられ、
Aノード124は削除される。この動作で、このミニRETE
の簡単な自己併合が完成する。実際の実施例では、ミニ
RETEはもと複雑な構造をとることを理解されたい。自己
併合は周知のパターン突合せプロセスである。ミニRETE
が入力パターンで更新されていないので、シナプス・ノ
ードを作る必要はない。従来技術による自己併合でもシ
ナプス・ノードは作成されなかった。
第8図及び第9図には、ミニRETEの既存のまたは主RETE
への併合及び単一アルファ・シナプス・ノードの作成を
簡単な形で示す。主RETEは、RETEのアルファ部にあると
想定した1入力ノードとして部分的に示されている。併
合されるミニRETEは、永久的に接合される新しい規則か
らのものであると想定する。主RETEの一番上の併合可能
なノードK130は、1つの入力ノードと、複数の直接後続
L、M、Nノード131−133を有する。Mノード132は、
上記RETE併合に含まれる出力ノード140を有する。他の
ノードL131とN133の接続ノードは話を簡単にするために
省略する。ノード131の132の間の省略符号は、追加の直
接後続ノードがノードK130に接続されていることを示す
ものである。主RETEと併合されるミニRETEは、主RETEの
ノードK130と併合されているトップ入力ノードK135を有
する。ノードK135の直接後続ノードであるミニRETEノー
ドM136は、直接後続ノードR137を有する。ミニRETEの図
示された3つのノード部分135−137は、2つのノード13
5及び136を有し、これらは主RETEノードK130及びM132と
の併合を示す。2つのノードK135及びM136は併合処理に
よって削除され、一方ミニRETEのノードR137とその接続
ノードは、接合されて主RETEの一部となる。
第9図は、ミニRETE135−137が元の主RETEに併合された
後の修正された主RETEを示す。第8図の図との違いは、
一番上の併合不能なノードR137が主RETEの併合ノードR1
37に再接続されていることだけである。この場合、ノー
ドM136は最終的に併合されたノードである。この再接続
の結果、ノードR137と併合ノード132の間に併合リンク
が確立される。その後は、最終併合ノードM136から上向
きに到達できるトップ・ノードが、後述のようにアルフ
ァ・シナプス・ノードとして認識される。併合リンク14
1は、ノードM132及びR137のポインタの変更によって行
なわれる。この併合には1つの入力アルファ・ノードが
含まれるので、ノードR137のPPREDフィールド61(第3
図)はノードM132を指すように変更され、ノードR137の
アドレスがノードM132のDVECフィールド63(第3図)に
加えられる。作成されたアルファ・シナプス・ノードは
最終併合ノードM136から上向きに到達可能なトップ・ノ
ードを指すシングル・ポインタであり、このノードをミ
ニRETEの一番上のまたはトップ・ノードとして識別す
る。このとき(ノードR137の後続アルファ配布ノードや
結合ノードなど、図示せせず)記憶ノードは、パターン
情報で更新されていないことに留意されたい。第9図の
修正された主RETEの今付加されたばかりの部分の初期設
定を完了するために、後述の適当な更新手順をRETE併合
の完了時に使用する。
第10図は、その結果2つのシナプス・ノードが作成され
る、ミニRETEの主RETEへの併合を示す。この図はまた、
いつシナプス・ノードを作成すべきかを決定する際に、
併合完了後に接合されたRETEの正確な更新を維持しなが
ら、シナプス・ノードの数を最小にし、要求時パターン
突合せを制御するための「到達可能性」原理を示してい
る。第1と第2のノードの間の到達可能性とは、第1ノ
ードが第2ノードの先行ノードまたは後続ノードのいず
れかであり、すなわちネットワークの確立された論理的
経路をたどることによって論理的に第2ノードに到達す
ることができるという意味である。再びアルファ・ノー
ドが示されており、同じ手順と原理がアルファ配布ノー
ドとベータ・ノードを併合するのにも適用される。はる
かに大きな主RETEの2つのノード147及び151だけが示さ
れている。主RETEのトップ・ノードS147はRETE入力ノー
ドであり、その直後後続ノードの1つとしてアルファ・
ノードV151を有する。併合すべきミニRETEは、図では3
つのRETE入力ノード148−150を有する(このミニRETEは
図では自己併合されていない)。RETE入力ノードS148
は、どの主RETEノードとも併合されない直接後続ノード
Y152、及びどの主RETEノードとも併合されないその直接
後続ノードX153を有する。RETE入力ノード148はRETE入
力ノードS147と併合され、その結果、併合切断154が生
じてRETE入力ノードS148がノードY152から切断される。
ノードY152の後には、ノードY152から、このとき併合ノ
ードとなったRETE入力ノードS147への併合リンク55が続
く。第1アルファ・シナプス・ノード157は、アルファ
・ノード148から上方の到達可能なトップ・ノードを指
す。
ミニRETEノードS149及びY159は、ノードS147及びY152と
併合される。この併合によって併合切断161が生じて、
ノードG160のPPRED61が削除され、併合リンク162が加え
られる(ノードGのPPRED61がノードY152を指すように
変更され、DVEC63にG160が加えられる)。この併合リン
クは、ノードG160(このノードはどの主RETEノードとも
併合されない)をノードY152に論理的に接続する。
ノードSのためのアルファ・シナプス・ノードが(ノー
ドS157が併合されたときに)すでに作成されており、そ
のアルファ・シナプス・ノードのトップ・ノード(ノー
ドS157)からプッシュされたトークンが両アルファ・セ
グメントY152−X153及びY152−G160を初期設定するの
で、ノードS149のためのアルファ・シナプス・ノードは
実際は複製であり、したがってこの併合のためのアルフ
ァ・シナプス・ノードの集合に加えられることはない。
言い換えれば、シナプス・ノード157からノードに到達
可能なため、削除されたノードS149及びY159のためのシ
ナプス・ノードは作成されない。到達可能性の原理は、
あるRETEから別のRETEへの接合ノードが現シナプス・ノ
ードの1つから到達可能である場合、前のシナプス・ノ
ードの活動化が接合されたRETEで更新される必要のある
すべての接合ノードに到達するので、追加のシナプス・
ノードは作成されないというものである。破線で示した
ボックス163は、シナプス・ノード157からボックス163
内のすべてのノードに到達可能なことを示している。ノ
ードG160への接続ノードは示されていないが、記憶ノー
ド及び非記憶ノードを含むことができ、ちょうどノード
X153の後続ノードがボトム・ノード(図示せず)で終わ
るのと同じように、異なる複数のボトム・ノード(図示
せず)で終わることができる。RETE10中で経路を分岐さ
せることによって、単一のボトム・ノードが、ノードX1
53及びG160からパターン突合せ結果を受け取ることがで
きる。第11図は、この点に関する本発明のある併合制御
を示す。
破線で示したボックス168で示すように、第1図の併合
不能ノードW165及びその後続ノードに到達してそれらを
識別するために、ノードW165が主RETEに接合された後
に、第2のアルファ・シナプス・ノード169が作成され
る。ノードW165は、この併合で第2の接合されたRETEと
なるミニRETEの後続ノード・リストの上部ノードであ
る。トップ・ノードまたはRETE入力ノード150は、トッ
プ・ノードまたはRETE入力147ノードに併合されて、併
合ノード147及びノードW165から併合切断166及び併合リ
ンク163を作成する。シナプス・ノード157からノードW1
65への論理経路は存在せず、したがって、到達可能性の
原理から新しいシナプス・ノード169が必要となる。ア
ルファ・シナプス・ノード169は、主RETEの一部分とな
る接合されたRETEのトップ・ノードであるノードW165の
みを指す。上述のRETEの接合及びアルファ・シナプス・
ノードの作成により、パターン突合せ結果の重複や欠落
が防止される。
ノードS149及びY159のための第2シナプス・ノードが作
成された場合、追加シナプス・ノードが活動化される
と、トークンが2回更新、作成され、併合リンク161を
介して送出され、その結果、パターン突合せが重複され
る。到達可能性の原理を使用すると、この望まない重複
とその結果としての望ましくないパターン突合せ結果が
防止される。図に示した実施例は、各併合プロセスはそ
れ自体のシナプス・ノードの集合を作成する。つまり、
到達可能性の原理が各並行に他の併合とは無関係に適用
される。アルファ・シナプス・ノードの場合について説
明した到達可能性の原理は、ベータ・シナプス・ノード
の作成にも例外なく同様に適用できる。
つまり、ドレイン・ノード候補(主RETEノードと併合で
きず、最終併合可能ノードの後続ノードである、ミニRE
TEのベータ部にあるミニRETEノード)が、現アルファま
たはベータ・シナプスで指定されたドレイン・ノードか
ら到達可能である場合、それはドレイン・ノードとして
ベータ・シナプス・ノードのリストに加えられない。
第11図は、要求時併合に必要なより複雑なRETE併合を示
す。第11図に示す接合のモードは、第10図に示した規則
パターン併合のための接合モードとは異なる。第10図の
新しい主RETEでは、作成された併合リンクは、接合され
たRETEのドレイン・ノードから元の主RETEの併合ノード
を指し、またその逆に向う正方向ポインタ及び逆方向ポ
インタを含む。この両方向併合リンキングによって、接
合されたRETEが完全に元のRETEに組み込まれて、接合さ
れたRETEはすべてのRETE動作に関与するようにする。す
なわち、次のWMEデータ変更は、接合先の部分を含め
て、通常の方式で修正されたRETEの全体を通してプッシ
ュされる。これに対して、第11図は、要求時に生成され
たパターン突合せミニをRETEを用いた部分併合を示す。
第10図と第11図の主な相違は、接合されたRETEを主RETE
にリンクする際に生じる。第11図に示すRETE内でのリン
キングは、直接先行併合ノードへのソースまたは上方指
示リンクに限られている。つまり接合された部分への接
続はシナプス・ノードを通じて行なわれる。これらのシ
ナプス・ノードは、ドレインまたはダウン・リンキング
を完成するために、プログラム・ユーザの要求時に選択
的にアクセスされることできる。後述の更新手順などの
適切な更新手段を用いて予期されないパターン突合せ結
果が防止される。第11図では、既存の主RETEは、それぞ
れA、B及びC(図示せず)をそのトップ・ノードとす
る、3つのトップ・ノードまたはアルファ配布ノードA1
75、B176、C177、及び出力ノードまたはボトム・ノード
(ノード185の後続ノード:図示せず)を含む。既存の
主RETEに併合すべきミニRETEは、アルファ配布ノードC1
79、A180、D181及び出力突合せノードまたはボトム・ノ
ード(ノード187の後続ノード:図示せず)を有する。
主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
を指すように変更されたフィールドPRP70を有する。接
合されたRETEの更新中、ベータ・シナプス・ノードにソ
ース・ノードとして記録された2つのノード(C177及び
A175)は、LHSソース・ノード及びRHSソース・ノードと
して働く。すなわち、ベータ・シナプス・ノードは、ド
レイン・ノード186を前述のソース・ノードと関連づけ
る。非再現性要求時結合では、ノードA175でもノードC1
77でもポインタは変更されない。再現性要求時結合で
は、一部のベータ・シナプス・ノードがノード175及び
ノード176をソース・ノードとして指定することが、ノ
ード175及び176のPRSSフィールド73及びPLSSフィールド
に記録され、適切な論理によって、もはや使われないRE
TE部分が削除できるようになる(たとえば、一部のベー
タ・シナプス・ノードがあるノードをソース・ノードと
して使用する限り、このソース・ノードは削除を妨げら
れることがある)。ノード181、182、186、187からなる
接合されたRETEを更新するため、ベータ・シナプス・ノ
ードは活動化されると、RETE内に要求動作を起こさせ
る。ノード181、182、186、187の要求時突合せパターン
に対応するミニRETE部分が、このパターのためのシナプ
ス・ノード・リストを用いてアクセスされる。後で同じ
突合せパターンについて要求時突合せ計算が反復される
場合には、アルファ及びベータ・シナプス・ノードの計
算をキャッシュに記憶して、要求時プログラミングによ
って再使用することもでき、ノードをその都度再計算す
ることもできる。
第12図と第13図のマシン動作図は、LHSと称する併合、
反復使用される要求時併合、及び反復使用なしの要求併
合の、3種のパターン突合ネットワーク併合を可能にす
るパターン突合せネットワーク併合プロセスを示す。第
12図は、併合動作中に併合が行なわれるかどうかについ
てのミニRETE中の各ノードの最初の検査を示す。この図
は、第2図の併合ステップ32を図に示した実施例で実施
されるものとして詳しく示したものである。この説明で
は、ミニRETEはすでに自己併合されたものと想定してい
る。自己併合は当技術分野では周知の用語で、単に、冗
長なノードと結合がミニRETEから除去されていることを
意味する。併合プロセスのステップは、矢印200で示す
ように通常通り開始される。まず、マシン・ステップ20
1で、検査すべきミニRETEノードが、取り出されてコン
ピュータの処理記憶部(図示せず)に入れられる(取り
出されたノードは、検査される「現」ノードである)。
併合プロセスは、ボトム・ノードからミニRETEを登行す
ることによって始まる。「登行」という用語は、プログ
ラムが、一番下のノードから始めて次々に論理的により
高いノード、すなわちミニRETE中の先行ノードへとノー
ドを走査することを意味する。マシン・ステップ201
で、(プロダクション・ノードやマッチ・ノードなど)
ミニRETEノードのボトム・ノードが取り出される。ミニ
RETEの登行はトップ・ノードに達するまで続く。トップ
・ノードに達すると、既存RETEまたは主RETE内の既存ノ
ードと併合される一番下のミニRETEノードを見つけるた
め、ミニRETEのトップ・ノードから始まるミニRETEの走
査が、下方に向かって行なわれる。併合テストは、
(1)併合テストが必要でなくなるか、また(2)(マ
シン・ステップ211及び212で)ミニRETEのボトム・ノー
ドに出合うまで続く。
走査されるミニRETEノードが2入力ノードである場合、
ノードのLHS先行ノードが最初に検査される。マシン・
ステップ202で、直接LHS先行ノードが存在するか否かを
確かめるために、ノード・タイプ(たとえば、フィール
ド・タイプ60または67)が検査される。ベータ・ノード
がLHS先行ノードを有する(ステップ202でイエス)場
合、マシン・ステップ203で、PLP71に記憶されたアドレ
ス・ポインタを用いてその先行ノード・データ構造が得
られる。1入力ノードの場合、ステップ204及び205(ス
テップ205は先行ノードを取り出す)で、トップ(クラ
ス)・ノードに出会うまで登行プロセスが続く。この登
行の間、後のステップ210で登行元のノードを見つける
ことができるように、登行のノードが、スタックまたは
類似のデータ構造中にプッシュされる。1入力ノードの
入力はRHS入力(先行)と呼ばれることに留意された
い。ノードがRHS入力のみを有する場合、マシーン・ス
テップ204で、PHS先行ノードがトップ・ノードであるか
どうかを調べるためにテストが行なわれる。ノードがト
ップ・ノードであるかどうかは、そのタイプ・フィール
ド(第3図)を読み取ることによって決定される。好ま
しい実施例では、トップ・ノードはアルファ・ノードと
同じデータ構造58を有する。タイプ・フィールド60は入
力(クラス・ノードを含む)ノードを指示し、PPREDフ
ィールド61はアドレス・ポインタの代りにクラス名また
は識別を記憶するというのがその違いである。現在ノー
ドがトップ・ノードでない場合、トップ・ノードに達す
るまで、ステップ205を用いて登行プロセスが繰り返さ
れる。
一方、ノードがトップ・ノードである場合は、ステップ
206では、同じクラスの既存の主RETE中のトップ・ノー
ドを識別するための試みが行なわれる。
ノード併合は、RETEノードを比較するための周知のアル
ゴリズムを用いて決定される。Tの場合に併合が成功し
たことを示すフラグが生成される(そうでない場合はNI
L)。おそらく多くの後続ノードのうちで、そのノード
を通じて現ノードが走査される場合、そのノードの後続
ノードは以前の後続ノードと呼ばれる。その先行ノード
の併合状態を示すフラグがその以前の後続ノードに渡さ
れる。マシン、ステップ206で、主RETEのトップ・ノー
ド21A以下が、ミニRETEと併合できるかどうか走査され
る。走査中の一連のノード比較を累積的に表すマシン・
ステップ206で、既存の主RETE中で併合可能なトップ・
ノードを見つける試みが失敗した場合、ミニRETEノード
とどの主RETEノードの間でも併合は見つからなかったこ
とになる。したがって、マシン・ステップ207では、ミ
ニRETEトップ・ノードが、第1図のノード41などの新し
い入力ノードとして既存のRETEに加えられる。さらに、
ノード41を指すアルファ・シナプス・ノードが生成さ
れ、この併合に関するアルファ・シナプス・ノードのリ
ストに加えられる。これは、重複シナプス・ノードの生
成を防ぐための前記の到達可能性の制限を受ける。同時
に、併合検査が停止したことを知らせるため、フラグNI
Lが、以前の後続ノードに渡される。既存のRETE内で併
合可能なトップ・ノードを見つけるのに成功した場合、
最終併合ノードを見つけるためにさらに併合テストが必
要であることを知らせるフラグTがその以前の後続ノー
ドに渡される。
ノードの併合が可能かどうか調べるための各テストが、
マシン・ステップ210で、現ノードの後続ノードから開
始される。ミニRETEのベータ部を捜査する際、まず各RE
TEノードのLHS入力が分析され、次いで各ミニRETEノー
ドのRHS入力がマシン・ステップ202及び214と同様に分
析される。LHS及びRHS入力の両方が(第13図のマシン・
ステップ231で)主RETEノードと併合される場合、ステ
ップ216で、検査されるミニRETEノードが主RETEと併合
されているかどうかテストされる。
ミニRETEノードが主RETEノードに併合されている場合、
現ノードより上に位置するミニRETE内のすべての先行ノ
ードが適切な主RETEノードと併合されることを暗示して
いる。併合されているかどうか検査されるミニRETEノー
ドに対する主RETEまたは既存RETE候補ノードという用語
(ミニRETEのトップ・ノード以外は)、ミニRETE内の検
査されるノードの対応する直接先行ノードと併合されて
いる、直接先行ノードの後続ノードである主RETEを意味
する。
ステップ214で、検査されるノードの先行ノードである
さらに多くのミニRETEノードを、主RETEノードと併合さ
れているかどうか検査すべきかどうかを決定する。YES
の場合、ステップ215を含む論理経路をたどり、そこ
で、現在検査されているミニRETEノードよりも1ステッ
プ上の(ミニRETEのボトム・ノードからさらに離れてい
る)ミニRETEノードについてステップ202−213を繰り返
すために、別のノードが取り出される。今説明した繰返
しは、上記の2つの終了条件の1つが満足されるまで反
復される。マシン・ステップ216で、検査されたミニRET
Eノードが主RETEノード候補ノードと併合されているか
どうかがテストされる。併合アルゴリズムは、あるノー
ドのすべての先行ノードが最初にうまく併合されない限
りそのノードが併合されないようにする。
併合テストからの併合マークの値が、前に定義したその
以前の後続ノードに伝播される。マシン・ステップ217
でノード併合が見つからない場合は、ステップ209で併
合マークがNILに設定される。ステップ209に通じる経路
219は便宜上2つの部分に分けて示されている。ステッ
プ217で併合マークがTに等しい場合(YES条件)、ステ
ップ208以下が繰り返される。
併合テストからのシナプス・ノードの生成を詳しく示し
たマシン動作図を第13図に示す。第13図はまた、そのよ
うなミニRETEノードを既存の主RETEノードと併合するこ
とが可能かどうかをテストするために1入力ノード及び
2入力ノードを扱い、次いで併合が見つかったときはい
つでもそれらのノードを併合する際に使用されるマシン
・ステップの詳細も示す。経路216には、併合と指示さ
れた各ステップなど、前記のマシン動作図の様々な所か
ら入ることが可能である。第12図と第13図は、マシン・
ステップ208、209、244、246などに、併合テストの結果
をTまたはNILのいずれかで表した併合マークを示す。
併合マークTは、ミニRETE内の主RETEノードとのノード
併合が可能であることを意味し、それがNILであれば併
合テストの失敗を表す。したがって、併合マークがNIL
の場合、ミニRETEのボトム・ノードへの下向きのノード
走査を行なう間に、併合テストはもはや必要でない。
第13図のマシン・ステップ230で、ミニRETEノードがそ
のタイプによって1力ノードまたは2入力ノードに分類
される。ノードが1入力ノードである場合、そのRHS先
行ノードが併合マークとしてTを渡すたびに、ノード併
合がテストされる(ステップ238)。そうである場合、
その現ミニRETEノードが主RETEノードと関連してテスト
され、それらが併合できるかどうか検査される。マシン
・ステップ240で、併合テストが2つのノードが併合可
能である(“NO"と記した出口に相当する)ことを示し
た場合には、ミニRETEノードはまだ完全には併合されて
いない可能性があり、したがって併合テストの結果Tを
以前の後続ノードに送ることによって、さらに併合テス
トが行なわれる(ステップ243)。この時点で、併合テ
ストに合格したノードのタイプがアルファ配布ノードで
ある場合、ミニRETE内の先行ノードからこのノードへの
正方向ポインタが正しい突合せ結果が得られるように削
除される。一方、それらのノードが併合不能である(24
0で“YES"と記した出口に相当する)場合には、先行ミ
ニRETEノードは、ボトム・ノードまたは出力ノードへ向
かうミニRETEのこの部分に対するノード鎖中の最後併合
可能ノードであり、最終併合ミニRETEノードと呼ばれ
る。この時点で、予め存在する主RETEノードと、主RETE
ノードとうまく併合されなかったミニRETEの非共用部分
との間の接続点を記録するためのシナプス・ノードが作
成される。マシン・ステップ241で、先行ノードが関連
する結果メモリ情報を持っているかどうかがテストによ
って決定される。これは、たとえば、主RETE中の先行ノ
ードがアルファ配布ノードであるときに起こる。関連す
る結果メモリに持っていない場合には、ステップ242
で、アルファ・シナプス・ノードが作成される。関連す
る結果メモリを持っている場合には、ベータ・シナプス
・ノードが作成される。
2入力ノードは、マシン・ステップ231でLHS及びRHS先
行ノードの両方が併合マークTを渡す場合にのみ、併合
テストを受けることができる。2入力ノードの併合テス
トは、1入力ノードの場合と同じである。1入力ノード
では、テスト中のミニRETEノードが主RETEノードと併合
可能である場合、併合が見つかる。
2入力ノードの場合には、ノード併合と同様に別の条件
も満足すべきである。この条件とは、テスト中のノード
とミニRETE内のそのLHS及びRHS先行ノードとの関係が、
主RETE中のそれらに相当するノードと矛盾しないという
ものである。マシン・ステップ235で、このような併合
テストが実行される。併合テストが成功した場合、マシ
ン・ステップ236及び244に示すように、最大の作用を実
現するために、さらに後続の併合テストが必要である。
一方、併合テストが失敗した場合、前記のようにRETE併
合が起こり、1組のベータ・シナプス・ノードと共に
(必要に応じて)併合リンクが作成される。ミニRETE中
の2入力ノードでは、2つの先行ノードから渡された併
合マークがマシン・ステップ232及び243におけるように
T及びNILである場合、Tフラグを渡すミニRETE先行ノ
ードは最終的に併合可能である。したがって、1組のベ
ータ・シナプス・ノードと共に併合リンクもマシン・ス
テップ237で作成される。
ミニRETEノードが最終併合可能であると確認されると、
前記の併合切断及び併合リンクが作成される。同時に、
シノプス・ノードが作成される可能性がある。しかしな
がら、誤った突合せ結果が得られないようにするため
に、シナプス・ノードを作成する前に、マシン・ステッ
プ237及び242で、いくつかのテスト(図示せず)が必要
である。新しいアルファ・シナプス・ノードは、それが
既存のアルファ・シナプス・ノードの1つと同じでない
限り、作成される。同様に、ミニRETEが既存のアルファ
またはベータ・シナプス・ノードへの後続ノードである
場合、それは主RETEノードに併合されるが、ベータ・シ
ナプス・ノードは作成されない。そうでない場合は、併
合リンクとシナプス・ノードが作成される。併合プロセ
スの目的の1つは、正しい1組のシナプス・ノードを得
ることであることを想起されたい。「正しい1組」とい
う用語は、オーバーラップする後続ノードも、ミニRETE
から追加または接合された後続ノードも持たない最小数
のシナプス・ノードが作成されることを意味する。
要求主導型パターン突合せの最終段階は、接合されたRE
TEの更新である。規則LHS突合せパターンや要求時非反
復使用パターンの更新とは異なり、突合せ、要求時突合
せ反復使用の更新は、最初の更新を除き、トークン・プ
ッシュ動作の開始前に、要求時接合RETEのノード中のす
べてのメモリをクリアする事前処理を必要とする。(こ
れは1つの実施例にすぎず、他の実施例では、たとえば
シナプス・ノードにトークン変更を蓄積し、それらの変
更を要求時RETEの非共用部分にプッシュすることに留意
されたい。)要求時パターンのための接合RETEは、その
後、セーブされたシナプス・ノードを用いて更新され
る。接合されたRETEの更新は、前記の関連特許出願明細
書にさらに詳しく記載されているように、汎用RETE更新
原理を用いて実現することができる。汎用更新アルゴリ
ズムを適用する際、ベータ・ソース・ノードからトーク
ン(またはアルファ・シナプス・ノードからのWME)の
送出順序は重要ではない。
前記の関連特許出願明細書に記載された汎用更新法に代
わる方法として、シナプス・ノードによって表される特
別な場合を利用する代替更新アルゴリズムを使用しても
よい。この最適化された更新アルゴリズムの手順は、従
来の汎用更新でアルゴリズムと比べて時間及びスペース
の点でより効率的である。
最適化されたアルゴリズムは、一般に場合に比べて次の
ような制約によって使用可能になる。まず、ソース・ノ
ードは「更新」トークンのみを含み、「最終仕上げ」ト
ークンを持たない。更新トークンのは、メモル・ノード
によって受け取られたが、まだ受取り側メモリ・ノード
の後続ノードにプッシュまたは伝播されていないノード
である。最終仕上げトークンとは、メモリ・ノードによ
って受け取られ、少なくとも1つの後続(直接後続ノー
ドでも、介在する後続ノードを伴う遠隔後続ノードでも
よい)メモリ・ノードを含む後続ノードにプッシュされ
たノードである。次に、実施される操作は追加であり、
修正や除去(削除)ではない。最適化されたアルゴリズ
ムは、2つの段階、すなわちベータ更新段階とその後の
アルファ更新段階で、延期RETE部分を更新する。
ベータ更新では、右ソース・ノードに記憶されたすべて
のトークンがドレイン・ノードに送出されない。すなわ
ち前記の関連特許出願明細書に記載されているように、
「シャドウ」されない。そして、各トークンごとに個別
に行なわれる汎用更新アルゴリズムの最初の2ステップ
が削除される。接合されたRETEの更新は、トークン送出
処理の特定の順序を用い、ドレイン・ノードのいわゆる
「昇順」走査を使って、汎用更新アルゴリズムの最終ス
テップを実行することによって行なわれる。トークン送
出順序は、前記の関連特許出願明細書に詳しく記載され
ているように、ドレイン・ノード中の到達可能性によっ
て決定される。あるドレイン・ノードが別のドレイン・
ノードから下向きで到達可能な場合は、前者のドレイン
・ノードが最初に処理される。ミニRETEの併合中に作成
されたドレイン・ノードの順序は、その昇順と同じであ
る。したがって、併合を決定するための処理の副次効果
として、余分の走査なしで、ドレイン・ノードの順序づ
けが得られる。昇順の更新では、互いに到達可能なノー
ドのサブセット中のより低い(ボトムまたは出力ノード
に最も近い)ドレイン・ノードが、より高いノードより
先に処理される。いくつかのドレイン・ノードの間に到
達可能性の関係がない場合には、これらのドレイン・ノ
ードの処理順序は任意である。ドレイン・ノードが最適
化された更新アルゴリズムのそのステップで処理される
とき、(LHS入力に)接続されたソース・ノードは、そ
の関連する結果メモリ中にあるすべてのトークンを、AD
Dトークンとしてドレイン・ノードに送出する。ベータ
更新の後、何らかのアルファ・シナプス・ノードが併合
プロセス中に作成された場合、アルファ・シナプス・ノ
ードによって指されるアルファ・トップ・ノードに対応
するWMEが、アルファ・シナプス・ノードに関連するア
ルファ・トップ・ノードに送られ、それによってそのト
ップ・ノードに接続されたすべての後続ノードに任意の
順序で送られる。各個別ノードでの更新は、従来技術の
場合と同様である。
【図面の簡単な説明】
第1図は、本発明によるパターン突合せネットワーク併
合を示す、付属データ構造を伴うRETEの概略図である。 第2図は、第1図に示したネットワークの併合プロセス
で実施されるステップを示す簡略化した流れ図である。 第3図は、第2図に示した併合プロセスと共に使用され
る簡略化した1組の制御データ構造の構成図である。 第4図及び第5図は、従来技術で実施されたパターン突
合せ規則ネットワークのRETEへの併合を示す図である。 第6図及び第7図は、ミニRETEネットワークの自己併合
を示す図である。 第8図及び第9図は、本発明のネットワーク併合切断ス
テップ及びリンク・ステップを示す図である。 第10図は、第1図に示したパターン突合せネットワーク
用に作成されたシナプス・ノードの到達可能性特性を示
す図である。 第11図は、第1図に示したRETEのための、RHS併合プロ
セスのベータ・シナプス・ノードの結果と追加のノード
・ポインタを示す図である。 第12図及び第13図は、様々なタイプのRETE併合を実施す
るために使用可能なマシン動作を簡略形で示すマシン動
作図である。 10……RETE、11……作業用記憶域、16……データ域、18
……ミニRETE、20……ルート・ノード、21……RETE入力
ノード、22……アルファ・ノード、24……アルファ配布
ノード、25……ベータ・ノード、26……出力ノード。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】パターン突合せ動作において先行ノードか
    ら後続ノードに向かって順次走査がなされる複数のノー
    ドをそれぞれが有する、第1のパターン突合せネットワ
    ークに第2のパターン突合せネットワークを併合する方
    法であって、 前記第1及び第2のパターン突合せネットワークを比較
    して、両ネットワーク間で1または複数の同じノードを
    識別するとステップと、 上記ステップにより識別された前記第2のパターン突合
    せネットワークの識別ノードを、前記第1パターン突合
    せネットワーク上の対応する識別ノードに併合し、該第
    2のパターン突合せネットワークの識別ノードの後続ノ
    ードを、併合先の該第1のパターン突合せネットワーク
    の識別ノードの後続ノードとして接合するステップと、 上記第1のパターン突合せネットワークにおいて、後続
    ノードとなる上記第2のパターン突合せネットワークの
    ノードについてのポインタ手段を設定するステップとを
    含む、 パターン突合せネットワークの併合方法。
JP1294076A 1988-11-14 1989-11-14 パターン突合せネットワークの併合方法 Expired - Lifetime JPH0778739B2 (ja)

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 JPH02224127A (ja) 1990-09-06
JPH0778739B2 true 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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2536567B2 (ja) * 1987-12-17 1996-09-18 株式会社日立製作所 双方向推論の高速処理方式
DE68928782T2 (de) * 1988-12-14 1998-12-24 Sony Corp Datenverwaltungssystem
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
WO2001025860A1 (en) * 1999-10-05 2001-04-12 Togethersoft Corporation Method for generating 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)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
JPH02224127A (ja) 1990-09-06
EP0369700A2 (en) 1990-05-23
US4956791A (en) 1990-09-11
EP0369700A3 (en) 1992-09-02

Similar Documents

Publication Publication Date Title
EP0314650B1 (en) Method for optimized rete pattern matching in pattern-directed, rule-based artificial intelligence production systems
US5210837A (en) Methods and apparatus for transforming machine language program control into high-level language constructs by manipulating graphical program representations
JP2534360B2 (ja) 接続方法、ノ―ド接続方法、デ―タ処理方法、及び木内にノ―ドを挿入する方法
US5634098A (en) Method and apparatus for environment-variable driven software testing
US5159662A (en) System and method for building a computer-based rete pattern matching network
US8346697B2 (en) Direct construction of finite state machines
US4924408A (en) Technique for compilation of knowledge bases
JPH0778739B2 (ja) パターン突合せネットワークの併合方法
US4951225A (en) Updating pattern-matching networks
WO2009102903A2 (en) Systems and methods for information flow analysis
Bunke et al. An efficient implementation of graph grammars based on the RETE matching algorithm
US20040154009A1 (en) Structuring program code
US5263127A (en) Method for fast rule execution of expert systems
JP2007511834A (ja) リバーシブルなデザイン・ツリーの変換のための方法とシステム
US5179632A (en) Fast method for a bidirectional inference
US5341507A (en) Data drive type information processor having both simple and high function instruction processing units
US20030233640A1 (en) Structuring program code
Scarpelli et al. Modeling fuzzy reasoning using high level fuzzy Petri nets
US6014514A (en) System for generating and graphically displaying call stack information for processing elements in a parallel processing system
Perlin Topologically traversing the Rete network
JPH05341999A (ja) 実時間で状態を表わす網状判断回路網
Folkegård et al. Dynamic code generation for realtime shaders
JPH11232273A (ja) 文書処理可能性判定装置、文書処理装置、文書処理可能性判定プログラムを記録したコンピュータ読み取り可能な記録媒体及び文書処理プログラムを記録したコンピュータ読み取り可能な記録媒体
EP1361510A1 (en) Improvements in structuring program code
EP1465068A1 (en) Improvements in structuring program code