質問

以前は、ルール評価器として機能するプログラムを開発する必要がありました。先行件といくつかの後件 (アクション) があるため、先行件が true と評価された場合、アクションが実行されます。

当時私は修正版を使用していました。 RETEアルゴリズム (RETE には 3 つのバージョンがあり、最初のバージョンのみが公開されています)。先行詞パター​​ン マッチング用です。ここで話しているのは、ルールごとに数百万の操作があり、一部の演算子が複数のルールで「繰り返される」大規模システムについてです。

他の言語でもう一度実装する必要がある可能性があります。私は RETE の経験がありますが、他のパターン マッチング アルゴリズムを知っている人はいますか?何か提案はありますか? RETE を使い続けたほうがよいでしょうか?

役に立ちましたか?

解決

TREAT アルゴリズムは RETE に似ていますが、部分一致は記録しません。その結果、特定の状況では RETE よりもメモリ使用量が少なくなる可能性があります。また、かなりの数の既知の事実を変更する場合、撤回に時間を費やす必要がないため、TREAT の方がはるかに高速になります。

それもあります レーテ* これは、使用するメモリの量に応じて結合ノードの状態を保存することで、RETE と TREAT のバランスをとります。したがって、アサーション時間をいくらか節約するだけでなく、システムの調整方法に応じてメモリと取り消し時間も節約できます。

こちらもチェックしてみてください 飛躍する, 、遅延評価スキームを使用し、RETE と TREAT の両方の要素を組み込みます。

私は RETE については個人的な経験しかありませんが、RETE* または LEAPS の方がより柔軟で優れた選択肢であるように思えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top