2017-08-26 9 views
0

私は、異なるパターンの変数間にバインディングを持たないサンプルルールの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:

enter image description here おかげ

答えて

2

ベータノードゲイリーの回答に基づいて新しいネットワークに関係なく、一貫性をチェックする必要があるパターンで指定された変数があるかどうかの部分的な一致を格納します。変数バインディングは、ベータメモリに格納されている部分一致をフィルタリングする役割しか果たしません。変数がない場合、生成されたすべての部分一致はベータメモリに格納されます。

あなたの図は、このようになります。

a1 a2 a3 a4 
    \/\//
    b1 b2 /
    |  \/
    r1  b3 
      | 
      r2 
+0

答えてくれてありがとうゲイリーを。それは私のための画像を明確にします。すべてのベータ・ノードの後に​​ベータ・メモリーがなければならないのですか?つまり、最後の結合ノードでもベータメモリが必要ですか?変更されたネットワークで私の質問を更新しました。これが今のものかどうか教えてください。多くのありがとう –

+0

私はreteアルゴリズムの正式な実装があるとは言いません。存在する必要があるノードの共有や部分一致などのいくつかのことがありますが、rete use differenceテクニックを実装するさまざまなツールがあります。 Doorenbosの "大規模学習システムのためのプロダクションマッチング"、http://reports-archive.adm.cs.cmu.edu/anon/1995/CMU-CS-95-113.pdfには、reteのさまざまな実装の実際の概要があります。関連するパターンに変数が含まれているかどうかにかかわらず、ベータネットワークのすべてのノードにベータメモリが関連付けられます。 –

関連する問題