存在量化と全称量化
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/11/13 07:33 UTC 版)
「Reteアルゴリズム」の記事における「存在量化と全称量化」の解説
個々のタプルについての選択や結合の実行では、存在テスト(あるデータが存在するかどうかの判定)がよく使われる。新たな型のベータノードを実装することで、Reteネットワークで量化を実行することも可能である。存在量化は、この場合ワーキングメモリ内の WME 群に少なくとも1つマッチングする WME が存在するかどうかを判定する。全称量化は、ワーキングメモリ内の全 WME がある条件にマッチするかどうかを判定する。全称量化を拡張して、ある WME 群についてそれらが全て条件にマッチするかを判定するという量化も考えられる。他にもマッチすべき WME 数を指定したり、最低でもどれだけマッチすべきかを指定するということも考えられる。 量化は Reteアルゴリズムを使った推論エンジンに必ず備わっている機能ではないし、実装している場合も様々なバリエーションがある。存在量化のバリエーションとして「否定; negation」がある。存在否定と論理積を組み合わせたベータノードは、入力された WME(群)にある条件がマッチングしないことを判定する。このノードはマッチングしない WME をその後に伝播させる。否定の実装方法は様々である。例えば、右側入力のWMEと左側入力のWMEリストのマッチングした回数をカウントし、カウントがゼロの場合にWMEリストを次に送る。また、内部にベータメモリ形式のメモリ領域を持ち、マッチングしたWMEをそこに格納していき、その領域に何も存在しないときだけWMEリストを送る方式もある。この方式では否定ノードはベータメモリを介さずに直接後続のベータノードを活性化する。否定ノードは一種の「失敗による否定; negation as failure」を提供する。 ワーキングメモリが更新されると、それまでマッチングしなかった WME リストが新たな WME とマッチングする場合がある。この場合、ベータメモリなどにあるWMEリストの全コピーを回収する必要がある。この処理を否定ノードを使って効率的に行うことが多い。WMEリストが削除されると、対応するプロダクション・インスタンスが非活性化され、アジェンダから削除される。 存在量化は2つの否定ベータノードを組み合わせることで実現できる。つまり、二重否定である。この手法はいくつかのプロダクションシステムで採用されている。
※この「存在量化と全称量化」の解説は、「Reteアルゴリズム」の解説の一部です。
「存在量化と全称量化」を含む「Reteアルゴリズム」の記事については、「Reteアルゴリズム」の概要を参照ください。
- 存在量化と全称量化のページへのリンク