Reteアルゴリズム
右側が活性化したノードは、新たに格納された WME のいくつかの属性を対応するベータメモリにある WME リスト群と比較する。左側が活性化すると、新たに格納された WME リストを調べ、必要な属性値を集め、アルファメモリ上の WME 群の属性と比較する。
各ベータノードは WME リストを出力し、ベータメモリに格納するか、終端ノードに直接渡す。前者の場合、ベータメモリに格納されると同時にそれを入力とするベータノードの活性化が行われ、処理される。
論理的には、ベータネットワークの経路の先頭にあるベータノードはベータメモリからの入力を持たない特殊なノードである。推論エンジンの実装によっては、特殊なアダプターを使って本来ベータメモリが接続されるべき入力にもアルファメモリを接続する。また、単に2つのアルファメモリを入力にできる実装もある。いずれにしても先頭のベータノードは2つのアルファノードから入力を受け付ける。
ノードの冗長性を排除するため、1つのアルファメモリやベータメモリが複数のベータノードを活性化するようになっている。結合ノードだけでなく、ベータネットワークには様々な種類のノード種別がある(後述)。ベータネットワークがない Rete アルゴリズムでは、アルファノードが1つの WME だけを含むトークンを入力とし、終端ノードにつながっている。この場合、WME をアルファメモリに格納する必要はない。
衝突の解決を行った後、エンジンは最初に選択されたプロダクション・インスタンスに対応したアクションリストに従って実行する。アクションはプロダクション・インスタンスの WME リストで表されるデータに対して行われる。
通常、エンジンは全てのプロダクション・インスタンスを順次実行していく。各プロダクション・インスタンスは1回のパターンマッチングサイクルで1回だけ実行される。このような特徴を「屈折; refraction」と呼ぶ。しかし、プロダクション・インスタンスの実行シーケンスはワーキングメモリの何らかの更新によって割り込まれることがある。ルールアクションにはワーキングメモリに WME を追加/削除するものもある。実行中のプロダクション・インスタンスがそのような更新を行うと、エンジンは新たなパターンマッチングサイクルに移行する。他にもワーキングメモリ上の WME の内容を更新する場合もある。更新は WME を一旦削除して追加する形で実現される。エンジンはデータの変更に対応してマッチングの見直しを行い、結果としてアジェンダ上のプロダクション・インスタンスのリストにも変化が及ぶこともある。従って、あるプロダクション・インスタンスのアクションを実行することによって、前に活性化されていたインスタンスが不活性となってアジェンダから削除され、別のインスタンスが活性化されることもある。