×この技術を簡単クリック査定この機能をご利用いただくには、会員登録(無料)が必要です。出願した特許の牽制数、引用された数などを知る事ができます。気になる技術や特許をブックマークしておけば、いつでも後から読むことができます。後で印刷するために、公報をPDFでダウンロードできます。会員登録してastamuseを使えば、もっと簡単に便利にお使いいただけます。会員登録(無料)「astamuse」は世界中の挑戦したい社会課題に挑戦し、未来を創る人のプラットフォームです。知識ベースシステム※この項目の情報は公開日時点(1994年2月10日)のものです。行う装置に関し、コンシューマ機構のメモリ所要量と、コンシューマ待ち行列操作の処理時間を共に減少できる仮説推論処理方法を目的とする。構成システムに再評価用スタック72を設け、コンシューマ70の待ち行列71を、単方向リンクのみで形成し(処理73)、該再評価を要するコンシューマを検出した場合には、当該コンシューマ70の待ち行列71上の接続を保持したまま、該コンシューマを再評価用スタック72に登録し(処理74)、該注目環境ごとの該コンシューマ評価処理(処理75)では、待ち行列71の該リンクに従ってすべてのコンシューマ70の該評価を行った後、再評価用スタック72に登録されたすべてのコンシューマ70を順次再評価スタック72から取り出して評価し、該起動可能コンシューマには、起動したことを示す所定の状態表示を行うように構成する。仮説推論では、いくつかの仮説の論理積集合を環境と呼び、1又は複数の環境の論理和について、その環境が真のとき成り立つデータを前提として、ある知識を適用して結果を推論するのであるが、その場合にATMSでは、各特定の推論動作が、その前提データすべてが、そのとき注目している環境において成立するときに初めて実行されるように制御するために、コンシューマ機構を用いる。与えられた知識について、前提データに対してコンシューマと呼ぶデータ構造を作成しておき、現在の注目環境(別途適当な戦略で設定される真と仮定された仮説の集合)に対して前提データがすべて成立するコンシューマを検索し、それを起動可能コンシューマとして取り出して推論処理を行う。図2はATMSによる仮説推論装置の構成例を示すブロック図であり、問題解決部1と無矛盾性管理部2とからなる。問題解決部1において、制御部3は注目環境を決定し、起動待ちの各コンシューマについて、すべての前提データが注目環境で成立しているか評価し、起動可能コンシューマを検出するごとに推論部4に渡す。推論部4は、起動可能コンシューマについて、コンシューマに設定されているポインタで指定される知識を、知識管理部5に保持する知識から取り出して推論を実行する。その推論によって、新しいデータが推論されれば、無矛盾性管理部2のノード管理部6に通知し、ノード管理部6が新しいデータのためのノード(後述するデータのためのデータ構造)を生成し、コンシューマ管理部7が知識管理部5に保持する知識を参照することにより、そのデータを前提とする知識について、新しいコンシューマを生成する。推論により、新しい正当化(後述するようにして関係付けられる、データ間の前提/帰結の関係)が判明したときは、ラベル更新部8を起動してラベル更新処理を行い正当化を伝播する。推論によって矛盾が判明した場合には、矛盾管理部9を起動して、正当化の調整と呼ぶ処理を行うが、詳細は省略する。ここで、正当化の伝播とは、後述のように、その正当化で確定した、データが成立する環境を、該当ノードの情報に追加し、そのデータを前提とするデータがある場合に、それらのデータのノードにも新たな正当化を波及させるラベル更新部8の処理である。なり、データ項にデータが格納され、ラベル項にはデータ項のデータが成立する環境の論理和が格納される。正当化項と帰結項とは、他のノードとの前提/帰結関係を指示する項であるが、ノード間の前提/帰結関係は次に述べる正当化のデータ構造(以下に単に正当化という)を介して指示するので、正当化項には、このデータが導かれた前提となった他のデータのノードを指示するために、各正当化を指示するポインタが格納され、帰結項には、このデータを前提として導かれた他のデータのノードを指示するために、各正当化を指示するポインタが格納される。図4(b)は、正当化のデータ構造であって、前提項と帰結項からなり、前提項には前提となったノード(即ち前記の帰結項で、この正当化を指示しているノード)すべてのアドレスが格納され、帰結項には前提項で指示するノード集合からの帰結データを表すノード(即ち前記の正当化項で、この正当化を指示しているノード)のアドレスが格納される。図5は以上のデータ構造によって推論結果が表現されている例を示す図であって、ノードは、先ず網かけ部分が無い状態では、環境「A&B」(仮説Aと仮説Bの論理積)の下でデータ「X=1」が成立することを表し、ノードは環境「C」でデータ「Y=2」が成立することを表し、ノードは環境「D」でデータ「X=2」が成立することを表し、ノードは環境「E」でデータ「Y=1」が成立することを表す。正当化は、ノードとノードとを前提として、ノードが表しているデータ「Z=3」が導かれることを表し、正当化は、ノードとノードとを前提として、同じくノードのデータ「Z=3」が導かれることを表す。従ってノードのラベル項には、前記ラベル更新部8によるラベル更新処理によって、正当化に対応する環境「A&B&C」と、正当化に対応する環境「D&E」とが、データ「Z=3」が成立する環境として表現される。このような関係がある場合に、既存のノードで表すデータが別の推論によっても再び導かれると、ラベル更新処理によって、そのノードの正当化項とラベル項がそれに従って拡張するように更新すると共に、更に正当化のポインタを使って関連するノードのラベル項へ更新を伝播する。図5が前記説明のように表現されている場合に、推論部4によってノードのデータ「X=1」が、環境「F」の下でデータ「W=1」の成立を示すノードと知識「X+W=2」から導かれると、正当化が生成されて、ラベル更新部8によってノードのラベル項に環境「F」が追加され、更に正当化がノードまで伝播されてラベル項に環境「C&F」が追加される。以上の処理は前記のように、コンシューマ管理部7が生成するコンシューマから、制御部3が検索する起動可能コンシューマに基づいて、推論部4、ラベル更新部8等によって実行される。図6(a)はコンシューマのデータ構造を示す図であって、各コンシューマは前提項と知識項を有し、コンシューマ間に双方向リンクを設けて待ち行列を構成し管理するためにnext項とprev項を持つ。前提項は推論の前提となるノードを直接又は間接に指示するポインタを保持し、知識項は推論に使用する知識を指定するために、知識管理部5に保持する知識のアドレスを保持する。図6(b)は、(a)に示したコンシューマによって前提のノードを指示する一例であり、前記の図5によって説明したノードに知識「X+W=2」を適用するためのコンシューマとノードとの接続構造である。このコンシューマは、注目環境が環境Fを論理的に包含することを制御部3で判定されたとき、起動可能コンシューマとなり、推論部4の推論が起動されて図5に示す正当化が作られて、コンシューマは削除される。図6(c)は、前記図5のノードとノードを前提として、知識「Z=X+Y」を適用するためのコンシューマの接続構造である。このように複数のノードを前提とする場合には、図示のように一時的にテンポラリノードを設けて、コンシューマはそれを前提ノードとして指示する。テンポラリノードには、前提ノードがすべて成立する環境(この例の場合、環境「A&B&C」)を示し、正当化を介してノードと接続する。この場合、注目環境がテンポラリノードに示す環境を論理的に包含するときにコンシューマは起動可能とされ、推論の結果新しいデータ「Z=3」が導かれる結果、ノードが生成されて、図5に示すような接続構造ができて、コンシューマは削除される。以上のように制御部3の主要な機能は、予め与えられている戦略に基づいて注目環境を逐次決定し、注目環境を決定するごとに、待ち行列の全コンシューマを順次調べて、その注目環境によって起動可能か判断し、起動可能のコンシューマを推論部4に渡すことである。このように、制御部3は注目環境ごとに、すべてのコンシューマについて起動可能か否かを1回は評価し、起動可能と判断したコンシューマは待ち行列から削除して推論処理に渡される。起動できないと判断されたコンシューマについては、その後に起動可能とした他のコンシューマの推論の結果によって行われるラベル更新処理による正当化の伝播によって、前提ノードの環境が追加されることにより、同じ注目環境で「起動可能」に変化する可能性がある。従って、ラベル更新処理で環境を変化させたとき、そのノードが前提となっているコンシューマがあった場合には、そのコンシューマについて、既に評価が行われていたとしても、必ず再評価をする必要があり、そのために、そのコンシューマがその時点で必ず未処理のコンシューマ群に入るように、待ち行列上の順位を変えることとし、そのコンシューマを待ち行列の末尾に移動する。前記のようにコンシューマの待ち行列のリンクを双方向にしているのは、このように再評価のために、待ち行列の途中のコンシューマを行列の末尾につなぎ変える処理を、行列の先頭から走査して当該コンシューマの前位のコンシューマを探索しないでもできるようにするためである。図7はコンシューマの待ち行列の構造を示す図であり、待ち行列は先頭にダミーのコンシューマをヘッダとして置き、行列上の各コンシューマはnext項で次位のコンシューマを指示し、prev項で前位のコンシューマを指示し、新しいノードは順次行列の末尾に追加されるものとし、先頭のヘッダのprev項及び末尾コンシューマのnext項の値は所定の無効表示値(以下においてNULLという)にする。行列の操作のためのポインタとして、先頭のヘッダを指示するhead、現処理対象のコンシューマを指示するcurrent、currentの指示するコンシューマの直前位のコンシューマを指示するprev、及び末尾コンシューマを指示するtailを設ける。図8〜図10は、コンシューマの行列を操作する処理を必要とする、制御部3、ラベル更新部8及びコンシューマ管理部7の処理の流れである。以後の処理の流れの説明において、「aa.bb.cc」のような表現は、aaで指示されるブロックのbb項で指示されるブロックのcc項の内容を表すものとする。図8は制御部3の処理の流れであって、先ず処理ステップ10で所定の条件で結論を得ていないことを識別した場合に1つの注目環境についての処理に入り、処理ステップ11で所与の条件により注目環境を決定し、処理ステップ12で待ち行列のポインタheadの内容をポインタprevに設定して各コンシューマについての処理を開始する。prev.next(即ちprevで指示するコンシューマのnext項の内容)を設定し、処理ステップ14でcurrentがNULLか識別し、それがNULLなら行列の末尾まで処理を終わったので、現注目環境についての処理は終了する。currentがNULLでなければ、処理ステップ15でcurrentの指示するコンシューマが起動可能か、即ちそのコンシューマの指示するすべての前提ノードを成立させる環境が現注目環境に含まれるかを判定し、含まれなければこのコンシューマは起動できないので、処理ステップ16でポインタprevにcurrentの値を設定して処理ステップ13に戻り、次のコンシューマの処理に移る。指示するコンシューマを渡して推論部4を起動する。そこで、推論部4が推論を実行し、その結果により前記のようにノード管理部6、ラベル更新部8又は矛盾管理部個が起動され、必要な場合にはコンシューマ管理部7が動作した後、制御部3へ制御が戻されるので、制御部3は処理ステップ13で引き続いて次のコンシューマの処理を始める。図9はラベル更新部8の処理の流れであって、ラベル更新部8は推論部4から更新すべき正当化Jを指定して起動されると、処理ステップ20で変数nodeに正当化Jの帰結項の値を設定し、処理ステップ21でnodeで指示するノードのラベル項に、正当化Jの前提項で指示する全ノードの環境の論理積を追加するように更新する処理をする。すべて処理するまで、以下の処理を繰り返す。node.帰結の指示する未処理要素から一要素のアドレスを変数Cに設定し、処理ステップ25でCの指示する要素がコンシューマか否か識別し、コンシューマでない場合は正当化であるので、処理ステップ26に進んでその正当化を再び正当化Jとして本ラベル更新処理を再帰的に実行する。コンシューマである場合には、前記の理由によりそのコンシューマの再評価が必要になるので、そのコンシューマを行列の末尾に移動させるために、先ず処理ステップ27、28で行列から外し、処理ステップ29〜32で末尾につなぐ。設定して、Cで指示するコンシューマの前位と次位のコンシューマが直接リンクするように変更することによって、Cを行列の現位置から除く。設定し、処理ステップ30でtailの値をC.prevに設定し、処理ステップ31でC.nextの値をNULLにし、最後にtailをCの値にすることにより、Cのコンシューマを行列の末尾にする。以上によりnode.帰結の指示する未処理要素の1個ごとの処理を終わる。図10はコンシューマ管理部7の処理の流れであり、ノード管理部6が新しいノードnを渡してコンシューマ管理部7を起動すると、知識管理部5が保持する知識を調べてnが前提となる知識が得られるごとに処理ステップ41以降の処理を行ってコンシューマを生成し、処理ステップ40で識別して全知識を調べるまでこの処理を繰り返す。ノードnのデータを前提とする知識があると、処理ステップ41でそのアドレスを変数Kとし、処理ステップ42でKの知識の前提となるノードが1個か複数かで処理を分ける。前提が1個の場合には、前記図6(b)によって説明したような構造にすればよいので、処理ステップ43で新しいコンシューマCを作って、待ち行列の末尾に追加し、処理ステップ44でC.知識に知識のアドレスKを設定し、処理ステップ45でC.前提にnを設定してコンシューマから前提ノードを指示させ、処理ステップ46でn.帰結にCを追加して、前提ノードからコンシューマを指示するリンクを作って、その知識についての処理を終わる。知識の前提が複数ある場合には、更に複数の前提ノードからなる前提の組が複数組ある場合があるので、処理ステップ47で識別して、そのようなすべての前提の組について、処理ステップ48以降の処理を繰り返して、それらの組ごとにコンシューマを生成する。処理ステップ48でKの前提をなすノードの1組を検索すると、処理ステップ49で正当化Jを生成して、その前提項で前提ノードを指示し、各前提ノードの帰結項から正当化Jを指示するリンクを作る。説明したテンポラリノードTを作り、処理ステップ51で前提ノードの環境の論理積をテンポラリノードに設定し、処理ステップ52で正当化Jの帰結項にTを設定し、処理ステップ53でテンポラリノードの正当化項にJを設定する。行う装置に関し、コンシューマ機構のメモリ所要量と、コンシューマ待ち行列操作の処理時間を共に減少できる仮説推論処理方法を目的とする。システムに再評価用スタック72を設け、コンシューマ70の待ち行列71を、単方向リンクのみで形成し(処理73)、該再評価を要するコンシューマを検出した場合には、当該コンシューマ70の待ち行列71上の接続を保持したまま、該コンシューマを再評価用スタック72に登録し(処理74)、該注目環境ごとの該コンシューマ評価処理(処理75)では、待ち行列71の該リンクに従ってすべてのコンシューマ70の該評価を行った後、再評価用スタック72に登録されたすべてのコンシューマ70を順次再評価スタック72から取り出して評価し、該起動可能コンシューマには、起動したことを示す所定の状態表示を行うように構成する。技術分野0001本発明は、スケジューリング、プランニング等を、必ずしも真であるか否か判定できていない仮説のデータに基づいて問題解決を行うための、仮説推論処理をコンシューマ機構を用いて実行する装置において、コンシューマの管理を改善した仮説推論処理方法に関する。0003仮説推論では、いくつかの仮説の論理積集合を環境と呼び、1又は複数の環境の論理和について、その環境が真のとき成り立つデータを前提として、ある知識を適用して結果を推論するのであるが、その場合にATMSでは、各特定の推論動作が、その前提データすべてが、そのとき注目している環境において成立するときに初めて実行されるように制御するために、コンシューマ機構を用いる。0004即ち、与えられた知識について、前提データに対してコンシューマと呼ぶデータ構造を作成しておき、現在の注目環境(別途適当な戦略で設定される真と仮定された仮説の集合)に対して前提データがすべて成立するコンシューマを検索し、それを起動可能コンシューマとして取り出して推論処理を行う。0005図2はATMSによる仮説推論装置の構成例を示すブロック図であり、問題解決部1と無矛盾性管理部2とからなる。問題解決部1において、制御部3は注目環境を決定し、起動待ちの各コンシューマについて、すべての前提データが注目環境で成立しているか評価し、起動可能コンシューマを検出するごとに推論部4に渡す。図20006推論部4は、起動可能コンシューマについて、コンシューマに設定されているポインタで指定される知識を、知識管理部5に保持する知識から取り出して推論を実行する。0007その推論によって、新しいデータが推論されれば、無矛盾性管理部2のノード管理部6に通知し、ノード管理部6が新しいデータのためのノード(後述するデータのためのデータ構造)を生成し、コンシューマ管理部7が知識管理部5に保持する知識を参照することにより、そのデータを前提とする知識について、新しいコンシューマを生成する。0008推論により、新しい正当化(後述するようにして関係付けられる、データ間の前提/帰結の関係)が判明したときは、ラベル更新部8を起動してラベル更新処理を行い正当化を伝播する。推論によって矛盾が判明した場合には、矛盾管理部9を起動して、正当化の調整と呼ぶ処理を行うが、詳細は省略する。0009ここで、正当化の伝播とは、後述のように、その正当化で確定した、データが成立する環境を、該当ノードの情報に追加し、そのデータを前提とするデータがある場合に、それらのデータのノードにも新たな正当化を波及させるラベル更新部8の処理である。なり、データ項にデータが格納され、ラベル項にはデータ項のデータが成立する環境の論理和が格納される。図40011正当化項と帰結項とは、他のノードとの前提/帰結関係を指示する項であるが、ノード間の前提/帰結関係は次に述べる正当化のデータ構造(以下に単に正当化という)を介して指示するので、正当化項には、このデータが導かれた前提となった他のデータのノードを指示するために、各正当化を指示するポインタが格納され、帰結項には、このデータを前提として導かれた他のデータのノードを指示するために、各正当化を指示するポインタが格納される。0012図4(b)は、正当化のデータ構造であって、前提項と帰結項からなり、前提項には前提となったノード(即ち前記の帰結項で、この正当化を指示しているノード)すべてのアドレスが格納され、帰結項には前提項で指示するノード集合からの帰結データを表すノード(即ち前記の正当化項で、この正当化を指示しているノード)のアドレスが格納される。図40013図5は以上のデータ構造によって推論結果が表現されている例を示す図であって、ノードは、先ず網かけ部分が無い状態では、環境「A&B」(仮説Aと仮説Bの論理積)の下でデータ「X=1」が成立することを表し、ノードは環境「C」でデータ「Y=2」が成立することを表し、ノードは環境「D」でデータ「X=2」が成立することを表し、ノードは環境「E」でデータ「Y=1」が成立することを表す。0015正当化は、ノードとノードとを前提として、ノードが表しているデータ「Z=3」が導かれることを表し、正当化は、ノードとノードとを前提として、同じくノードのデータ「Z=3」が導かれることを表す。0016従ってノードのラベル項には、前記ラベル更新部8によるラベル更新処理によって、正当化に対応する環境「A&B&C」と、正当化に対応する環境「D&E」とが、データ「Z=3」が成立する環境として表現される。0017このような関係がある場合に、既存のノードで表すデータが別の推論によっても再び導かれると、ラベル更新処理によって、そのノードの正当化項とラベル項がそれに従って拡張するように更新すると共に、更に正当化のポインタを使って関連するノードのラベル項へ更新を伝播する。0018例えば図5が前記説明のように表現されている場合に、推論部4によってノードのデータ「X=1」が、環境「F」の下でデータ「W=1」の成立を示すノードと知識「X+W=2」から導かれると、正当化が生成されて、ラベル更新部8によってノードのラベル項に環境「F」が追加され、更に正当化がノードまで伝播されてラベル項に環境「C&F」が追加される。図50019以上の処理は前記のように、コンシューマ管理部7が生成するコンシューマから、制御部3が検索する起動可能コンシューマに基づいて、推論部4、ラベル更新部8等によって実行される。0020図6(a)はコンシューマのデータ構造を示す図であって、各コンシューマは前提項と知識項を有し、コンシューマ間に双方向リンクを設けて待ち行列を構成し管理するためにnext項とprev項を持つ。前提項は推論の前提となるノードを直接又は間接に指示するポインタを保持し、知識項は推論に使用する知識を指定するために、知識管理部5に保持する知識のアドレスを保持する。図60021図6(b)は、(a)に示したコンシューマによって前提のノードを指示する一例であり、前記の図5によって説明したノードに知識「X+W=2」を適用するためのコンシューマとノードとの接続構造である。図5図60022このコンシューマは、注目環境が環境Fを論理的に包含することを制御部3で判定されたとき、起動可能コンシューマとなり、推論部4の推論が起動されて図5に示す正当化が作られて、コンシューマは削除される。図50023又、図6(c)は、前記図5のノードとノードを前提として、知識「Z=X+Y」を適用するためのコンシューマの接続構造である。このように複数のノードを前提とする場合には、図示のように一時的にテンポラリノードを設けて、コンシューマはそれを前提ノードとして指示する。図5図60024テンポラリノードには、前提ノードがすべて成立する環境(この例の場合、環境「A&B&C」)を示し、正当化を介してノードと接続する。この場合、注目環境がテンポラリノードに示す環境を論理的に包含するときにコンシューマは起動可能とされ、推論の結果新しいデータ「Z=3」が導かれる結果、ノードが生成されて、図5に示すような接続構造ができて、コンシューマは削除される。図50025以上のように制御部3の主要な機能は、予め与えられている戦略に基づいて注目環境を逐次決定し、注目環境を決定するごとに、待ち行列の全コンシューマを順次調べて、その注目環境によって起動可能か判断し、起動可能のコンシューマを推論部4に渡すことである。0026このように、制御部3は注目環境ごとに、すべてのコンシューマについて起動可能か否かを1回は評価し、起動可能と判断したコンシューマは待ち行列から削除して推論処理に渡される。0027しかし、起動できないと判断されたコンシューマについては、その後に起動可能とした他のコンシューマの推論の結果によって行われるラベル更新処理による正当化の伝播によって、前提ノードの環境が追加されることにより、同じ注目環境で「起動可能」に変化する可能性がある。0028従って、ラベル更新処理で環境を変化させたとき、そのノードが前提となっているコンシューマがあった場合には、そのコンシューマについて、既に評価が行われていたとしても、必ず再評価をする必要があり、そのために、そのコンシューマがその時点で必ず未処理のコンシューマ群に入るように、待ち行列上の順位を変えることとし、そのコンシューマを待ち行列の末尾に移動する。0029前記のようにコンシューマの待ち行列のリンクを双方向にしているのは、このように再評価のために、待ち行列の途中のコンシューマを行列の末尾につなぎ変える処理を、行列の先頭から走査して当該コンシューマの前位のコンシューマを探索しないでもできるようにするためである。0030図7はコンシューマの待ち行列の構造を示す図であり、待ち行列は先頭にダミーのコンシューマをヘッダとして置き、行列上の各コンシューマはnext項で次位のコンシューマを指示し、prev項で前位のコンシューマを指示し、新しいノードは順次行列の末尾に追加されるものとし、先頭のヘッダのprev項及び末尾コンシューマのnext項の値は所定の無効表示値(以下においてNULLという)にする。図70031又、行列の操作のためのポインタとして、先頭のヘッダを指示するhead、現処理対象のコンシューマを指示するcurrent、currentの指示するコンシューマの直前位のコンシューマを指示するprev、及び末尾コンシューマを指示するtailを設ける。0032図8〜図10は、コンシューマの行列を操作する処理を必要とする、制御部3、ラベル更新部8及びコンシューマ管理部7の処理の流れである。以後の処理の流れの説明において、「aa.bb.cc」のような表現は、aaで指示されるブロックのbb項で指示されるブロックのcc項の内容を表すものとする。図80033図8は制御部3の処理の流れであって、先ず処理ステップ10で所定の条件で結論を得ていないことを識別した場合に1つの注目環境についての処理に入り、処理ステップ11で所与の条件により注目環境を決定し、処理ステップ12で待ち行列のポインタheadの内容をポインタprevに設定して各コンシューマについての処理を開始する。prev.next(即ちprevで指示するコンシューマのnext項の内容)を設定し、処理ステップ14でcurrentがNULLか識別し、それがNULLなら行列の末尾まで処理を終わったので、現注目環境についての処理は終了する。0035currentがNULLでなければ、処理ステップ15でcurrentの指示するコンシューマが起動可能か、即ちそのコンシューマの指示するすべての前提ノードを成立させる環境が現注目環境に含まれるかを判定し、含まれなければこのコンシューマは起動できないので、処理ステップ16でポインタprevにcurrentの値を設定して処理ステップ13に戻り、次のコンシューマの処理に移る。指示するコンシューマを渡して推論部4を起動する。0037そこで、推論部4が推論を実行し、その結果により前記のようにノード管理部6、ラベル更新部8又は矛盾管理部個が起動され、必要な場合にはコンシューマ管理部7が動作した後、制御部3へ制御が戻されるので、制御部3は処理ステップ13で引き続いて次のコンシューマの処理を始める。0038図9はラベル更新部8の処理の流れであって、ラベル更新部8は推論部4から更新すべき正当化Jを指定して起動されると、処理ステップ20で変数nodeに正当化Jの帰結項の値を設定し、処理ステップ21でnodeで指示するノードのラベル項に、正当化Jの前提項で指示する全ノードの環境の論理積を追加するように更新する処理をする。すべて処理するまで、以下の処理を繰り返す。node.帰結の指示する未処理要素から一要素のアドレスを変数Cに設定し、処理ステップ25でCの指示する要素がコンシューマか否か識別し、コンシューマでない場合は正当化であるので、処理ステップ26に進んでその正当化を再び正当化Jとして本ラベル更新処理を再帰的に実行する。0041コンシューマである場合には、前記の理由によりそのコンシューマの再評価が必要になるので、そのコンシューマを行列の末尾に移動させるために、先ず処理ステップ27、28で行列から外し、処理ステップ29〜32で末尾につなぐ。設定して、Cで指示するコンシューマの前位と次位のコンシューマが直接リンクするように変更することによって、Cを行列の現位置から除く。設定し、処理ステップ30でtailの値をC.prevに設定し、処理ステップ31でC.nextの値をNULLにし、最後にtailをCの値にすることにより、Cのコンシューマを行列の末尾にする。以上によりnode.帰結の指示する未処理要素の1個ごとの処理を終わる。0044図10はコンシューマ管理部7の処理の流れであり、ノード管理部6が新しいノードnを渡してコンシューマ管理部7を起動すると、知識管理部5が保持する知識を調べてnが前提となる知識が得られるごとに処理ステップ41以降の処理を行ってコンシューマを生成し、処理ステップ40で識別して全知識を調べるまでこの処理を繰り返す。0045ノードnのデータを前提とする知識があると、処理ステップ41でそのアドレスを変数Kとし、処理ステップ42でKの知識の前提となるノードが1個か複数かで処理を分ける。0046前提が1個の場合には、前記図6(b)によって説明したような構造にすればよいので、処理ステップ43で新しいコンシューマCを作って、待ち行列の末尾に追加し、処理ステップ44でC.知識に知識のアドレスKを設定し、処理ステップ45でC.前提にnを設定してコンシューマから前提ノードを指示させ、処理ステップ46でn.帰結にCを追加して、前提ノードからコンシューマを指示するリンクを作って、その知識についての処理を終わる。図60047知識の前提が複数ある場合には、更に複数の前提ノードからなる前提の組が複数組ある場合があるので、処理ステップ47で識別して、そのようなすべての前提の組について、処理ステップ48以降の処理を繰り返して、それらの組ごとにコンシューマを生成する。0048即ち処理ステップ48でKの前提をなすノードの1組を検索すると、処理ステップ49で正当化Jを生成して、その前提項で前提ノードを指示し、各前提ノードの帰結項から正当化Jを指示するリンクを作る。説明したテンポラリノードTを作り、処理ステップ51で前提ノードの環境の論理積をテンポラリノードに設定し、処理ステップ52で正当化Jの帰結項にTを設定し、処理ステップ53でテンポラリノードの正当化項にJを設定する。図60050処理ステップ54で新しいコンシューマCを作って、待ち行列の末尾に追加し、処理ステップ55でC.知識に知識のアドレスKを設定し、処理ステップ56でC.前提にテンポラリノードのアドレスTを設定してコンシューマとテンポラリノードをリンクし、処理ステップ57でT.帰結にCを設定して、その前提の組についての処理を終わる。発明が解決しようとする課題0051前記のようにコンシューマは双方向リンクで待ち行列を作る構造になるので、各コンシューマに管理の目的のみのために2個のポインタを必要とし、比較的大きなメモリを必要とすると共に、行列の操作において双方向リンクを操作するための処理時間も多くなる。0052本発明は、コンシューマ機構のメモリ所要量と、コンシューマ待ち行列操作の処理時間を共に減少できる仮説推論処理方法を目的とする。課題を解決するための手段0053図1は、本発明の構成を示すブロック図である。図は仮説推論処理方法の構成であって、本発明を適用するシステムは、所与の仮説の論理積で表す環境について、該環境の論理和の下に成立するデータを示すノードを設け、該データを前提として所与の知識によって結論となるデータを推論する場合に、該知識と前提データ群との組合せごとにコンシューマ70を設け、コンシューマ70から当該知識と当該前提データの該ノードを指示し、コンシューマ70を待ち行列71に接続し、所定の注目環境ごとに、待ち行列71の先頭から各コンシューマ70の前提ノードの環境を順次評価し、当該注目環境によって、すべての該ノードの該環境が成立しているコンシューマ70を起動可能コンシューマとし、当該起動可能コンシューマについて、所定の推論処理を行い、待ち行列71から削除し、該推論処理の結果で該環境の論理和の内容が更新された該ノードを該前提とするコンシューマ70がある場合には、当該コンシューマを当該注目環境について再評価するシステムである。図10054第1の発明では、このシステムに再評価用スタック72を設け、コンシューマ70の待ち行列71を、単方向リンクのみで形成し(処理73)、該再評価を要するコンシューマを検出した場合には、当該コンシューマ70の待ち行列71上の接続を保持したまま、該コンシューマを再評価用スタック72に登録する(処理74)。0055該注目環境ごとの該コンシューマ評価処理(処理75)では、待ち行列71の該リンクに従ってすべてのコンシューマ70の該評価を行った後、再評価用スタック72に登録されたすべてのコンシューマ70を順次再評価スタック72から取り出して評価し、該起動可能コンシューマには、起動可能としたことを示す所定の状態表示を行う。0056第2の発明では、第1の発明の各コンシューマ70に、2値を表示するフラグを設けて、前記注目環境ごとのコンシューマ評価処理75の開始時に、すべての該コンシューマの該フラグが同一の一方の値を初期値として保持するようにし、該評価処理を行ったコンシューマ70の該フラグを他方の値に更新する。0057前記再評価用スタック72にコンシューマ70を登録する(処理74)場合には、当該コンシューマの該フラグが他方の値に更新されている場合のみ該登録を実行し、且つ当該フラグを該初期値に再設定する。0058本発明の仮説推論処理方法により、コンシューマの待ち行列を単方向リンクとするので、従来の各コンシューマから1個のポインタが不要になるので、その領域を省くか、又は他の情報の領域に転用することによって、システムの所要メモリ量を減少できる。0059行列を単方向リンクにした結果、再評価コンシューマを従来のように行列の末尾に移動する方法を採ると、当該コンシューマを行列から一旦外すために、行列の先頭から走査して、そのコンシューマの前位コンシューマを検索することが必要になり、処理時間を大幅に増加する。0060そこで本発明では、再評価用スタックを設けて、再評価するコンシューマは、行列上の移動を行うことなく、再評価用スタックにそのコンシューマのアドレスを登録し、コンシューマの評価では、行列を末尾まで処理した後、再評価用スタックに登録されているコンシューマの再評価を行うようにする。0061このようにすることにより、従来行っていたような、再評価するコンシューマの行列上の移動を双方向のポインタを操作して行う処理が、本発明では単にそのコンシューマのアドレスをスタックする処理に変わるので、処理時間を減少することができる。0062なお、以上の再評価用スタックへの登録によると、再評価を要すると判定した時点で、これから最初の評価が行われる順位にあるコンシューマもスタックされ、そのようになったコンシューマは不必要に2回処理対象となる。0063それでも、起動可能となったことを示す表示を参照することによって、再評価対象としないことを識別できるので論理的な不都合は生じ無い。第2の発明によるフラグをコンシューマに設けることができる場合には、そのフラグによって再評価用スタックへの登録要否を識別して、必要なもののみ登録するようにすれば更に効率よく処理することができる。0064図3(a)は本発明のコンシューマのデータ構造例を示す図であり、図6(a)で説明した従来のコンシューマのprev項が無くなっている。図3図60065図3(d)は(a)のコンシューマによって構成する待ち行列の例であり、単方向リンクで構成する。行列の操作のためのポインタ等は従来と同様として、ポインタhead、current、prev、及びtailを設ける。図30066又、本発明により、コンシューマの待ち行列と組み合わせて再評価用スタックを設け、後述のようにして再評価を要するコンシューマのアドレスをこのスタックに登録する。第2の発明におけるコンシューマの例であって、知識項の1ビットをフラグに使用し、後述のようにして再評価用スタックへの登録要否を識別するのに使用する。待ち行列は前記(d)と同様になる。図30068なお、このデータ構造を採るためには、知識を格納する領域のアドレス境界を工夫する等によって、知識を指示するアドレスを格納する場合のビット長を1ビット短縮できるようにする必要がある。示した構造を、図6(d)に示すように縮小することができる。図3図60070従って、テンポラリノードを設けるコンシューマが多くなるシステムの場合には、このようにラベル項を持つ構造のコンシューマを使用することによって、所要メモリ量を更に減少することができる。0071この場合には、正当化が指示しているデータ構造がコンシューマを表現しているのか(即ち推論がまだ行われていないのか)、或いは正当化が指示しているデータ構造が推論結果のノードを表現しているのか、を識別できることが必要であるが、その識別は例えば次のようにして比較的簡単にできる。0072それは、例えば知識を格納するメモリ領域を特定の領域として、アドレス値で他の領域と簡単に区別できるように領域を管理しておき、コンシューマかノードかの判別を要する場合には、データ構造の第4項のアドレス値が知識の領域を指示しているか否か識別するようにする。0073このデータ構造の第4項が知識項として、知識へのアドレスを格納していればコンシューマであり、帰結項として帰結となる他の正当化を指示するポインタを格納していればノードであるから、以上によってデータ構造がコンシューマかノードかを識別することができる。0074図11は第1の発明における制御部3の処理の流れ図であって、前記従来の図8に対応する処理であり、処理ステップ100〜103は従来の処理ステップ10〜13と同じである。従来と同様に行列の末尾まで処理したか識別するが、末尾まで処理を終わった場合には、本発明により後述のように再評価用スタックの処理をする。設定することによって、現処理中のコンシューマを行列から削除する。0077この「current.前提=NULL」は本発明によって必要となったコンシューマの処理状態の表示であって、第1の発明の場合には、行列を走査して評価するコンシューマが、既に再評価用スタックに登録されている場合があるので、起動可能として推論したコンシューマは識別できるようにして、再評価スタックから取り出した場合に捨てるようにしなければならないので、例えば推論処理したコンシューマは、既に不要な前提項の値をNULLにすることによって、その表示とする。0078又、第1及び第2の発明ともに、再評価スタックに登録されたコンシューマを、スタックから取り出して評価した結果が起動可能となっても、待ち行列から削除するためには、行列を先頭から走査して、削除するコンシューマの位置を識別することが必要になる。0079それを避けるために、再評価スタックから取り出して推論処理をしたものについて、前記と同じように「current.前提=NULL」にして、評価処理のための待ち行列走査のついでに、前記のように処理ステップ105、106の処理によって行列から削除する。ポインタprevにcurrentの値を設定して処理ステップ103に戻り、次のコンシューマの処理に移る。この部分は従来と同様である。設定して、そのコンシューマを待ち行列から削除する。このように従来は処理ステップ17、18の2ステップの処理を要したリンクの操作が本発明では1ステップで終わる。current.前提をNULLとして、前記のとおり起動済みの表示とした後、処理ステップ103へ戻る。識別して、再評価用スタックが空になるまで、スタックに登録されているコンシューマを順次以下のように処理する。current.前提がNULLか識別する。そのコンシューマが起動可能か評価する。もどり、起動可能であれば処理ステップ116、117により、前記処理ステップ110、111と同様に推論部の処理、及び起動済みの表示の設定をして、処理ステップ112に戻る。0087図12は第1の発明のラベル更新部8の処理の流れであって、前記従来の図9に対応する処理であり、処理ステップ120〜126の処理は、図9の処理ステップ20〜26と同様である。従来の処理ステップ25と同様にCの指示する要素がコンシューマか否か識別し、コンシューマである場合には再評価が必要なコンシューマとして再評価されるようにする。よって、コンシューマのアドレスであるCの内容を再評価用スタックに登録することで完了する。従来は処理ステップ27〜32の6ステップによる行列のリンク操作を行っていたのが、スタックへの登録の1ステップに短縮される。0090第1の発明の場合のコンシューマ管理部7の動作は、図10によって説明した従来の処理の流れと同様である、但し処理ステップ43及び処理ステップ54における新しいコンシューマを作って行列の末尾に追加する場合に、本発明では単方向リンクのみを処理すればよいようになる。0091次に第2の発明の場合の処理例を説明する。第2の発明で前記のように設けるフラグの使い方としては、例えば制御部3のコンシューマ評価処理の最初に、全コンシューマのフラグを例えば初期値「0」に設定し、評価済みを「1」で表すようにしてもよい。0092しかし、このようにして評価処理を進めると、行列から再評価用スタックまで一連の処理を完了したときには、すべてのコンシューマのフラグが「1」になっている。0093そこで、初期値を固定値「0」にしないで、「0」を初期値として一連の処理を完了すると、次の回の処理では「1」を初期値として、評価済みを「0」で表すというように、交互にフラグの値の解釈を交換することにすれば、処理の最初に初期設定を行う必要が無くなる。0094図13〜図15は、第2の発明を後者の方法によって処理する場合の、各部の処理の流れである。図13は制御部3の処理の流れであって、変数FLAGを設けて、例えばシステムの運転開始時にFLAGを1に初期設定しておくものとする。このようにして制御部3は処理ステップ100〜110を前記図11と同様に処理する。0095但し、処理ステップ101aでこの回の処理におけるFLAGの値を、現に保持されている前回の値の反転値に更新する処理が入る。この結果、FLAGの値は、現在の全コンシューマのフラグと同じ値になる筈である。コンシューマが起動可能か評価し、起動可能でない場合に次のコンシューマを処理するために処理ステップ108でポインタcurrentの値をポインタprevに設定する処理は前記と同様であるが、次に現に処理したコンシューマに評価済みの表示をするために、処理ステップ108aでcurrent.フラグを反転した後、処理ステップ103に戻る。そのコンシューマが起動可能か識別する。ように、スタックから取り出したコンシューマが、既に起動可能として処理済みではないかチェックする必要は無い。起動可能で無い場合には、処理ステップ115aでcurrent.フラグを反転して、評価済みにしておく。前記第1の発明の図12の処理と同様である。ノードの帰結項で指示する要素がコンシューマであると識別した場合に、第2の発明では処理ステップ125aで、そのコンシューマのフラグC.フラグがFLAGに保持する値と同一か識別し、FLAGと異なれば評価済みであるので、その場合のみ処理ステップ125bでC.フラグを反転して、未評価の表示に戻し、処理ステップ127で再評価用スタックに登録する。0103図15は第2の発明のコンシューマ管理部7の処理の流れであり、処理ステップ140〜157は前記図10により説明した従来の処理の処理ステップ40〜57と同様である。0104第2の発明により、新しく生成したコンシューマのフラグを設定する必要があるので、処理ステップ145a及び処理ステップ156aが挿入され、フラグをその時の変数FLAGの値に設定する。発明の効果0105以上の説明から明らかなように本発明によれば、仮説推論処理を行う装置において、コンシューマ機構のメモリ所要量と、コンシューマの待ち行列操作の処理時間を共に減少して、システムの処理効率を改善するという著しい工業的効果がある。処理ページトップへこの技術を出願した法人この情報を共有FacebookTwitterGoogle+LinkedInこの技術を発明した人物この情報を共有FacebookTwitterGoogle+LinkedInページトップへ関連する挑戦したい社会課題この情報を共有FacebookTwitterGoogle+LinkedIn高い食料自給率を実現する高い食料自給率を実現すると、国内での食料の安定供給や、他国の問題による食料不足などの問題を防止する可能性が高まります。日本の食料自給率は非常に低く、食料面で海外に大きく依存しているのが現状です...最終更新日:2018/06/18サイバー攻撃のない社会を実現する5G通信技術、IoTサービスの普及に伴い「サイバー攻撃のない社会」はこれまで以上に重要になります。イノベーションを導く多くの企業が膨大な労力と費用をかけて新たな市場や事業を生み出そうとしている中「イノベーション」にかかわるデータのニーズはかつてないほどの高まりを見せいます。ネイティブコードを適切に利用し、コンピュータプログラムの実行速度を向上させることを目的とする。