私は、異なるパターンの変数間にバインディングを持たないサンプルルールのReteネットワークを描画しようとしています。私はベータネットワークが、異なるパターンの曲げられた変数が一貫していることを確認するために使用されることを知っています。ベータネットワークを使用しないネットワークの再試行ですか?
(defrule R1
(type1 c1 c2)
(type2 c3)
=>
)
(defrule R2
(type2 c3)
(type3 c4 v1)
(type4 c5 v1)
=>
)
R1では、どのように私は、このReteネットワークで自分の結果を結合する必要があり、二つのパターンの間にバインドさ変数が存在しませんか? R2では、2つのルールが変数をバインドしていますが、3つ目のルールはバインドされていません。どのようにネットワーク内の3つのルールを組み合わせるには? このような状況でReteネットワークの例を検索しましたが、何も見つかりませんでした。私はネットワークを描こうとしました、そして、私のネットワークは以下の通りです。そうですか?
UPDATE:
答えてくれてありがとうゲイリーを。それは私のための画像を明確にします。すべてのベータ・ノードの後にベータ・メモリーがなければならないのですか?つまり、最後の結合ノードでもベータメモリが必要ですか?変更されたネットワークで私の質問を更新しました。これが今のものかどうか教えてください。多くのありがとう –
私はreteアルゴリズムの正式な実装があるとは言いません。存在する必要があるノードの共有や部分一致などのいくつかのことがありますが、rete use differenceテクニックを実装するさまざまなツールがあります。 Doorenbosの "大規模学習システムのためのプロダクションマッチング"、http://reports-archive.adm.cs.cmu.edu/anon/1995/CMU-CS-95-113.pdfには、reteのさまざまな実装の実際の概要があります。関連するパターンに変数が含まれているかどうかにかかわらず、ベータネットワークのすべてのノードにベータメモリが関連付けられます。 –